控制器 Kubernetes 控制器会监听资源的 创建/更新/删除 事件,并触发 Reconcile 调谐函数作为响应,整个调整过程被称作 “Reconcile Loop”(调谐循环) 或者 “Sync Loop”(同步循环)。Reconcile 是一个使用资源对象的命名空间和资源对象名称来调用的函数,使得资源对象的实际状态与 资源清单中定义的状态保持一致。调用完成后,Reconcile 会将资源对象的状态更新为当前实际状态。我们可以用下面的一段伪代码来表示这个过程: for { desired := getDesiredState() // 期望的状态 current := getCurrentState() // 当前实际状态 if current == desired { // 如果状态一致则什么都不做 // nothing to do } else { // 如果状态不一致则调整编排,到一致为止 // change current to desired status } } 这个编排模型就是 Kubernetes 项目中的一个通用编排模式,即:控制循环(control loop)。 Headless Service 在我们学习 StatefulSet 对象之前,我们还必须了解一个新的概念:Headless Service。Service 其实在之前我们和大家提到过,Service 是应用服务的抽象,通过 Labels 为应用提供负载均衡和服务发现,每个 Service 都会自动分配一个 cluster IP 和 DNS 名,在集群内部我们可以通过该地址或者通过 FDQN 的形式来访问服务。比如,一个 Deployment 有 3 个 Pod,那么我就可以定义一个 Service,有如下两种方式来访问这个 Service:...