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
)。
流程
运行以下命令列出集群的机器模板资源:
$ oc get <machine_template_kind> 1
- 1
- 指定与您的平台对应的值。以下值有效:
-
AWSMachineTemplate
:集群在 Amazon Web Services (AWS) 上运行。 -
gcpmachinetemplate
:集群在 Google Cloud Platform (GCP) 上运行。
-
输出示例
NAME AGE <template_name> 77m
运行以下命令,将集群的机器模板资源写入您可以编辑的文件:
$ oc get <template_name> -o yaml > <template_name>.yaml
其中
<template_name>
是集群的机器模板资源的名称。-
使用一个不同的名称生成
<template_name>.yaml
文件的副本。此流程使用<modified_template_name>.yaml
作为示例文件名。 使用文本编辑器更改
<modified_template_name>.yaml
文件,该文件为集群定义更新的机器模板资源。在编辑机器模板资源时,请观察以下内容:-
spec
小节中的参数特定于供应商。如需更多信息,请参阅您的供应商的 Cluster API 机器模板 YAML 示例。 您必须为与任何现有值不同的
metadata.name
参数使用值。重要对于引用此模板的任何 Cluster API 计算机器集,您必须更新
spec.template.spec.infrastructureRef.name
参数,以匹配新机器模板资源中的metadata.name
值。
-
运行以下命令来应用机器模板 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) 后创建的计算机器。更改不会影响现有的机器。
在底层云供应商中所做的更改不会反映在 Machine
或 MachineSet
CR 中。要在集群管理的基础架构中调整实例配置,请使用 cluster-side 资源。
您可以通过扩展计算机器集来创建两倍的副本,将现有机器替换为反映更新的配置的新机器,然后将其缩减到原始副本数。
如果您需要在不进行其他更改的情况下扩展计算机器,则不需要删除机器。
默认情况下,OpenShift Container Platform 路由器 Pod 部署在计算机器上。由于路由器需要访问某些集群资源(包括 Web 控制台),除非先重新放置了路由器 Pod,否则请不要将 worker 计算机器集扩展为 0
。
此流程中的输出示例使用 AWS 集群的值。
先决条件
- OpenShift Container Platform 集群使用 Cluster API。
-
以管理员身份使用 OpenShift CLI (
oc
) 登录集群。
流程
运行以下命令列出集群中的计算机器集:
$ 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
运行以下命令来编辑计算机器集:
$ oc edit machinesets.cluster.x-k8s.io <machine_set_name> \ -n openshift-cluster-api
请注意
spec.replicas
字段的值,因为在扩展机器集时需要它来应用更改。apiVersion: cluster.x-k8s.io/v1beta1 kind: MachineSet metadata: name: <machine_set_name> namespace: openshift-cluster-api spec: replicas: 2 1 # ...
- 1
- 此流程中的示例显示具有
replicas
值2
的计算机器集。
- 使用您想要的配置选项来更新计算机器设置 CR,并保存您的更改。
运行以下命令,列出由更新的计算机器集管理的机器:
$ 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
对于由更新的计算机器集管理的每台机器,请运行以下命令设置
delete
注解:$ oc annotate machines.cluster.x-k8s.io/<machine_name_original_1> \ -n openshift-cluster-api \ cluster.x-k8s.io/delete-machine="true"
要使用新配置创建替换机器,请运行以下命令将计算机器设置为两倍:
$ oc scale --replicas=4 \1 machinesets.cluster.x-k8s.io <machine_set_name> \ -n openshift-cluster-api
- 1
- 原始示例值
2
加倍到4
。
运行以下命令,列出由更新的计算机器集管理的机器:
$ 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
阶段时,您可以将计算机器设置为原始副本数。要删除使用旧配置创建的机器,请运行以下命令将计算机器设置为原始副本数:
$ 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