11.5. 管理 worker 池 Canary 的机器配置继承


您可以配置机器配置池 (MCP) Canary,以继承分配给现有 MCP 的任何 MachineConfig。当您要使用 MCP Canary 来测试现有 MCP 时,此配置很有用。

先决条件

  • 您已创建了一个或多个 MCP。

流程

  1. 按照以下两个步骤所述,创建一个二级 MCP:

    1. 将以下配置文件保存为 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: ""
      # ...

    2. 运行以下命令来创建新机器配置池:

      $ oc create -f machineConfigPool.yaml

      输出示例

      machineconfigpool.machineconfiguration.openshift.io/worker-perf created

  2. 将一些机器添加到二级 MCP。以下示例将 worker 节点 worker-aworker-bworker-c 标记为 MCP worker-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=''
  3. 为 MCP worker-perf 创建新的 MachineConfig,如以下两个步骤所述:

    1. 将以下 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
      # ...

    2. 运行以下命令来应用 MachineConfig

      $ oc create -f new-machineconfig.yaml
  4. 创建新的 Canary MCP,并从您在上一步中创建的 MCP 添加机器。以下示例创建一个名为 worker-perf-canary 的 MCP,并添加您预先创建 worker-perf MCP 中的机器。

    1. 运行以下命令,标记 canary worker 节点 worker-a

      $ oc label node worker-a node-role.kubernetes.io/worker-perf-canary=''
    2. 运行以下命令,从原始 MCP 中删除 Canary worker 节点 worker-a

      $ oc label node worker-a node-role.kubernetes.io/worker-perf-
    3. 将以下文件保存为 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 成员的值。
    4. 运行以下命令,创建新的 worker-perf-canary

      $ oc create -f machineConfigPool-Canary.yaml

      输出示例

      machineconfigpool.machineconfiguration.openshift.io/worker-perf-canary created

  5. 检查 MachineConfig 是否继承在 worker-perf-canary 中。

    1. 运行以下命令验证没有 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

    2. 验证机器是否从 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

    3. 运行以下命令,验证 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)

    4. 运行以下命令验证 MCP 是否已更新了 crashkernel

      $ cat /proc/cmdline

      输出应包含更新的 crashekernel 值,例如:

      输出示例

      crashkernel=512M

  6. 可选:如果对升级满意,您可以将 worker-a 返回到 worker-perf

    1. 运行以下命令,将 worker-a 返回到 worker-perf

      $ oc label node worker-a node-role.kubernetes.io/worker-perf=''
    2. 运行以下命令,从 canary MCP 中删除 worker-a

      $ oc label node worker-a node-role.kubernetes.io/worker-perf-canary-
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.