如何停止运行中的AKS Pod并在一段时间后将其重启
AKS Pod 停止与延时重启操作指南
操作前先执行以下命令确认目标Pod的所属控制器、所在命名空间信息,避免误操作:kubectl get pods -A | grep <目标Pod名称关键字>
记录返回结果中的命名空间(NAMESPACE列)、Pod全名、所属控制器(OWNER列)信息,再根据场景选择对应操作方式。
方式一:调整工作负载副本数(最推荐,无业务闪断风险)
该方式适用于被Deployment、StatefulSet等支持副本调整的控制器管理的Pod,不会触发控制器自动立刻重建Pod,能精准控制停止时长:
- 第一步:将对应工作负载的副本数调整为0,终止所有关联运行中的Pod:
执行后可通过# 操作Deployment类型工作负载 kubectl scale deployment <控制器名称> -n <Pod所在命名空间> --replicas=0 # 如果是StatefulSet类型,替换资源类型即可 # kubectl scale statefulset <控制器名称> -n <Pod所在命名空间> --replicas=0kubectl get pods -n <命名空间>确认Pod已完全终止。 - 第二步:等待你需要的间隔时长后,将副本数调整为业务原本的副本数值,Pod会自动重新创建启动:
kubectl scale deployment <控制器名称> -n <Pod所在命名空间> --replicas=<原业务副本数>
方式二:直接删除Pod(适用于裸Pod或允许自动重建的场景)
- 如果目标Pod是没有绑定任何控制器的裸Pod:
- 执行删除命令即可终止运行中的Pod:
kubectl delete pod <Pod全名> -n <Pod所在命名空间> - 等待间隔时长结束后,使用原Pod的YAML配置文件重新创建即可完成重启:
kubectl apply -f <原Pod配置文件本地路径>
- 执行删除命令即可终止运行中的Pod:
- 如果目标Pod受控制器管理,且你不需要控制重建间隔,直接执行删除命令后,控制器会在数秒内自动拉起新的Pod替代被删除的实例,无法实现延时启动效果。
方式三:标签隔离法(适用于仅需停止单个Pod、不调整整体副本数的场景)
如果你的业务通过Service标签匹配后端Pod,可通过调整标签实现单个Pod的临时下线:
- 移除目标Pod上Service匹配的业务标签,切断流入该Pod的流量,同时打上临时标记:
kubectl label pod <Pod全名> -n <Pod所在命名空间> <业务标签key>- temp-status=offline
(命令中标签key后的减号代表删除该标签) - 确认流量完全切走后删除目标Pod,此时因为Pod标签已经不匹配控制器的标签选择器,控制器不会立刻重建该实例:
kubectl delete pod <Pod全名> -n <Pod所在命名空间> - 间隔指定时长后,重新创建Pod并恢复原有业务标签,即可将Pod重新接入业务流量。
注意:禁止直接登录AKS节点用容器运行时命令(比如
docker rm、crictl stop)杀容器,Kubernetes会判定容器异常退出,按照Pod配置的重启策略立刻拉起容器,无法达到延时启动的效果。
内容的提问来源于stack exchange,提问作者Ehsan Ellahi
相关产品推荐
相关产品推荐

