一、 有 yaml 文件的重启方式
使用 kubectl replace --force
命令
1 | # kubectl replace --force -f xxx.yaml |
在有 yaml 文件的情况下可以直接使用 kubectl replace --force -f xxx.yaml
来强制替换Pod 的 API 对象,从而达到重启的目的
二、没有 yaml 文件的重启方式
2.1 使用 scale
命令
由于 Deployment 对象并不是直接操控的 Pod 对象,而是操控的 ReplicaSet 对象,而 ReplicaSet 对象就是由副本的数目的定义和Pod 模板组成的。所以这条命令分别是将ReplicaSet 的数量 scale 到 0,然后又 scale 到 1,那么 Pod 也就重启了。
1 | # kubectl scale deployment {pod} --replicas=0 -n {namespace} |
2.2 直接 delete
重启
此方式只针对使用的deployment对象,并且重启策略为可以重启,则可以尝试删除重启
1 | spec: |
1 | # kubectl delete po {poname} -n {namespace} |
这个方法就很简单粗暴了,直接把 Pod 删除,因为 Kubernetes 是声明式 API,所以删掉了之后,Pod API 对象就与预期的不一致了,所以会自动重新创建 Pod 保持与预期一致,但是如果ReplicaSet 管理的 Pod 对象很多的话,那么要一个个手动删除,会很麻烦,所以可以删除 ReplicaSet
1 |
|
2.3 使用 -o yaml
使用 -o yaml
参数导出Pod模板并重建模板(推荐)
1 | # kubectl get pod {podname} -n {namespace} -o yaml | kubectl replace --force -f - |
2.4 使用 rollout restart
Kubernetes 1.15开始才有
1 | # kubectl rollout restart deployment {pod} -n {namespace} |