介绍
Kubernetes是一个开源系统,专为编排、扩展和部署容器化应用程序而构建。如果你曾经使用过 Kubernetes,就会知道它对于管理容器有多么有用。
你还将知道容器并不总是以它们应有的方式运行。如果出现错误,你需要一种快速简便的方法来解决问题。
如何重启Kubernetes Pod ?
本教程将解释如何在 Kubernetes 中重启 Pod的方法。
先决条件
访问终端窗口/命令行
Kubernetes 集群
Kubernetes kubectl命令行工具
重启 Kubernetes Pod
注意: kubectl 命令行工具没有直接重启 pod 的命令。但是,以下解决方法可以节省你的时间,尤其是在你的应用程序正在运行且你不想关闭服务的情况下。
假设容器中的一个 Pod 报告错误。根据重启策略,Kubernetes 可能会尝试自动重启 pod 以使其再次工作。然而,这并不总能解决问题。
Kubernetes如何重启Pod ?如果 Kubernetes 无法自行解决问题,并且你找不到错误的根源,那么重新启动 pod 是让你的应用程序再次运行的最快方法。
注意: 现代DevOps 团队将有一个快捷方式来重新部署 pod 作为其 CI/CD 管道的一部分。虽然此方法有效,但可能需要相当长的时间。你的 Pod 必须运行整个 CI/CD 过程。
方法一:滚动重启
从更新 1.15 开始,Kubernetes 允许你滚动重启部署。作为Kubernetes的新成员,这是最快的重启方式。
kubectl rollout restart deployment [deployment_name]
上述
重启Kubernetes Pod的方法 中,命令执行逐步关闭并重新启动部署中的每个容器。你的应用程序仍将可用,因为大多数容器仍将运行。
注意: 了解如何使用 Prometheus 监控 Kubernetes。监控 Kubernetes 可以让你更好地了解集群的状态。为了更好地管理工作负载的复杂性,我们建议你阅读我们的文章Kubernetes 监控最佳实践。
方法 2:使用环境变量
如何重启Kubernetes Pod ?另一种方法是设置或更改环境变量以强制 pod 重新启动并与你所做的更改同步。
例如,你可以更改容器部署日期:
kubectl set env deployment [deployment_name] DEPLOY_DATE="$(date)"
在上面的示例中,该命令
set env
设置环境变量的更改,
deployment [deployment_name]
选择你的部署,并
DEPLOY_DATE="$(date)"
更改部署日期并强制重新启动 pod。
Kubernetes如何重启Pod
注: 了解参考我们的教程使用环境变量都设置环境变量在Linux中,设置环境变量在Mac,并设置环境变量在Windows中。
方法三:扩容副本数
如何重启Kubernetes Pod?最后,你可以使用该
scale
命令更改故障 Pod 的副本数量。将此数量设置为零实质上会关闭 pod:
kubectl scale deployment [deployment_name] --replicas=0
重启Kubernetes Pod的方法:要重新启动 pod,请使用相同的命令将副本数设置为大于零的任何值:
kubectl scale deployment [deployment_name] --replicas=1
当你将副本数设置为零时,Kubernetes 会销毁它不再需要的副本。
一旦你设置的数字大于零,Kubernetes 就会创建新的副本。新副本的名称将与旧副本不同。你可以使用该命令
kubectl get pods
检查 Pod 的状态并查看新名称是什么。
Kubernetes如何重启Pod
结论
如何重启Kubernetes Pod?Kubernetes 是一个非常有用的系统,但与任何其他系统一样,它也不是没有故障的。
当问题确实发生时,你可以使用上面列出的三种方法来快速、安全地让你的应用程序运行,而无需为你的客户关闭服务。
重新启动 Pod 后,你将有时间查找并修复问题的真正原因。