13.3. 使用 Cluster API 管理机器


重要

使用集群 API 管理机器只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

13.3.1. 修改 Cluster API 机器模板

您可以通过修改 YAML 清单文件并使用 OpenShift CLI (oc) 应用它来更新集群的机器模板资源。

先决条件

  • 您已部署了使用 Cluster API 的 OpenShift Container Platform 集群。
  • 您可以使用具有 cluster-admin 权限的账户访问集群。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 运行以下命令列出集群的机器模板资源:

    $ oc get <machine_template_kind> 1
    1
    指定与您的平台对应的值。以下值有效:
    • AWSMachineTemplate:集群在 Amazon Web Services (AWS) 上运行。
    • gcpmachinetemplate:集群在 Google Cloud Platform (GCP) 上运行。
    • VSphereMachineTemplate :集群在 VMware vSphere 上运行。

    输出示例

    NAME              AGE
    <template_name>   77m

  2. 运行以下命令,将集群的机器模板资源写入您可以编辑的文件:

    $ oc get <template_name> -o yaml > <template_name>.yaml

    其中 <template_name> 是集群的机器模板资源的名称。

  3. 使用一个不同的名称生成 <template_name>.yaml 文件的副本。此流程使用 <modified_template_name>.yaml 作为示例文件名。
  4. 使用文本编辑器更改 <modified_template_name>.yaml 文件,该文件为集群定义更新的机器模板资源。在编辑机器模板资源时,请观察以下内容:

    • spec 小节中的参数特定于供应商。如需更多信息,请参阅您的供应商的 Cluster API 机器模板 YAML 示例。
    • 您必须为与任何现有值不同的 metadata.name 参数使用值。

      重要

      对于引用此模板的任何 Cluster API 计算机器集,您必须更新 spec.template.spec.infrastructureRef.name 参数,以匹配新机器模板资源中的 metadata.name 值。

  5. 运行以下命令来应用机器模板 CR:

    $ oc apply -f <modified_template_name>.yaml 1
    1
    使用带有新名称编辑的 YAML 文件。

后续步骤

  • 对于引用此模板的任何 Cluster API 计算机器集,更新 spec.template.spec.infrastructureRef.name 参数,以匹配新机器模板资源中的 metadata.name 值。如需更多信息,请参阅"使用 CLI 修改计算机器集"。

13.3.2. 使用 CLI 修改计算机器集

您可以修改计算机器集的配置,然后使用 CLI 将更改传播到集群中的机器。

通过更新计算机器集配置,您可以启用功能或更改它创建的机器的属性。当您修改计算机器集时,您的更改只适用于在保存更新的 MachineSet 自定义资源 (CR) 后创建的计算机器。更改不会影响现有的机器。

注意

在底层云供应商中所做的更改不会反映在 MachineMachineSet CR 中。要在集群管理的基础架构中调整实例配置,请使用 cluster-side 资源。

您可以通过扩展计算机器集来创建两倍的副本,将现有机器替换为反映更新的配置的新机器,然后将其缩减到原始副本数。

如果您需要在不进行其他更改的情况下扩展计算机器,则不需要删除机器。

注意

默认情况下,OpenShift Container Platform 路由器 Pod 部署在计算机器上。由于路由器需要访问某些集群资源(包括 Web 控制台),除非先重新放置了路由器 Pod,否则请不要将 worker 计算机器集扩展为 0

此流程中的输出示例使用 AWS 集群的值。

先决条件

  • OpenShift Container Platform 集群使用 Cluster API。
  • 以管理员身份使用 OpenShift CLI (oc) 登录集群。

