暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

常见重启Pod的五种方法

152
【关注我,可获得大佬分享的近百页阿里云内部的Linux排查手册】





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
不定
调试

根据业务需求选择合适方法,生产环境优先使用滚动重启或配置更新以保证可用性。








关注李哥,添,备注:工作岗位+地点,可拉进技术交流群。

加入我们,一起交流探讨运维技术吧!!!



文章转载自运维李哥不背锅,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论