kubectl drain

1 개요[ | ]

kubectl drain
  • Drain my-node in preparation for maintenance

2 실습[ | ]

Console
Copy
master:~$ kubectl create ns sock-shop
namespace/sock-shop created
Console
Copy
master:~$ kubectl apply -f https://raw.githubusercontent.com/microservices-demo/microservices-demo/master/deploy/kubernetes/complete-demo.yaml
deployment.extensions/carts-db created
service/carts-db created
deployment.extensions/carts created
service/carts created
deployment.extensions/catalogue-db created
service/catalogue-db created
...
Console
Copy
master:~$ kubectl get pod -n sock-shop -owide
NAME                            READY   STATUS    RESTARTS   AGE   IP                NODE      NOMINATED NODE   READINESS GATES
carts-d646975bf-g99h4           1/1     Running   0          41s   192.168.235.130   worker1   <none>           <none>
carts-db-f5677f464-wgdhr        1/1     Running   0          41s   192.168.235.129   worker1   <none>           <none>
catalogue-7db746bc5b-jbclg      1/1     Running   0          41s   192.168.189.65    worker2   <none>           <none>
catalogue-db-55965799b9-lksdv   1/1     Running   0          41s   192.168.235.131   worker1   <none>           <none>
front-end-55b99f8c59-245mg      1/1     Running   0          41s   192.168.235.132   worker1   <none>           <none>
orders-986494c98-89f6t          1/1     Running   0          40s   192.168.235.136   worker1   <none>           <none>
orders-db-78568b65bb-jqrv6      1/1     Running   0          40s   192.168.189.66    worker2   <none>           <none>
payment-7d4d4bf9b4-vl582        1/1     Running   0          40s   192.168.235.133   worker1   <none>           <none>
queue-master-6b5b5c7658-ht4ts   1/1     Running   0          40s   192.168.235.135   worker1   <none>           <none>
rabbitmq-f984b75c4-7wmqq        1/1     Running   0          40s   192.168.235.134   worker1   <none>           <none>
shipping-7b8865d964-5p2zb       1/1     Running   0          40s   192.168.235.138   worker1   <none>           <none>
user-54555fbb7-hfcl2            1/1     Running   0          39s   192.168.189.67    worker2   <none>           <none>
user-db-7b9846c559-gxhhw        1/1     Running   0          40s   192.168.235.137   worker1   <none>           <none>
Console
Copy
master:~$ kubectl get no
NAME      STATUS   ROLES    AGE   VERSION
master    Ready    master   16m   v1.14.2
worker1   Ready    <none>   11m   v1.14.2
worker2   Ready    <none>   11m   v1.14.2
Console
Copy
master:~$ kubectl describe nodes | egrep -i ^'name|taint'
Name:               master
Taints:             node-role.kubernetes.io/master:NoSchedule
Name:               worker1
Taints:             <none>
Name:               worker2
Taints:             <none>
Console
Copy
master:~$ kubectl drain worker1
node/worker1 cordoned
error: unable to drain node "worker1", aborting command...

There are pending nodes to be drained:
 worker1
cannot delete DaemonSet-managed Pods (use --ignore-daemonsets to ignore): kube-system/calico-node-qmvsf, kube-system/kube-proxy-z4smj
cannot delete Pods with local storage (use --delete-local-data to override): sock-shop/carts-d646975bf-g99h4, sock-shop/carts-db-f5677f464-wgdhr, sock-shop/orders-986494c98-89f6t, sock-shop/shipping-7b8865d964-5p2zb, sock-shop/user-db-7b9846c559-gxhhw
Console
Copy
master:~$ kubectl get no
NAME      STATUS                     ROLES    AGE     VERSION
master    Ready                      master   22h     v1.14.2
worker1   Ready,SchedulingDisabled   <none>   22h     v1.14.2
worker2   Ready                      <none>   4h44m   v1.14.2
Console
Copy
master:~$ kubectl describe nodes | egrep -i ^'name|taint'
Name:               master
Taints:             node-role.kubernetes.io/master:NoSchedule
Name:               worker1
Taints:             node.kubernetes.io/unschedulable:NoSchedule
Name:               worker2
Taints:             <none>
Console
Copy
master:~$ kubectl drain worker1 --ignore-daemonsets
node/worker1 already cordoned
error: unable to drain node "worker1", aborting command...

