自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

六種方法教你如何通過Kubectl 重啟Pod

云計算 云原生
大家可能都知道 kubectl 其實沒有 restart pod 這個命令,這個主要是由于在 k8s 中pod 的管理屬于rs 等控制器,并不需要運維手動維護,但有時候,我們修改了configmap 的配置文件后,希望重啟pod 加載配置,此時就需要 “重啟” Pod。

點擊參加51CTO網站內容調查問卷

大家可能都知道 kubectl 其實沒有 restart pod 這個命令,這個主要是由于在 k8s 中pod 的管理屬于rs 等控制器,并不需要運維手動維護,但有時候,我們修改了configmap 的配置文件后,希望重啟pod 加載配置,此時就需要 “重啟” Pod。這里說的“重啟”是加了引號的,準確地來說,是重建pod,給用戶的感覺是重啟。

下面介紹六種k8s 里面重啟pod的方式

方法一:kubectl rollout restart

這個命令是比較推薦的,通過

kubectl rollout restart deployment <deployment_name> -n <namespace>

便可以重建這個deployment下的 pod,和滾動升級類似,并不會一次性殺死Pod,比較平滑。

方法二:kubectl scale

這種方法相對來說,比較粗放,我們可以先將副本調成 0

kubectl scale deployment <deployment name> -n <namespace> --replicas=0

然后再改回目的副本數(shù)

kubectl scale deployment <deployment name> -n <namespace> --replicas=10

但這個會中斷服務。但兩條命令也能解決,下面介紹的就更直接了。

方法三: kubectl delete pod

這個我就不解釋了

kubectl delete pod <pod_name> -n <namespace>

還是多說一句,此時優(yōu)雅刪除的效果還是有的。再多說一句,直接刪 rs 效果也挺好。

方法四:kubectl replace

這種方法是通過更新Pod ,從觸發(fā)k8s pod 的更新

kubectl get pod <pod_name> -n <namespace> -o yaml | kubectl replace --force -f -

方法五:kubectl set env

通過 設置環(huán)境變量,其實也是更新pod spec 從而觸發(fā)滾動升級。

kubectl set env deployment <deployment name> -n <namespace> DEPLOY_DATE="$(date)"

只不過這里通過kubectl 命令行,當我們通過API 更新pod spec 后一樣會觸發(fā)滾動升級

方法六: kill 1

這種方法就是在容器里面 kill 1 號進程。

kubectl exec -it <pod_name> -c <container_name> --/bin/sh -c "kill 1"

但是但是但是,重要的話說三遍,它有個局限,必須要求你的 1 號進程要 捕獲 TERM 信號,否則在容器里面是殺不死自己的,這個在之前的文章已經介紹過了。

責任編輯:武曉燕 來源: 今日頭條
點贊
收藏

51CTO技術棧公眾號