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