Kubernetes 部署、调度与资源管理全解析
1. 部署与调度基础
在 Kubernetes 中,当程序需要持续运行时,它会立即重新启动。在传统服务器上,我们可以使用像 systemd、runit 或 supervisord 这样的工具来实现这一点;Docker 也有类似的功能,而 Kubernetes 则通过 Deployment 来实现。
1.1 部署对象与控制器
对于 Kubernetes 要监管的每个程序,它会创建一个对应的 Deployment 对象。这个对象记录了程序的一些信息,如容器镜像的名称、要运行的副本数量等,这些信息是启动容器所必需的。
与 Deployment 资源协同工作的是一种名为控制器(controller)的 Kubernetes 组件。控制器本质上是一段循环运行的代码,它会持续监控其所负责的资源,确保这些资源存在且正常工作。例如,如果某个 Deployment 运行的副本数量不足,控制器会创建新的副本;如果副本数量过多,控制器会终止多余的副本,以确保实际状态与期望状态一致。
1.2 重启容器机制
Deployment 的行为可能乍一看有点令人惊讶。如果容器完成工作后退出、崩溃、被信号终止或使用 kubectl 终止,Deployment 都会重新启动它。大多数 Kubernetes 应用程序设计为长时间运行且可靠,因此这种默认的重启行为是合理的。不过,我们也可以为单个容器更改此策略,例如从不重启或仅在失败时重启。
Deployment 的主要任务是监控其关联的容器,确保指定数量的容器始终处于运行状态。如果容器数量不足,它会启动更多容器;如果数量过多,它会终止
超级会员免费看
订阅专栏 解锁全文
2090

被折叠的 条评论
为什么被折叠?



