kubelet Garbage 수집
https://kubernetes.io/ko/docs/concepts/cluster-administration/kubelet-garbage-collection/
사용되지 않는 이미지들과 컨테이너들을 정리하는 kubelet의 유용한 기능.
1분마다 컨테이너, 5분마다 이미지들에 대하여 가비지 수집을 수행.
이미지 수집
디스크사용량이 high threshold(85%)를 초과하게되면 디스크사용량이 low threshold(80%)가 될때까지 최근에 가장 적게 사용한 이미지부터 삭제한다.
컨테이너 수집
컨테이너에 대한 가비지 수집 정책은 세 가지 사용자 정의 변수들을 고려한다.
MinAge 는 컨테이너를 가비지 수집 할 수 있는 최소 연령이다.
MaxPerPodContainer 파드당 최대 컨테이너 수,
MaxContainers 죽은 컨테이너의 최대 수량이다.
이러한 변수는 MinAge 를 0으로 설정하고, MaxPerPodContainer 와 MaxContainers 를 각각 0 보다 작게 설정해서 비활성화 할 수 있다.
kubelet은 위의 플래그들의 설정 경계를 벗어나거나, 확인되지 않은 컨테이너에 대해 조치를 취한다.
일반적으로 가장 오래된 컨테이너부터 제거한다.
OOM killer
Pods id Change
Pods
상황 | Pod Id 상태 | Container Id 상태 |
---|---|---|
삭제 후 재생성 | Id 바뀜 | Id 바뀜 |
업데이트 | Id 바뀜 | Id 바뀜 |
재부팅 | Id 유지 | Id 유지 |
서버재접속 | Id 유지 | Id 유지 |
Containers:
nginx:
Container ID: docker://aa545575cfafa2b7f0b86d69e727b13974255bb7e7c7b9c02c9b6e90ee7975de
Image: nginx:1.14.2
Image ID: docker-pullable://nginx@sha256:f7988fb6c02e0ce69257d9bd9cf37ae20a60f1df7563c3a2a6abe24160306b8d
Port: <none>
Host Port: <none>
State: Running
Started: Wed, 20 Jan 2021 11:23:23 +0900
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-k9krb (ro)
[root@platform-group-k8s-1 test1]# kubectl get pods -n hb-test nginx-5f6587f7f8-s2875 -o jsonpath='{.metadata.uid}'
cc7aec4f-54b7-45e1-b7a8-098f689a6934
업데이트 후
Containers:
nginx:
Container ID: docker://b3dade5caaa8ddbab347894a460eb74aa1207543425801d1857b023f9f60b4af
Image: nginx:1.16.1
Image ID: docker-pullable://nginx@sha256:d20aa6d1cae56fd17cd458f4807e0de462caf2336f0b70b5eeb69fcaaf30dd9c
Port: <none>
Host Port: <none>
State: Running
Started: Wed, 20 Jan 2021 11:56:46 +0900
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-k9krb (ro)
[root@platform-group-k8s-1 test1]# kubectl get pods -n hb-test nginx-757bd75865-xjlqn -o jsonpath='{.metadata.uid}'
2c6dede6-8fe9-4e0f-9d7f-6292df39fd3c