常見重啟 Pod 的五種方法
1. 直接刪除 Pod
原理:刪除 Pod 后,控制器(如 Deployment、StatefulSet)會自動創建新 Pod。
kubectl delete pod <pod-name> -n <namespace>
kubectl deploy pod nginx-f49c8d898-2jt8t -n prod
注意:可能導致短暫服務中斷(若單副本,多副本不影響)。
2. 滾動重啟
原理:通過更新策略逐步替換舊 Pod,確保服務可用性。
kubectl rollout restart deployment/<deployment-name> -n <namespace>
注意:不適用于 DaemonSet(需其他方法)。
3. 調整副本數觸發重建
原理:通過縮容到 0 再擴容,強制重建 Pod。
kubectl scale deployment/<deployment-name> --replicas=0 -n <namespace> \
&& kubectl scale deployment/<deployment-name> --replicas=2 -n <namespace>
注意:服務會中斷,生產環境慎用。
4. 編輯配置并應用
原理:修改 Pod 模板(如環境變量),觸發更新。
kubectl edit deployment/<deployment-name> -n <namespace>
修改后保存退出,K8s 自動應用
注意:任何模板字段變更都會觸發滾動重啟。
5. 容器內執行重啟命令
原理:進入容器執行進程重啟(需權限)。 命令:
kubectl exec <pod-name> -n <namespace> -- /bin/sh -c "kill 1"
注意:依賴容器內 PID 1 進程處理信號,可能不生效。
6. 五種方法對比
方法 | 適用控制器 | 服務中斷風險 | 推薦場景 |
直接刪除 Pod | 所有 | 高(單副本) | 測試、調試 |
滾動重啟 | Deployment, StatefulSet | 低 | 生產環境 |
調整副本數 | 所有 | 高 | 緊急情況 |
修改配置 | 支持更新的控制器 | 低 | 配置變更觸發重啟 |
容器內重啟 | 單個 Pod | 不定 | 調試 |
根據業務需求選擇合適方法,生產環境優先使用滾動重啟或配置更新以保證可用性。