11.5. 管理 worker 池 Canary 的机器配置继承
您可以配置机器配置池 (MCP) Canary,以继承分配给现有 MCP 的任何 MachineConfig
。当您要使用 MCP Canary 来测试现有 MCP 时,此配置很有用。
先决条件
- 您已创建了一个或多个 MCP。
流程
按照以下两个步骤所述,创建一个二级 MCP:
将以下配置文件保存为
machineConfigPool.yaml
。machineConfigPool
YAML 示例apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfigPool metadata: name: worker-perf spec: machineConfigSelector: matchExpressions: - { key: machineconfiguration.openshift.io/role, operator: In, values: [worker,worker-perf] } nodeSelector: matchLabels: node-role.kubernetes.io/worker-perf: "" # ...
运行以下命令来创建新机器配置池:
$ oc create -f machineConfigPool.yaml
输出示例
machineconfigpool.machineconfiguration.openshift.io/worker-perf created
将一些机器添加到二级 MCP。以下示例将 worker 节点
worker-a
、worker-b
和worker-c
标记为 MCPworker-perf
:$ oc label node worker-a node-role.kubernetes.io/worker-perf=''
$ oc label node worker-b node-role.kubernetes.io/worker-perf=''
$ oc label node worker-c node-role.kubernetes.io/worker-perf=''
为 MCP
worker-perf
创建新的MachineConfig
,如以下两个步骤所述:将以下
MachineConfig
示例保存为名为new-machineconfig.yaml
的文件:MachineConfig
YAML 示例apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: worker-perf name: 06-kdump-enable-worker-perf spec: config: ignition: version: 3.2.0 systemd: units: - enabled: true name: kdump.service kernelArguments: - crashkernel=512M # ...
运行以下命令来应用
MachineConfig
:$ oc create -f new-machineconfig.yaml
创建新的 Canary MCP,并从您在上一步中创建的 MCP 添加机器。以下示例创建一个名为
worker-perf-canary
的 MCP,并添加您预先创建worker-perf
MCP 中的机器。运行以下命令,标记 canary worker 节点
worker-a
:$ oc label node worker-a node-role.kubernetes.io/worker-perf-canary=''
运行以下命令,从原始 MCP 中删除 Canary worker 节点
worker-a
:$ oc label node worker-a node-role.kubernetes.io/worker-perf-
将以下文件保存为
machineConfigPool-Canary.yaml
。machineConfigPool-Canary.yaml
文件示例apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfigPool metadata: name: worker-perf-canary spec: machineConfigSelector: matchExpressions: - { key: machineconfiguration.openshift.io/role, operator: In, values: [worker,worker-perf,worker-perf-canary] 1 } nodeSelector: matchLabels: node-role.kubernetes.io/worker-perf-canary: ""
- 1
- 可选值。这个示例包括
worker-perf-canary
作为一个额外值。您可以使用此方法配置额外MachineConfig
成员的值。
运行以下命令,创建新的
worker-perf-canary
:$ oc create -f machineConfigPool-Canary.yaml
输出示例
machineconfigpool.machineconfiguration.openshift.io/worker-perf-canary created
检查
MachineConfig
是否继承在worker-perf-canary
中。运行以下命令验证没有 MCP 降级:
$ oc get mcp
输出示例
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-2bf1379b39e22bae858ea1a3ff54b2ac True False False 3 3 3 0 5d16h worker rendered-worker-b9576d51e030413cfab12eb5b9841f34 True False False 0 0 0 0 5d16h worker-perf rendered-worker-perf-b98a1f62485fa702c4329d17d9364f6a True False False 2 2 2 0 56m worker-perf-canary rendered-worker-perf-canary-b98a1f62485fa702c4329d17d9364f6a True False False 1 1 1 0 44m
验证机器是否从
worker-perf
继承到worker-perf-canary
。$ oc get nodes
输出示例
NAME STATUS ROLES AGE VERSION ... worker-a Ready worker,worker-perf-canary 5d15h v1.27.13+e709aa5 worker-b Ready worker,worker-perf 5d15h v1.27.13+e709aa5 worker-c Ready worker,worker-perf 5d15h v1.27.13+e709aa5
运行以下命令,验证
worker-a
上是否启用了kdump
服务:$ systemctl status kdump.service
输出示例
NAME STATUS ROLES AGE VERSION ... kdump.service - Crash recovery kernel arming Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; preset: disabled) Active: active (exited) since Tue 2024-09-03 12:44:43 UTC; 10s ago Process: 4151139 ExecStart=/usr/bin/kdumpctl start (code=exited, status=0/SUCCESS) Main PID: 4151139 (code=exited, status=0/SUCCESS)
运行以下命令验证 MCP 是否已更新了
crashkernel
:$ cat /proc/cmdline
输出应包含更新的
crashekernel
值,例如:输出示例
crashkernel=512M
可选:如果对升级满意,您可以将
worker-a
返回到worker-perf
。运行以下命令,将
worker-a
返回到worker-perf
:$ oc label node worker-a node-role.kubernetes.io/worker-perf=''
运行以下命令,从 canary MCP 中删除
worker-a
:$ oc label node worker-a node-role.kubernetes.io/worker-perf-canary-