There are pending nodes to be drained:
 worker1
error: cannot delete Pods with local storage (use --delete-local-data to override): sock-shop/carts-d646975bf-mxptv, sock-shop/carts-db-f5677f464-qbt9w, sock-shop/orders-986494c98-7sqwt, sock-shop/orders-db-78568b65bb-czvlm, sock-shop/shipping-7b8865d964-hnsvc, sock-shop/user-db-7b9846c559-z9qwc
Console
Copy
master:~$ kubectl drain worker1 --ignore-daemonsets --delete-local-data
node/worker1 already cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-system/calico-node-qmvsf, kube-system/kube-proxy-z4smj
evicting pod "user-db-7b9846c559-gxhhw"
evicting pod "front-end-55b99f8c59-245mg"
evicting pod "orders-986494c98-89f6t"
evicting pod "payment-7d4d4bf9b4-vl582"
evicting pod "queue-master-6b5b5c7658-ht4ts"
evicting pod "rabbitmq-f984b75c4-7wmqq"
evicting pod "shipping-7b8865d964-5p2zb"
evicting pod "carts-d646975bf-g99h4"
evicting pod "carts-db-f5677f464-wgdhr"
evicting pod "catalogue-db-55965799b9-lksdv"
pod/rabbitmq-f984b75c4-7wmqq evicted
pod/user-db-7b9846c559-gxhhw evicted
pod/carts-db-f5677f464-wgdhr evicted
pod/catalogue-db-55965799b9-lksdv evicted
pod/payment-7d4d4bf9b4-vl582 evicted
pod/front-end-55b99f8c59-245mg evicted
pod/carts-d646975bf-g99h4 evicted
pod/orders-986494c98-89f6t evicted
pod/queue-master-6b5b5c7658-ht4ts evicted
pod/shipping-7b8865d964-5p2zb evicted
node/worker1 evicted
Console
Copy
master:~$ kubectl get pod -n sock-shop -owide
NAME                            READY   STATUS    RESTARTS   AGE    IP               NODE      NOMINATED NODE   READINESS GATES
carts-d646975bf-cqw2p           1/1     Running   0          94s    192.168.189.77   worker2   <none>           <none>
carts-db-f5677f464-5df85        1/1     Running   0          94s    192.168.189.68   worker2   <none>           <none>
catalogue-7db746bc5b-jbclg      1/1     Running   0          5m5s   192.168.189.65   worker2   <none>           <none>
catalogue-db-55965799b9-bdndk   1/1     Running   0          94s    192.168.189.72   worker2   <none>           <none>
front-end-55b99f8c59-8csvg      1/1     Running   0          94s    192.168.189.74   worker2   <none>           <none>
orders-986494c98-29jcg          1/1     Running   0          94s    192.168.189.70   worker2   <none>           <none>
orders-db-78568b65bb-jqrv6      1/1     Running   0          5m4s   192.168.189.66   worker2   <none>           <none>
payment-7d4d4bf9b4-dbnbp        1/1     Running   0          94s    192.168.189.71   worker2   <none>           <none>
queue-master-6b5b5c7658-t5mjs   1/1     Running   0          94s    192.168.189.76   worker2   <none>           <none>
rabbitmq-f984b75c4-nr8c6        1/1     Running   0          94s    192.168.189.75   worker2   <none>           <none>
shipping-7b8865d964-nk458       1/1     Running   0          94s    192.168.189.69   worker2   <none>           <none>
user-54555fbb7-hfcl2            1/1     Running   0          5m3s   192.168.189.67   worker2   <none>           <none>
user-db-7b9846c559-j8fkz        1/1     Running   0          94s    192.168.189.73   worker2   <none>           <none>
Console
Copy
master:~$ kubectl delete -f https://raw.githubusercontent.com/microservices-demo/microservices-demo/master/deploy/kubernetes/complete-demo.yaml
deployment.extensions "carts-db" deleted
service "carts-db" deleted
deployment.extensions "carts" deleted
service "carts" deleted
...
Console
Copy
master:~$ kubectl delete ns sock-shop
namespace "sock-shop" deleted

3 같이 보기[ | ]