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: {}
Pod 사양의 이 설정은 스케줄러에서 Pod 예약 방법에 영향을 미치며 kubelet evict Pod를 제거하는 방법에도 영향을 미칩니다. 우선 스케줄러는 예약된 컨테이너의 리소스 요청 합계가 노드의 용량보다 작은지 확인합니다. 이 경우 사용 가능한 임시 스토리지(할당 가능한 리소스)가 4GiB를 초과하는 경우에만 Pod를 노드에 할당할 수 있습니다.
두 번째는 컨테이너 수준에서 첫 번째 컨테이너가 리소스 제한을 설정하므로 kubelet 제거 관리자가 이 컨테이너의 디스크 사용량을 측정하고 이 컨테이너의 스토리지 사용량이 제한(4GiB)을 초과하면 Pod를 제거합니다. Pod 수준에서 kubelet은 해당 Pod의 모든 컨테이너 제한을 추가하여 전체 Pod 스토리지 제한을 수행합니다. 이 경우 Pod 수준의 총 스토리지 사용량은 모든 컨테이너의 디스크 사용량 합계와 Pod의 emptyDir
볼륨 합계입니다. 이 총 사용량이 전체 Pod 스토리지 제한(4GiB)을 초과하는 경우 kubelet은 제거할 Pod도 표시합니다.
프로젝트의 할당량을 정의하는 방법에 대한 자세한 내용은 프로젝트당 할당량 설정을 참조하십시오.