2.3. 임시 데이터 스토리지 관리

클러스터 관리자는 비종료 상태의 모든 Pod에서 임시 스토리지에 대한 제한 범위 및 요청 수를 정의하는 할당량을 설정하여 프로젝트 내에서 임시 스토리지를 관리할 수 있습니다. 개발자는 Pod 및 컨테이너 수준에서 이러한 컴퓨팅 리소스에 대한 요청 및 제한을 설정할 수도 있습니다.

요청 및 제한을 지정하여 로컬 임시 스토리지를 관리할 수 있습니다. Pod의 각 컨테이너는 다음을 지정할 수 있습니다.

  • spec.containers[].resources.limits.ephemeral-storage
  • spec.containers[].resources.requests.ephemeral-storage

임시 스토리지에 대한 제한 및 요청은 바이트 수량으로 측정됩니다. 스토리지를 일반 정수로 표현하거나 E, P, T, G, M, k 접미사 중 하나를 사용하여 고정 소수점 숫자로 표시할 수 있습니다. Ei, Pi, Ti, Gi, Mi, Ki와 동등한 두 가지 강력한 기능을 사용할 수도 있습니다. 예를 들어 다음 수량은 모두 거의 동일한 값인 1289748, 129e6, 129M 및ECDHEMi를 나타냅니다. 접미사의 경우는 중요합니다. 임시 스토리지 400m을 지정하는 경우 이 요청은 예상 대로 400MB(400Mi) 또는 400MB(400M) 대신 0.4 바이트를 요청합니다.

다음 예제에서는 두 개의 컨테이너가 있는 포드를 보여줍니다. 각 컨테이너는 2GiB의 로컬 임시 스토리지를 요청합니다. 각 컨테이너에는 4GiB의 로컬 임시 스토리지 제한이 있습니다. 따라서 Pod에는 4GiB의 로컬 임시 스토리지 요청 및 로컬 임시 스토리지의 8GiB 제한이 있습니다.

apiVersion: v1
kind: Pod
metadata:
  name: frontend
spec:
  containers:
  - name: app
    image: images.my-company.example/app:v4
    resources:
      requests:
        ephemeral-storage: "2Gi" 1
      limits:
        ephemeral-storage: "4Gi" 2
    volumeMounts:
    - name: ephemeral
      mountPath: "/tmp"
  - name: log-aggregator
    image: images.my-company.example/log-aggregator:v6
    resources:
      requests:
        ephemeral-storage: "2Gi" 3
    volumeMounts:
    - name: ephemeral
      mountPath: "/tmp"
  volumes:
    - name: ephemeral
      emptyDir: {}
1 3
로컬 임시 스토리지 요청.
2
로컬 임시 스토리지에 대한 제한입니다.

Pod 사양의 이 설정은 스케줄러가 Pod 예약과 Pod를 제거하는 방법에 대한 결정에 영향을 미칩니다. 우선 스케줄러는 예약된 컨테이너의 리소스 요청 합계가 노드의 용량보다 작은지 확인합니다. 이 경우 사용 가능한 임시 스토리지(할당 가능 리소스)가 4GiB를 초과하는 경우에만 Pod를 노드에 할당할 수 있습니다.

두 번째는 컨테이너 수준에서 첫 번째 컨테이너가 리소스 제한을 설정하기 때문에 kubelet 제거 관리자가 이 컨테이너의 디스크 사용량을 측정하고 이 컨테이너의 스토리지 사용량이 제한을 초과하면 Pod를 제거합니다(4GiB). Pod 수준에서 kubelet은 해당 Pod의 모든 컨테이너의 제한을 추가하여 전체 Pod 스토리지 제한을 처리합니다. 이 경우 Pod 수준의 총 스토리지 사용량은 모든 컨테이너의 디스크 사용량 합계와 Pod의 emptyDir 볼륨 합계입니다. 이러한 총 사용량이 전체 Pod 스토리지 제한 (4GiB)을 초과하면 kubelet도 제거를 위해 Pod를 표시합니다.