使用 Kubernetes 部署、更新和保护应用程序
1. 定义存活和就绪状态
容器编排系统(如 Kubernetes 和 Docker Swarm)让高度分布式、关键任务型应用的部署、运行和更新变得更加容易。编排引擎能自动处理许多繁琐任务,如扩缩容、确保始终维持期望状态等。但编排引擎并非无所不能,有时开发者需要向其提供一些只有自己才清楚的信息。
以一个名为服务 A 的微服务为例,当它以容器化形式运行在 Kubernetes 集群中时,Kubernetes 能确保服务定义中所需的五个实例始终运行。若有实例崩溃,Kubernetes 会迅速启动新实例以维持期望状态。然而,若实例未崩溃但不健康或尚未准备好处理请求,Kubernetes 却无法知晓,因为应用服务的健康状况超出了编排引擎的认知范围,只有开发者才清楚服务何时健康、何时不健康。
服务可能在运行,但内部状态可能因某些 bug 而损坏,也可能陷入无限循环或死锁。同样,只有开发者知道服务是否准备好工作,或者是否仍在初始化。虽然建议尽量缩短微服务的初始化阶段,但对于某些需要较长时间才能就绪的服务,这往往难以避免。初始化阶段是微服务或其他应用服务生命周期的正常部分,因此,若微服务处于初始化阶段,Kubernetes 不应尝试终止它;若微服务不健康,Kubernetes 应尽快终止并替换为新实例。
Kubernetes 引入了探针的概念,用于在编排引擎和应用开发者之间架起桥梁。Kubernetes 通过这些探针了解应用服务的内部状态,探针在每个容器内部本地执行。主要有三种探针:服务健康(存活)探针、启动探针和服务就绪探针。
2. Kubernetes 存活探针
Kubern
超级会员免费看
订阅专栏 解锁全文
1452

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



