$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
您可以通过更新控制平面机器集中的值来更改 Amazon Web Services (AWS) 控制平面机器的配置并启用功能。保存对控制平面机器集的更新后,控制平面机器集运算符将根据您配置的更新策略更新控制平面机器。
以下示例 YAML 代码段显示了 AWS 集群的提供程序规范和故障域配置。
为现有集群创建控制平面机器集时,提供程序规范必须与安装程序创建的控制平面机器自定义资源 (CR) 中的providerSpec
配置匹配。您可以省略在 CR 的故障域部分中设置的任何字段。
在以下示例中,<cluster_id>
是基于您在预配集群时设置的集群 ID 的基础架构 ID。如果您已安装 OpenShift CLI,则可以通过运行以下命令获取基础架构 ID
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
providerSpec
值apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
metadata:
name: cluster
namespace: openshift-machine-api
spec:
# ...
template:
# ...
spec:
providerSpec:
value:
ami:
id: ami-<ami_id_string> (1)
apiVersion: machine.openshift.io/v1beta1
blockDevices:
- ebs: (2)
encrypted: true
iops: 0
kmsKey:
arn: ""
volumeSize: 120
volumeType: gp3
credentialsSecret:
name: aws-cloud-credentials (3)
deviceIndex: 0
iamInstanceProfile:
id: <cluster_id>-master-profile (4)
instanceType: m6i.xlarge (5)
kind: AWSMachineProviderConfig (6)
loadBalancers: (7)
- name: <cluster_id>-int
type: network
- name: <cluster_id>-ext
type: network
metadata:
creationTimestamp: null
metadataServiceOptions: {}
placement: (8)
region: <region> (9)
availabilityZone: "" (10)
tenancy: (11)
securityGroups:
- filters:
- name: tag:Name
values:
- <cluster_id>-master-sg (12)
subnet: {} (13)
userDataSecret:
name: master-user-data (14)
1 | 指定集群的 Red Hat Enterprise Linux CoreOS (RHCOS) Amazon 机器镜像 (AMI) ID。AMI 必须属于与集群相同的区域。如果您想使用 AWS Marketplace 镜像,则必须完成来自AWS Marketplace的 OpenShift Container Platform 订阅以获取您区域的 AMI ID。 | ||
2 | 指定已加密 EBS 卷的配置。 | ||
3 | 指定集群的密钥名称。请勿更改此值。 | ||
4 | 指定 AWS Identity and Access Management (IAM) 实例配置文件。请勿更改此值。 | ||
5 | 指定控制平面的 AWS 实例类型。 | ||
6 | 指定云提供商平台类型。请勿更改此值。 | ||
7 | 指定集群的内部 (int ) 和外部 (ext ) 负载均衡器。
|
||
8 | 指定在 AWS 中创建控制平面实例的位置。 | ||
9 | 指定集群的 AWS 区域。 | ||
10 | 此参数在故障域中配置,此处显示为空值。如果为此参数指定的值与故障域中的值不同,则控制平面机器集操作符会将其覆盖为故障域中的值。 | ||
11 | 指定控制平面的 AWS 专用实例配置。有关更多信息,请参阅 AWS 关于专用实例的文档。有效值为:
|
||
12 | 指定控制平面机器安全组。 | ||
13 | 此参数在故障域中配置,此处显示为空值。如果为此参数指定的值与故障域中的值不同,则控制平面机器集操作符会将其覆盖为故障域中的值。
|
||
14 | 指定控制平面用户数据密钥。请勿更改此值。 |
控制平面机器集的故障域概念类似于现有的 AWS 可用区 (AZ) 概念。ControlPlaneMachineSet
CR 会尽可能地将控制平面机器分布到多个故障域。
在控制平面机器集中配置 AWS 故障域时,必须指定可用区名称和要使用的子网。
apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
metadata:
name: cluster
namespace: openshift-machine-api
spec:
# ...
template:
# ...
machines_v1beta1_machine_openshift_io:
failureDomains:
aws:
- placement:
availabilityZone: <aws_zone_a> (1)
subnet: (2)
filters:
- name: tag:Name
values:
- <cluster_id>-private-<aws_zone_a> (3)
type: Filters (4)
- placement:
availabilityZone: <aws_zone_b> (5)
subnet:
filters:
- name: tag:Name
values:
- <cluster_id>-private-<aws_zone_b> (6)
type: Filters
platform: AWS (7)
# ...
1 | 为第一个故障域指定 AWS 可用区。 |
2 | 指定子网配置。在此示例中,子网类型为Filters ,因此存在filters 部分。 |
3 | 使用基础设施 ID 和 AWS 可用区指定第一个故障域的子网名称。 |
4 | 指定子网类型。允许的值为:ARN 、Filters 和 ID 。默认值为Filters 。 |
5 | 使用基础设施 ID 和 AWS 可用区指定附加故障域的子网名称。 |
6 | 为附加故障域指定集群的基础设施 ID 和 AWS 可用区。 |
7 | 指定云提供商平台名称。请勿更改此值。 |
您可以通过更新控制平面机器集中的值来启用功能。
将集群部署到 Amazon Web Services (AWS) 后,您可以重新配置 API 服务器以仅使用私有区域。
安装 OpenShift CLI (oc
)。
拥有作为具有admin
权限的用户访问 Web 控制台的权限。
在云提供商的 Web 门户或控制台中,执行以下操作
找到并删除相应的负载均衡器组件
对于 AWS,请删除外部负载均衡器。私有区域中的 API DNS 条目已指向内部负载均衡器,后者使用相同的配置,因此您无需修改内部负载均衡器。
删除公共区域中的api.$clustername.$yourdomain
DNS 条目。
通过删除控制平面机器集自定义资源中指示的以下行来删除外部负载均衡器
# ...
providerSpec:
value:
# ...
loadBalancers:
- name: lk4pj-ext (1)
type: network (2)
- name: lk4pj-int
type: network
# ...
1 | 删除外部负载均衡器的name 值(以-ext 结尾)。 |
2 | 删除外部负载均衡器的type 值。 |
您可以通过更新控制平面机器集自定义资源 (CR) 中的规范来更改控制平面机器使用的 Amazon Web Services (AWS) 实例类型。
您的 AWS 集群使用控制平面机器集。
编辑providerSpec
字段下的以下行
providerSpec:
value:
...
instanceType: <compatible_aws_instance_type> (1)
1 | 指定与之前的选择具有相同基础的更大的 AWS 实例类型。例如,您可以将m6i.xlarge 更改为m6i.2xlarge 或m6i.4xlarge 。 |
保存您的更改。
您可以配置机器集以在现有 AWS 放置组中的弹性结构适配器 (EFA) 实例上部署机器。
EFA 实例不需要放置组,您可以将放置组用于配置 EFA 以外的目的。此示例同时使用两者来演示可以提高指定放置组中机器网络性能的配置。
您已在 AWS 控制台中创建了一个放置组。
确保您创建的放置组类型的规则和限制与您的预期用例兼容。控制平面机器集会尽可能地将控制平面机器分布到多个故障域。要将放置组用于控制平面,您必须使用可以跨多个可用区扩展的放置组类型。 |
在文本编辑器中,打开现有机器集的 YAML 文件或创建一个新的 YAML 文件。
编辑providerSpec
字段下的以下行
apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
# ...
spec:
template:
spec:
providerSpec:
value:
instanceType: <supported_instance_type> (1)
networkInterfaceType: EFA (2)
placement:
availabilityZone: <zone> (3)
region: <region> (4)
placementGroupName: <placement_group> (5)
placementGroupPartition: <placement_group_partition_number> (6)
# ...
1 | 指定支持 EFA的实例类型。 |
2 | 指定EFA 网络接口类型。 |
3 | 指定区域,例如us-east-1a 。 |
4 | 指定区域,例如us-east-1 。 |
5 | 指定要在此处部署机器的现有 AWS 放置组的名称。 |
6 | 可选:指定要在此处部署机器的现有 AWS 放置组的分区号。 |
在 AWS 控制台中,找到机器集创建的机器,并在机器属性中验证以下内容
放置组字段的值与您在机器集中为placementGroupName
参数指定的值相同。
分区号字段的值与您在机器集中为placementGroupPartition
参数指定的值相同。
接口类型字段指示它使用 EFA。
您可以使用机器集创建使用特定版本的 Amazon EC2 实例元数据服务 (IMDS) 的机器。机器集可以创建允许同时使用 IMDSv1 和IMDSv2的机器,或者创建需要使用 IMDSv2 的机器。
仅在使用 OpenShift Container Platform 4.7 或更高版本创建的 AWS 集群上支持使用 IMDSv2。 |
在配置机器集以创建需要 IMDSv2 的机器之前,请确保与 AWS 元数据服务交互的任何工作负载都支持 IMDSv2。 |
您可以通过添加或编辑机器 YAML 文件中metadataServiceOptions.authentication
的值来指定是否需要使用 IMDSv2。
要使用 IMDSv2,您的 AWS 集群必须使用 OpenShift Container Platform 4.7 或更高版本创建。
在providerSpec
字段下添加或编辑以下几行
providerSpec:
value:
metadataServiceOptions:
authentication: Required (1)
1 | 要强制使用 IMDSv2,请将参数值设置为Required 。要允许同时使用 IMDSv1 和 IMDSv2,请将参数值设置为Optional 。如果未指定值,则允许使用 IMDSv1 和 IMDSv2。 |