如何在 Linux 上重启 Kubernetes
Kubernetes 是容器编排软件,允许我们部署、管理和扩展容器化应用程序。尽管 Kubernetes 享有高度可靠的声誉,但也可能需要重新启动它,就像有时对任何其他应用程序或服务所做的那样。 Kubernetes 被分成不同的组件,这些组件都可以单独重新启动,以便其他部分可以不间断地继续运行。理想情况下,您应该只重新启动正在排除故障的组件。
在本教程中,我们将逐步介绍在 Linux 系统上重新启动 Kubernetes。这包括重新启动集群中的主节点(kubelet 服务)、工作节点和 Pod。您将在下面看到如何重新启动并检查每个 Kubernetes 组件的状态。
在本教程中您将学习:
如何重启 kubelet 服务
如何重启容器化层
如何重启master和worker节点
如何重启已部署的 Pod
如何在 Linux 上重启 Kubernetes
查看下面的各种示例,了解如何重新启动 Kubernetes 的不同组件。
要在主节点或工作节点上重新启动 kubelet 服务,请使用以下
systemctl
命令:$ sudo systemctl restart kubelet
然后,检查 kubelet 服务的当前状态:
$ sudo systemctl status kubelet
您还可以重新启动容器化层,这有时有助于排除错误。在大多数情况下,它是 Docker,但您的集群可能使用不同的技术:
$ sudo systemctl restart docker
要完全重新启动工作节点,我们可以使用典型的
reboot
Linux 命令。首先,我们应该使用 kubectl cordon 命令确保 Kubernetes 不会尝试同时在节点上调度任何新的 pod。通过 SSH 连接到工作节点并执行:$ kubectl cordon [ip address] $ sudo reboot
重启完成后:
$ kubectl uncordon [ip address]
当涉及到重新启动 Pod 时,一种方法是将副本设置为 0,然后在几分钟后当它们都有机会关闭时再次增加它们。例如:
$ kubectl scale deployments/nginx-server --replicas=0
重新启动 Pod 的更好方法是让
rollout restart
来完成这项工作。这样,每个 pod 一次都会重新启动,并且客户端不会注意到任何停机时间。$ kubectl rollout restart deployment [deployment_name] -n [namespace]
注意
如果在重新启动这些各种服务后仍然遇到错误,请尝试检查 Kubernetes 日志文件以获取有关可能导致错误的原因的更多提示。检查之前链接的指南以获取有关如何执行此操作的信息。
结束语
在本教程中,我们了解了如何在 Linux 系统上重新启动 Kubernetes。由于 Kubernetes 分为多个组件,我们通过两种不同的方法重新启动 kubelet 服务、主节点、工作节点、容器化层和所有 pod。当遇到新错误时,有时简单地重新启动其中一个或多个组件可能是最简单的修复方法。