8.2. 执行 canary rollout 更新
在某些情况下,您可能需要一个受控的更新过程,如您不希望特定节点与集群的其余部分同时更新。这些用例包括但不限于:
- 您有任务关键型应用程序,您希望在更新过程中仍然可以使用这些应用程序。在更新后,您可以慢慢地以小批的形式对应用进行测试。
- 您有一个短的维护窗口,在此期间不允许更新所有节点;或者您有多个维护窗口。
滚动更新过程不是典型的更新工作流。对于较大的集群,这可能是一个耗时的过程,需要您执行多个命令。这种复杂性可能会导致出现可能会影响整个集群的错误。建议您仔细考虑您的机构是否希望使用滚动更新,并在开始前仔细规划流程的实施。
本主题中描述的滚动更新过程涉及:
- 创建一个或多个自定义机器配置池 (MCP)。
- 标记您不想立即更新的每个节点,以将这些节点移至自定义 MCP。
- 暂停这些自定义 MCP,这会阻止对这些节点的更新。
- 执行集群更新。
- 取消暂停一个自定义 MCP,它会在这些节点上触发更新。
- 测试这些节点上的应用程序,以确保应用程序在这些新更新的节点上可以正常工作。
- (可选)从小批处理中的其余节点移除自定义标签,并在这些节点上测试应用。
暂停 MCP 可防止 Machine Config Operator 在关联的节点上应用任何配置更改。暂停 MCP 还可以防止任何自动轮转的证书被推送到关联的节点,包括自动轮转 kube-apiserver-to-kubelet-signer
CA 证书。如果 kube-apiserver-to-kubelet-signer
CA 证书过期且 MCO 尝试自动更新证书时,MCP 会暂停,但不会在相应机器配置池中的节点中应用新证书。这会导致多个 oc
命令失败,包括但不限于 oc debug
、oc logs
、oc exec
和 oc attach
。在暂停 MCP 时应该非常小心,需要仔细考虑 kube-apiserver-to-kubelet-signer
CA 证书过期的问题,且仅在短时间内暂停。
如果要使用 Canary rollout 更新过程,请参阅执行 Canary 推出部署更新。