流程

  1. 运行以下命令列出集群中的计算机器集:

    $ oc get machinesets.cluster.x-k8s.io -n openshift-cluster-api

    输出示例

    NAME                          CLUSTER             REPLICAS   READY   AVAILABLE   AGE   VERSION
    <compute_machine_set_name_1>  <cluster_name>      1          1       1           26m
    <compute_machine_set_name_2>  <cluster_name>      1          1       1           26m

  2. 运行以下命令来编辑计算机器集:

    $ oc edit machinesets.cluster.x-k8s.io <machine_set_name> \
      -n openshift-cluster-api
  3. 请注意 spec.replicas 字段的值,因为在扩展机器集时需要它来应用更改。

    apiVersion: cluster.x-k8s.io/v1beta1
    kind: MachineSet
    metadata:
      name: <machine_set_name>
      namespace: openshift-cluster-api
    spec:
      replicas: 2 1
    # ...
    1
    此流程中的示例显示具有 replicas2 的计算机器集。
  4. 使用您想要的配置选项来更新计算机器设置 CR,并保存您的更改。
  5. 运行以下命令,列出由更新的计算机器集管理的机器:

    $ oc get machines.cluster.x-k8s.io \
      -n openshift-cluster-api \
      -l cluster.x-k8s.io/set-name=<machine_set_name>

    AWS 集群的输出示例

    NAME                        CLUSTER          NODENAME                                    PROVIDERID                              PHASE           AGE     VERSION
    <machine_name_original_1>   <cluster_name>   <original_1_ip>.<region>.compute.internal   aws:///us-east-2a/i-04e7b2cbd61fd2075   Running         4h
    <machine_name_original_2>   <cluster_name>   <original_2_ip>.<region>.compute.internal   aws:///us-east-2a/i-04e7b2cbd61fd2075   Running         4h

  6. 对于由更新的计算机器集管理的每台机器,请运行以下命令设置 delete 注解:

    $ oc annotate machines.cluster.x-k8s.io/<machine_name_original_1> \
      -n openshift-cluster-api \
      cluster.x-k8s.io/delete-machine="true"
  7. 要使用新配置创建替换机器,请运行以下命令将计算机器设置为两倍:

    $ oc scale --replicas=4 \1
      machinesets.cluster.x-k8s.io <machine_set_name> \
      -n openshift-cluster-api
    1
    原始示例值 2 加倍到 4
  8. 运行以下命令,列出由更新的计算机器集管理的机器:

    $ oc get machines.cluster.x-k8s.io \
      -n openshift-cluster-api \
      -l cluster.x-k8s.io/set-name=<machine_set_name>

    AWS 集群的输出示例

    NAME                        CLUSTER          NODENAME                                    PROVIDERID                              PHASE           AGE     VERSION
    <machine_name_original_1>   <cluster_name>   <original_1_ip>.<region>.compute.internal   aws:///us-east-2a/i-04e7b2cbd61fd2075   Running         4h
    <machine_name_original_2>   <cluster_name>   <original_2_ip>.<region>.compute.internal   aws:///us-east-2a/i-04e7b2cbd61fd2075   Running         4h
    <machine_name_updated_1>    <cluster_name>   <updated_1_ip>.<region>.compute.internal    aws:///us-east-2a/i-04e7b2cbd61fd2075   Provisioned     55s
    <machine_name_updated_2>    <cluster_name>   <updated_2_ip>.<region>.compute.internal    aws:///us-east-2a/i-04e7b2cbd61fd2075   Provisioning    55s

    当新机器处于 Running 阶段时,您可以将计算机器设置为原始副本数。

  9. 要删除使用旧配置创建的机器,请运行以下命令将计算机器设置为原始副本数:

    $ oc scale --replicas=2 \1
      machinesets.cluster.x-k8s.io <machine_set_name> \
      -n openshift-cluster-api
    1
    原始示例值 2

验证

  • 要验证更新机器集创建的机器是否具有正确的配置,请运行以下命令检查 CR 中的相关字段是否有新机器:

    $ oc describe machines.cluster.x-k8s.io <machine_name_updated_1> \
      -n openshift-cluster-api
  • 要验证没有更新的配置的计算机器,请运行以下命令列出由更新的计算机器集管理的机器:

    $ oc get machines.cluster.x-k8s.io \
      -n openshift-cluster-api \
      cluster.x-k8s.io/set-name=<machine_set_name>

    删除时的输出示例是 AWS 集群的进度

    NAME                        CLUSTER          NODENAME                                    PROVIDERID                              PHASE      AGE     VERSION
    <machine_name_original_1>   <cluster_name>   <original_1_ip>.<region>.compute.internal   aws:///us-east-2a/i-04e7b2cbd61fd2075   Running    18m
    <machine_name_original_2>   <cluster_name>   <original_2_ip>.<region>.compute.internal   aws:///us-east-2a/i-04e7b2cbd61fd2075   Running    18m
    <machine_name_updated_1>    <cluster_name>   <updated_1_ip>.<region>.compute.internal    aws:///us-east-2a/i-04e7b2cbd61fd2075   Running    18m
    <machine_name_updated_2>    <cluster_name>   <updated_2_ip>.<region>.compute.internal    aws:///us-east-2a/i-04e7b2cbd61fd2075   Running    18m

    为 AWS 集群完成删除时的输出示例

    NAME                        CLUSTER          NODENAME                                    PROVIDERID                              PHASE      AGE     VERSION
    <machine_name_updated_1>    <cluster_name>   <updated_1_ip>.<region>.compute.internal    aws:///us-east-2a/i-04e7b2cbd61fd2075   Running    18m
    <machine_name_updated_2>    <cluster_name>   <updated_2_ip>.<region>.compute.internal    aws:///us-east-2a/i-04e7b2cbd61fd2075   Running    18m

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.