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

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

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

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

임시 스토리지에 대한 제한 및 요청은 바이트 수량으로 측정됩니다. 스토리지를 일반 정수로 표현하거나 E, P, T, G, M, k 접미사 중 하나를 사용하여 고정 소수점 숫자로 표시할 수 있습니다. Power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki를 사용할 수도 있습니다. 예를 들어 다음 양은 모두 약 128974848, 129e6, 129M 및ECDHEMi와 같은 값을 나타냅니다. 접미사의 경우는 중요합니다. 400m의 임시 스토리지를 지정하면 400Mi(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 예약 방법에 영향을 미치며 kubelet evict Pod를 제거하는 방법에도 영향을 미칩니다. 우선 스케줄러는 예약된 컨테이너의 리소스 요청 합계가 노드의 용량보다 작은지 확인합니다. 이 경우 사용 가능한 임시 스토리지(할당 가능한 리소스)가 4GiB를 초과하는 경우에만 Pod를 노드에 할당할 수 있습니다.

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

프로젝트 할당량 정의에 대한 자세한 내용은 프로젝트당 할당량 설정을 참조하십시오.