kubectl get deploy,pod
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx-deployment 3/3 33 4m44s
NAME READY STATUS RESTARTS AGE
pod/nginx-deployment-6b474476c4-nbtkw 1/1 Running 0 4m44s
pod/nginx-deployment-6b474476c4-nkbrb 1/1 Running 0 4m44s
pod/nginx-deployment-6b474476c4-zh5g7 1/1 Running 0 4m44s
取得ReplicaSet與pod的ownerReferences 用來確定物件之間的關係
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
kubectl get rs nginx-deployment-6b474476c4 -o go-template --template={{.metadata.ownerReferences}}[map[apiVersion:apps/v1
blockOwnerDeletion:true
controller:true
kind:Deployment
name:nginx-deployment
uid:597d36f5-968a-4025-8621-b24f17f7f3a6]]kubectl get pod nginx-deployment-6b474476c4-nbtkw -o go-template --template={{.metadata.ownerReferences}}[map[apiVersion:apps/v1
blockOwnerDeletion:true
controller:true
kind:ReplicaSet
name:nginx-deployment-6b474476c4
uid:97fb6974-6882-4459-b6b0-b39357a7650b]]
從這個狀態可以看到所有的 pod 都在 Terminating 的狀態, ReplicaSet 以及 deployment 都沒有先移除。
1
2
3
4
5
6
7
8
9
10
11
kubectl get pod,deploy,rs
NAME READY STATUS RESTARTS AGE
pod/nginx-deployment-6b474476c4-nbtkw 0/1 Terminating 0 133m
pod/nginx-deployment-6b474476c4-nkbrb 0/1 Terminating 0 133m
pod/nginx-deployment-6b474476c4-zh5g7 0/1 Terminating 0 133m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx-deployment 0/3 00 133m
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-deployment-6b474476c4 300 133m
kubectl get deploy,rs,pod
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx-deployment 3/3 33 55s
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-deployment-6b474476c4 333 55s
NAME READY STATUS RESTARTS AGE
pod/nginx-deployment-6b474476c4-4hjx8 1/1 Running 0 55s
pod/nginx-deployment-6b474476c4-6qvvg 1/1 Running 0 55s
pod/nginx-deployment-6b474476c4-plsn7 1/1 Running 0 55s
取得ReplicaSet與pod的ownerReferences用來確定物件之間的關係
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
kubectl get replicaset.apps/nginx-deployment-6b474476c4 -o go-template --template={{.metadata.ownerReferences}}[map[apiVersion:apps/v1
blockOwnerDeletion:true
controller:true
kind:Deployment
name:nginx-deployment
uid:8a2be904-c306-426c-881e-c6914415c5fe]]kubectl get pod nginx-deployment-6b474476c4-6qvvg -o go-template --template={{.metadata.ownerReferences}}[map[apiVersion:apps/v1
blockOwnerDeletion:true
controller:true
kind:ReplicaSet
name:nginx-deployment-6b474476c4
uid:565540ad-fbf1-4d74-8841-f0475e12a200]]
kubectl get deploy,pod
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx-deployment 3/3 33 4m44s
NAME READY STATUS RESTARTS AGE
pod/nginx-deployment-6b474476c4-nbtkw 1/1 Running 0 4m44s
pod/nginx-deployment-6b474476c4-nkbrb 1/1 Running 0 4m44s
pod/nginx-deployment-6b474476c4-zh5g7 1/1 Running 0 4m44s
取得replicaset與pod的ownerReferences確定物件之間的關係
1
2
3
4
5
6
7
kubectl get rs nginx-deployment-6b474476c4 -o go-template --template={{.metadata.ownerReferences}}[map[apiVersion:apps/v1 blockOwnerDeletion:true controller:true kind:Deployment name:nginx-deployment uid:b1d1a61d-8b51-4511-8c91-de44aaa2cdd0]]kubectl get pod nginx-deployment-6b474476c4-nbtkw -o go-template --template={{.metadata.ownerReferences}}[map[apiVersion:apps/v1 blockOwnerDeletion:true controller:true kind:ReplicaSet name:nginx-deployment-6b474476c4 uid:b052f80f-d72a-4e32-a4c4-f598274f2b07]]
從這個狀態可以看到所有的 pod 都在 Running 的狀態,ReplicaSet 以及 Pod 都沒有被移除,只有 Deployment 被殺掉而已。
1
2
3
4
5
6
7
8
9
kubectl get pod,deploy,rs
NAME READY STATUS RESTARTS AGE
pod/nginx-deployment-6b474476c4-d6wns 1/1 Running 0 12m
pod/nginx-deployment-6b474476c4-d7dtf 1/1 Running 0 12m
pod/nginx-deployment-6b474476c4-m7rbz 1/1 Running 0 12m
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-deployment-6b474476c4 333 12m
小結
從上面三個實驗可以看到不同的移除方式會有不同的結果
Front Ground
需要等到關聯的子物件被刪除後才會進行清理的動作(打上deletionTimestamp)