食品公司名字大全上海網(wǎng)站seo
1.維護(hù)node節(jié)點
設(shè)置節(jié)點狀態(tài)為不可調(diào)度狀態(tài),執(zhí)行以下命令后,節(jié)點狀態(tài)會多出一個SchedulingDisabled的狀態(tài),即新建的pod不會往該節(jié)點上調(diào)度,本身存在node中的pod保持正常運行
kubectl cordon k8s-node01
kubectl get node
2.驅(qū)逐pod
在node節(jié)點設(shè)置為不可調(diào)度狀態(tài)后,就可以開始驅(qū)逐本節(jié)點上的pod了
kubectl drain k8s-node01 --ignore-daemonsets --delete-local-data
--delete-local-data
:在驅(qū)逐節(jié)點之前,刪除該節(jié)點上的 Pod 的本地數(shù)據(jù)。本地數(shù)據(jù)包括 Pod 的日志、鏡像和其他本地數(shù)據(jù)。如果不添加此選項,則本地數(shù)據(jù)將保留在節(jié)點上,并且需要手動清理
--ignore-daemonsets
:忽略 DaemonSet 類型的 Pod。DaemonSet 是一種在 Kubernetes 集群的每個節(jié)點上運行一個 Pod 的控制器。如果不添加此選項,則?kubectl drain
?命令會嘗試驅(qū)逐所有類型的 Pod,包括 DaemonSet 類型的 Pod。在某些情況下,DaemonSet 類型的 Pod 是必需的,因此應(yīng)該使用此選項來忽略它們
驅(qū)逐pod的工作流程:
1.首先,Kubernetes 會將 Pod 標(biāo)記為“刪除中”,并阻止新的請求發(fā)送到該 Pod
2.然后,Kubernetes 會向 Pod 發(fā)送 SIGTERM 信號,觸發(fā)優(yōu)雅關(guān)閉。在容器中運行的進(jìn)程可以捕獲此信號并執(zhí)行清理操作
3.如果在默認(rèn)的 30 秒的優(yōu)雅期內(nèi) Pod 沒有關(guān)閉,則 Kubernetes 會發(fā)送 SIGKILL 信號來強制終止 Pod
如果實在驅(qū)逐不掉可以加上--force 參數(shù)
--force
:強制驅(qū)逐節(jié)點上的所有 Pod。如果不添加此選項,則?kubectl drain
?命令會等待所有 Pod 關(guān)閉或重新調(diào)度到其他節(jié)點上。如果某些 Pod 無法正常關(guān)閉或重新調(diào)度,則?kubectl drain
?命令會一直等待,直到超時。使用?--force
?選項可以強制終止所有 Pod 并立即驅(qū)逐節(jié)點。需要注意的是,這可能會導(dǎo)致數(shù)據(jù)丟失或其他不良影響,因此應(yīng)該謹(jǐn)慎使用
在node節(jié)點驅(qū)逐完所有pod后,可以對該node節(jié)點升級硬件資源等操作
3.刪除pod
若是在新加入工作節(jié)點,只想調(diào)度一部分pod到新節(jié)點上的情況下,需要使用刪除pod的方法去實現(xiàn)
需要對所有舊的node節(jié)點都設(shè)置不可調(diào)度狀態(tài),在執(zhí)行刪除pod操作
kubectl cordon k8s-node02
kuebctl delete pod pod名稱 -n 名稱空間
此時被刪除的pod就會調(diào)度到新的node節(jié)點上
刪除pod的工作流程:
1.首先,Kubernetes 會將 Pod 標(biāo)記為“刪除中”,并阻止新的請求發(fā)送到該 Pod
2.然后,Kubernetes 會向 Pod 發(fā)送 SIGTERM 信號,觸發(fā)優(yōu)雅關(guān)閉。在容器中運行的進(jìn)程可以捕獲此信號并執(zhí)行清理操作
3.如果在默認(rèn)的 30 秒的優(yōu)雅期內(nèi) Pod 沒有關(guān)閉,則 Kubernetes 會發(fā)送 SIGKILL 信號來強制終止 Pod
也可以在delete命令中使用如下參數(shù)修改默認(rèn)的優(yōu)雅關(guān)閉時間--grace-period=30
調(diào)度完成后,恢復(fù)舊的node節(jié)點為可調(diào)度狀態(tài)
kubectl uncordon k8s-node02