kubectl 沒有 restart pod 這個(gè)命令,主要是由于在 k8s 中pod 的管理屬于rs 等控制器,并不需要手動(dòng)維護(hù),但有時(shí)更新了yaml文件后,期望破都能夠"重啟"重新加載yaml文件,比如修改了configmap 的配置文件后,希望重啟pod 加載配置,此時(shí)就需要 “重啟” Pod。而"重啟"準(zhǔn)確地來說是重建pod,但給用戶的感覺是重啟。
方法一:kubectl rollout restart
kubectl rollout restart deployment <deployment_name> -n <namespace>
上述命令會(huì)重建這個(gè)deployment下的 pod,和滾動(dòng)升級(jí)類似,不會(huì)一次性殺死Pod,比較平滑。
方法二:kubectl scale
此方法存在風(fēng)險(xiǎn),不建議使用。其流程是先將副本調(diào)成 0,然后再改回目的副本數(shù),會(huì)中斷服務(wù)。
kubectl scale deployment <deployment name> -n <namespace> --replicas=0
kubectl scale deployment <deployment name> -n <namespace> --replicas=10
方法三:kubectl delete pod
刪除pod重建,單不建議并行刪除全部pod,建議一個(gè)一個(gè)串行刪除,至少保留一個(gè)pod可用,常用于刪除一個(gè)pod(多pod情況下)。
kubectl delete pod <pod_name> -n <namespace>
方法四:kubectl replace
通過更新Pod ,從觸發(fā)k8s pod 的更新。
kubectl get pod <pod_name> -n <namespace> -o yaml | kubectl replace --force -f -
?方法五:kubectl set env
通過 設(shè)置環(huán)境變量,其實(shí)也是更新pod spec 從而觸發(fā)滾動(dòng)升級(jí)。
kubectl set env deployment <deployment name> -n <namespace> DEPLOY_DATE="$(date)"
通過API 更新pod spec 后也會(huì)觸發(fā)滾動(dòng)升級(jí)?。文章來源:http://www.zghlxwxcb.cn/news/detail-532899.html
方法六:kill 1
在容器里面 kill 1 號(hào)進(jìn)程,但是有個(gè)局限,必須要求1 號(hào)進(jìn)程要 捕獲 TERM 信號(hào),否則在容器里面是殺不死1號(hào)進(jìn)程的。文章來源地址http://www.zghlxwxcb.cn/news/detail-532899.html
kubectl exec -it <pod_name> -c <container_name> --/bin/sh -c "kill 1"
到了這里,關(guān)于Kubernetes系列-通過kubectl實(shí)現(xiàn)重啟pod的方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!