节点中断策略
理解 Machine Configuration 中的节点中断
默认情况下,当你修改 MachineConfig 对象的 systemd units 部分中的某些内容时,Machine Configuration Operator 会驱逐并重启与该 MachineConfig 关联的节点。然而,对普通文件条目的更改通常不会触发重启,这可能导致配置未按预期生效。为了解决这一问题,你可以定义节点中断策略,以指定哪些类型的更改应触发节点重启或其他中断操作。这些策略在位于 cpaas-system 命名空间中的 MachineConfiguration 对象中进行配置。有关配置节点中断策略的示例,请参见下文。
定义后,Machine Configuration Operator 会验证该策略以检测诸如格式无效之类的问题。然后,它会将该策略填充到 MachineConfiguration 对象的 status.nodeDisruptionPolicyStatus 字段中。这些用户定义的策略会覆盖集群的默认中断设置。
集群中会安装一个名为 cluster 的默认 MachineConfiguration 自定义资源。你可以在该资源上配置节点中断行为。
你可以通过节点中断策略控制什么
节点中断策略允许你定义在对以下配置区域进行更改时会发生什么:
-
文件:你可以为文件更改定义行为(不包括对根目录的更改)。默认情况下,文件更改不会触发任何中断。你可以使用
spec.defaultNodeDisruptionPolicySpecAction.files字段修改此行为。 -
Systemd Units:你可以创建或修改
systemd服务,包括启用、禁用或更改其状态。默认情况下,对systemdunits 的更改会触发节点驱逐和重启。 -
SSH 公钥:你可以为
boot用户添加或更新 SSH 密钥。默认情况下,这些更改会立即应用,不会触发重启或驱逐。
每次更改都会根据节点中断策略进行评估,该策略可能会触发以下一种或多种操作:
Reboot:驱逐并重启节点。None:不触发中断;更改会静默应用。Drain:驱逐节点,但不重启。Restart:重启指定的systemd服务。DaemonReload:重新加载所有systemdunit 配置。
示例:默认节点中断策略
以下是安装后 cluster MachineConfiguration 资源的默认配置:
此配置表示:
- 文件更改不会触发任何操作。
systemdunit 更改会导致节点驱逐和重启。- SSH 密钥更改会在不发生中断的情况下应用。
示例:自定义文件行为
你可以将文件更改的默认操作修改为触发重启:
使用此配置时,对受管文件的任何更改都会导致 Machine Configuration Operator 驱逐并重启受影响的节点。
示例:将策略应用于特定文件
你还可以为特定文件路径定义中断操作。在下面的示例中,对 /usr/local/bin/myapp.sh 的更改不会触发节点重启,而是会重新加载 systemd 配置并重启相关服务:
在这种情况下,当 /usr/local/bin/myapp.sh 更新时,Machine Configuration Operator 将重新加载所有 systemd units 并重启 myapp.service,而不会驱逐或重启该节点。