k8s Pod驅逐遷移

在使用k8s集羣過程當中,可能會遇到節點異常或須要節點升級的狀況,但又不能影響節點中服務的正常運行,就要涉及到對pod信息遷移和node節點維護。node

維護主要分爲兩部分:pod驅逐、節點維護api

node節點維護

查看k8s集羣node節點狀況app

[root@prod-k8s-master001 ~]# kubectl get nodeide

NAME             STATUS                     ROLES    AGE    VERSIONui

172.16.171.163   Ready                      <none>   197d   v1.15.0spa

172.16.21.23     Ready,SchedulingDisabled   master   320d   v1.15.0.net

172.16.21.24     Ready,SchedulingDisabled   master   320d   v1.15.0orm

172.16.21.25     Ready,SchedulingDisabled   master   320d   v1.15.0server

172.16.21.26     Ready                      <none>   321d   v1.15.0blog

172.16.21.27     Ready                      <none>   321d   v1.15.0

172.16.21.28     Ready                      <none>   320d   v1.15.0

172.16.33.101    Ready                      <none>   314d   v1.15.0

172.16.33.128    Ready                      <none>   314d   v1.15.0

172.16.33.129    Ready                      <none>   314d   v1.15.0

設置節點不可調度,即不會有新的pod在該節點上建立      

 kubectl cordon 172.16.21.26

設置完成後,該節點STATUS 將會多一個SchedulingDisabled的tag,表示配置成功。
而後開始對節點上的pod進行驅逐,遷移該pod到其餘節點。

pod驅逐遷移

使用以下命令對配置不可調度的節點進行pod驅逐

kubectl drain 172.16.21.26 --delete-local-data --ignore-daemonsets --force 

參數說明

  • –delete-local-data: 即便pod使用了emptyDir也刪除

  • –ignore-daemonsets: 忽略deamonset控制器的pod,若是不忽略,deamonset控制器控制的pod被刪除後可能立刻又在此節點上啓動起來,會成爲死循環;

  • –force: 不加force參數只會刪除該NODE上由ReplicationController, ReplicaSet, DaemonSet,StatefulSet or Job建立的Pod,加了後還會刪除’裸奔的pod’(沒有綁定到任何replication controller)

觀察pod重建狀況後,對節點進行維護操做。
維護結束後對節點從新配置能夠調度。

kubectl uncordon 172.16.21.26

維護結束

pod回遷

pod回遷貌似還沒什麼好的辦法,這裏採用業務低峯期對pod進行delete而後重建的方式回遷。

注意事項

一、對pod進行驅逐後產生不少evicted狀態的pod,通常只須要刪除便可。

kubectl -n kube-system  get pods | grep Evicted |awk '{print$1}'|xargs kubectl -n kube-system delete pods

二、須要對系統預留必定資源,避免pod使用資源過多致使系統程序異常

本文出自連接https://blog.csdn.net/u012881331/article/details/107526653


kubernetes如何驅逐pod以及刪除node節點

前言

最近咱們線上原有的kubernetes集羣上的seetaas服務須要遷移,爲何遷移呢?由於原有k8s集羣的apiserver沒有作高可用,而且ceph集羣須要整改。爲了保險起見計劃是在新機器上先搭建kubernetes高可用集羣,而後部署原有服務,最後經過修改slb指向該服務ip,實現服務遷移。因爲咱們的業務有用到gpu節點,爲了下降支出與時間預算。打算新集羣仍然引用舊集羣的gpu node,須要咱們把舊集羣的其中一個gpu上的pod驅逐到別的gpu節點,而後從舊集羣刪除該node.最後清理該gpu node節點的相關信息,將其歸入新的k8s集羣進行管理。

流程總結

1.經過 kubectl drain 172.24.14.66 –delete-local-data –force 將該node節點pod驅除並標記未不可調度狀態。

2.經過kubectl delete node 172.24.14.66 從集羣中移除該node節點。

3.清除該節點與舊集羣的認證信息,因爲舊集羣用的1.9的kubernetes-nvidia 。新集羣是1.10須要從新進行配置。

4.經過add_node.sh腳本將新集羣和node關聯的配置發送到gpu node節點。

本文出自連接https://wangtingwei.info/?p=1538

相關文章
相關標籤/搜索