kubernetes 学習 taints tolerations その2
pod でなく deployment で taints/tolerations を試す。
確認
$ kubectl describe node kb1 Taints: node-role.kubernetes.io/master:NoSchedule $ kubectl describe node kb2 Taints: <none> $ kubectl describe node kb3 Taints: <none>
テキトーな deployment.yaml
nginx-deployment.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: labels: app: nginx spec: ## <--- PodSpec containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80 tolerations: - key: apptype value: appproxy effect: NoExecute
nginx-deployment.yaml を適用
$ kubectl apply -f nginx-deployment.yaml deployment.apps/nginx-deployment created
pod確認 kb2,kb3 で実行されている。
$ kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-deployment-78d48847c6-5ldbv 1/1 Running 0 11m 10.244.2.33 kb3 <none> <none> nginx-deployment-78d48847c6-wh7x9 1/1 Running 0 11m 10.244.1.41 kb2 <none> <none> $ kubectl describe pod | grep -3 Tole Tolerations: apptype=appproxy:NoExecute node.kubernetes.io/not-ready:NoExecute for 300s node.kubernetes.io/unreachable:NoExecute for 300s Tolerations: apptype=appproxy:NoExecute node.kubernetes.io/not-ready:NoExecute for 300s node.kubernetes.io/unreachable:NoExecute for 300s
kb2 から追い出して kb3で実行する
kb2 を汚す。
$ kubectl taint node kb2 apptype=asdf:NoExecute node/kb2 tainted $ kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-deployment-78d48847c6-5ldbv 1/1 Running 0 12m 10.244.2.33 kb3 <none> <none> nginx-deployment-78d48847c6-j5gw5 1/1 Running 0 16s 10.244.2.34 kb3 <none> <none>
kb3 から追い出して kb2 で実行する
kb2 の汚れを取る。
$ kubectl taint node kb2 apptype- node/kb2 untainted
追い出し前の確認
$ kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-deployment-78d48847c6-5ldbv 1/1 Running 0 13m 10.244.2.33 kb3 <none> <none> nginx-deployment-78d48847c6-j5gw5 1/1 Running 0 91s 10.244.2.34 kb3 <none> <none>
kb3を汚す。kb2からkb3に引っ越している。
$ kubectl taint node kb3 apptype=asdf:NoExecute node/kb3 tainted $ kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-deployment-78d48847c6-5ldbv 1/1 Terminating 0 14m 10.244.2.33 kb3 <none> <none> nginx-deployment-78d48847c6-cxdpj 0/1 ContainerCreating 0 2s <none> kb2 <none> <none> nginx-deployment-78d48847c6-j5gw5 1/1 Terminating 0 2m24s 10.244.2.34 kb3 <none> <none> nginx-deployment-78d48847c6-v8nkt 1/1 Running 0 2s 10.244.1.43 kb2 <none> <none> $ kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-deployment-78d48847c6-5ldbv 0/1 Terminating 0 14m <none> kb3 <none> <none> nginx-deployment-78d48847c6-cxdpj 1/1 Running 0 5s 10.244.1.42 kb2 <none> <none> nginx-deployment-78d48847c6-j5gw5 0/1 Terminating 0 2m27s 10.244.2.34 kb3 <none> <none> nginx-deployment-78d48847c6-v8nkt 1/1 Running 0 5s 10.244.1.43 kb2 <none> <none> $ kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-deployment-78d48847c6-cxdpj 1/1 Running 0 15s 10.244.1.42 kb2 <none> <none> nginx-deployment-78d48847c6-v8nkt 1/1 Running 0 15s 10.244.1.43 kb2 <none> <none>
おわり
pod は 追い出すと delete されて終了だが、deployment の pod 死んでも生き延びようとする?書籍にあたったほうがよさそう。