-
Local ephemeral storageTECH/Kubernetes 2023. 10. 30. 15:01
Local ephemeral storage
노드는 뒨단을 locally attached writeable device 혹은 램인 ephemeral storage를 가질 수 있다. "Ephemeral"이라는 것은 지속성에 대한 보장이 없다는 것을 의미한다.
파드는 ephemeral local storage를 임시적인 공간, 캐싱 혹은 로그를 위해 사용한다. kubelet은 파드에 local epmeral storage를 emptyDir 볼륨을 컨테이너에 마운트 함으로서 제공할 수 있다.
kubelet은 또한 이러한 종류의 스토리지를 node level container logs, 컨테이너 이미지, 실행되는 컨테이너의 쓰기 가능한 영역으로 사용할 수 있다.
Setting requests and limits for local ephemeral storage
로컬 ephemeral storal을 관리하기 위해 ephemeral-storage를 설정할 수 있다. 파드의 각 컨테이너는 다음과 같은 설정을 가질 수 있다.
- spec.containers[].resources.limits.ephemeral-storage
- spec.containers[].resources.requests.ephemeral-storage
How Pods with ephemeral-storage requests are scheduled
파드를 생성하면 k8s 스케줄러는 파드가 실행될 노드를 고른다. 각 노드는 파드에 제공할 수 있는 최대 local ephemeral storage 양이 있다.
스케줄러는, sheduled container의 resource request의 합이 노드의 용량 보다 적음을 보장한다.
Ephemeral storage consumption management
kubelet이 local ephemeral storage를 리소스로서 관리할 때 kubelet은 다음에서 스토리지 사용을 측정한다.
- tmpfs emptyDir 볼륨을 제외한 emptyDir 볼륨
- 노드-레벨 로그가 있는 디렉토리
- 쓰기 가능한 컨테이너 계층
파드가 허용 가능한 것보다 많은 ephemeral storage를 사용할 경우, kubelet은 파드 eviction을 트리거하는 eviction signal을 설정한다.
컨테이너 레벨 격리에서 컨테이너의 쓰기 가능한 계층과 로그 사용이 storage limit을 초과하면 kubelet은 pod를 eviction으로 마크한다.
파드 레벨 격리에서 kubelet은 해당 파드의 컨테이너 제한을 합침으로서 전반적인 파드 스토리지 제한을 동작한다. 이러한 경우 모든 컨테이너로부터의 로컬 ephemeral storage 사용량의 합과 파드의 emptyDir volume이 파드의 storage limit을 초과하면, kubelet은 파드를 eviction 대상으로 설정한다.
'TECH > Kubernetes' 카테고리의 다른 글
Kubernetes의 Deployment 객체와 RollingUpdate 전략 (0) 2023.11.09 Kubernetes - Pods (0) 2023.11.09 Kubernetes QoS란? (kube-prometheus-stack 설치로 살펴보는) (0) 2023.01.19 Namespaces 네임스페이스란? (0) 2022.11.04 Kubernetes Components - Control Plane (0) 2022.10.13