Garbage Collection은 소유자가 없는 오브젝트를 찾아 삭제해주는 Kubernetes의 기능이다. 이 기능에 대해 간단히 정리해보았다.
예시로 작성한 yaml은 3개의 포드를 가지고 있는 Nginx ReplicaSet이다.
controllers/replicaset.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: my-repset
spec:
replicas: 3
selector:
matchLabels:
pod-is-for: garbage-collection-example
template:
metadata:
labels:
pod-is-for: garbage-collection-example
spec:
containers:
- name: nginx
image: nginx
kubectl apply -f controllers.yaml을 통해 ReplicaSet을 생성해준다.
포드 3개와 레플리카셋 1개가 생성된 것을 확인할 수 있다.
일부 Kubernetes Object는 다른 개체의 소유자이기도 하다. 예를 들어 ReplicaSet은 포드들의 소유자이다. 방금 생성한 포드의 소유자를 확인해보면 지정해준 레플리카셋인 것을 볼 수 있다. 소유자는 ownerReferences 항목에서 찾을 수 있다.
이렇게 종속적인 항목들은 garbage collection이 삭제할 때 상위 개체를 따라 죽을지 죽지 않을지 선택할 수 있다. 자동으로 삭제하는 것을 cascading deletion이라고 부른다. 자동으로 삭제하지 않으면 종속 항목이 분리되고 끝난다. cascading에는 두 가지 옵션이 있다.
- foreground cascading deletion : 종속 항목을 먼저 삭제, 상위 항목은 종속 항목이 삭제 된 뒤 삭제
- background cascading deletion : 상위 항목을 먼저 삭제, 종속 항목은 백단에서 알아서 삭제 됨.
레플리카셋을 삭제하되 포드들은 남아있게 해본다.
kubectl delete replicaset my-repset --cascade=false
포드들은 삭제되지 않고 계속 떠있는 것을 볼 수 있다. 기본적으로 true로 되어 있기 때문에 replicaset을 삭제하면 종속되어 있는 pod들이 삭제되었던 것이다.
'Cloud > Kubernetes' 카테고리의 다른 글
Minikube로 KubeVirt 시작하기 (1) (0) | 2019.11.19 |
---|---|
kubernetes pod name 뽑아내기 (0) | 2019.11.14 |
bare-metal server에서 이미지 목록 관리에 대한 궁금증 - kubelet Garbage Collection (0) | 2019.11.07 |
Kubernetes Pod 위치 조회 (0) | 2019.10.17 |
Rook-ceph는 뭐하는 놈일까? (0) | 2019.10.16 |