$ aws ec2 describe-images --region <aws_region_name> --filters "Name=name,Values=Windows_Server-2022*English*Core*Base*" "Name=is-public,Values=true" --query "reverse(sort_by(Images, &CreationDate))[*].{name: Name, id: ImageId}" --output table
您可以创建一个 Windows MachineSet
对象,以在您的 Amazon Web Services (AWS) 上的 OpenShift Container Platform 集群中服务于特定目的。例如,您可以创建基础架构 Windows 机器集和相关的机器,以便您可以将支持的 Windows 工作负载迁移到新的 Windows 机器。
您已使用 Operator Lifecycle Manager (OLM) 安装了 Windows Machine Config Operator (WMCO)。
您正在使用受支持的 Windows Server 作为操作系统镜像。
根据您的 Windows Server 版本,使用以下一个或多个 aws
命令来查询有效的 AMI 镜像
$ aws ec2 describe-images --region <aws_region_name> --filters "Name=name,Values=Windows_Server-2022*English*Core*Base*" "Name=is-public,Values=true" --query "reverse(sort_by(Images, &CreationDate))[*].{name: Name, id: ImageId}" --output table
$ aws ec2 describe-images --region <aws_region_name> --filters "Name=name,Values=Windows_Server-2019*English*Core*Base*" "Name=is-public,Values=true" --query "reverse(sort_by(Images, &CreationDate))[*].{name: Name, id: ImageId}" --output table
其中
指定您的 AWS 区域的名称。
对于断开连接的集群,Windows AMI 必须安装 EC2LaunchV2 代理版本 2.0.1643 或更高版本。有关更多信息,请参阅 AWS 文档中的 安装最新版本的 EC2Launch v2。
Machine API 是基于上游 Cluster API 项目和自定义 OpenShift Container Platform 资源的主要资源的组合。
对于 OpenShift Container Platform 4.17 集群,Machine API 在集群安装完成后执行所有节点主机配置管理操作。由于此系统,OpenShift Container Platform 4.17 在公共或私有云基础架构之上提供了一种弹性、动态配置方法。
两个主要资源是
描述节点主机的基本单元。机器具有 providerSpec
规范,该规范描述了为不同云平台提供的计算节点类型。例如,计算节点的机器类型可能会定义特定的机器类型和所需的元数据。
MachineSet
资源是计算机器的组。计算机器集与计算机器的关系类似于副本集与 Pod 的关系。如果您需要更多计算机器或必须缩减其规模,您可以更改 MachineSet
资源上的 replicas
字段以满足您的计算需求。
控制平面机器不能由计算机器集管理。 控制平面机器集为支持的控制平面机器提供类似于计算机器集为计算机器提供的管理功能。 更多信息,请参见“管理控制平面机器”。 |
以下自定义资源为您的集群添加更多功能
MachineAutoscaler
资源自动缩放云中的计算机器。您可以为指定计算机器集中的节点设置最小和最大缩放边界,机器自动缩放器将维持该节点范围。
MachineAutoscaler
对象在 ClusterAutoscaler
对象存在后生效。ClusterAutoscaler
和 MachineAutoscaler
资源均由 ClusterAutoscalerOperator
对象提供。
此资源基于上游集群自动缩放器项目。在 OpenShift Container Platform 实现中,它通过扩展计算机器集 API 与机器 API 集成。您可以使用集群自动缩放器以以下方式管理您的集群:
为核心、节点、内存和 GPU 等资源设置集群范围的缩放限制
设置优先级,以便集群优先处理 Pod,并且不会为不太重要的 Pod 启动新节点
设置缩放策略,以便您可以向上扩展节点,但不能向下扩展它们
MachineHealthCheck
资源检测机器何时不健康,将其删除,并在受支持的平台上创建新机器。
在 OpenShift Container Platform 3.11 版本中,您无法轻松推出多区域架构,因为集群不管理机器配置。从 OpenShift Container Platform 4.1 版本开始,此过程更加轻松。每个计算机器集的范围限于单个区域,因此安装程序代表您跨可用性区域发送计算机器集。然后,由于您的计算是动态的,并且在区域故障时,您始终拥有一个区域,以便您必须重新平衡机器。在没有多个可用性区域的全球 Azure 区域中,您可以使用可用性集来确保高可用性。自动缩放器在集群的整个生命周期中提供尽力而为的平衡。
此示例 YAML 定义在 Amazon Web Services (AWS) 上运行的 Windows MachineSet
对象,Windows Machine Config Operator (WMCO) 可以对此对象做出响应。
apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id> (1)
name: <infrastructure_id>-windows-worker-<zone> (2)
namespace: openshift-machine-api
spec:
replicas: 1
selector:
matchLabels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id> (1)
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-windows-worker-<zone> (2)
template:
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id> (1)
machine.openshift.io/cluster-api-machine-role: worker
machine.openshift.io/cluster-api-machine-type: worker
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-windows-worker-<zone> (2)
machine.openshift.io/os-id: Windows (3)
spec:
metadata:
labels:
node-role.kubernetes.io/worker: "" (4)
providerSpec:
value:
ami:
id: <windows_container_ami> (5)
apiVersion: awsproviderconfig.openshift.io/v1beta1
blockDevices:
- ebs:
iops: 0
volumeSize: 120
volumeType: gp2
credentialsSecret:
name: aws-cloud-credentials
deviceIndex: 0
iamInstanceProfile:
id: <infrastructure_id>-worker-profile (1)
instanceType: m5a.large
kind: AWSMachineProviderConfig
placement:
availabilityZone: <zone> (6)
region: <region> (7)
securityGroups:
- filters:
- name: tag:Name
values:
- <infrastructure_id>-worker-sg (1)
subnet:
filters:
- name: tag:Name
values:
- <infrastructure_id>-private-<zone> (1)
tags:
- name: kubernetes.io/cluster/<infrastructure_id> (1)
value: owned
userDataSecret:
name: windows-user-data (8)
namespace: openshift-machine-api
1 | 指定基于您配置集群时设置的集群 ID 的基础架构 ID。您可以通过运行以下命令获取基础架构 ID:
|
||
2 | 指定基础架构 ID、工作程序标签和区域。 | ||
3 | 将计算机器集配置为 Windows 机器。 | ||
4 | 将 Windows 节点配置为计算机器。 | ||
5 | 指定安装了容器运行时的受支持 Windows 映像的 AMI ID。
|
||
6 | 指定 AWS 区域,例如 us-east-1a 。 |
||
7 | 指定 AWS 区域,例如 us-east-1 。 |
||
8 | 在 WMCO 配置第一台 Windows 机器时创建。之后,windows-user-data 可供所有后续计算机器集使用。 |
除了安装程序创建的计算机器集之外,您还可以创建自己的计算机器集,以动态管理您选择的特定工作负载的机器计算资源。
部署 OpenShift Container Platform 集群。
安装 OpenShift CLI (oc
)。
以具有 cluster-admin
权限的用户身份登录到 oc
。
在断开连接的环境中,MachineSet
自定义资源 (CR) 中指定的映像必须安装了OpenSSH 服务器 v0.0.1.0。
创建一个包含计算机器集自定义资源 (CR) 示例的新 YAML 文件,并将其命名为 <file_name>.yaml
。
确保您设置了 <clusterID>
和 <role>
参数值。
可选:如果您不确定为特定字段设置哪个值,您可以检查集群中现有的计算机器集。
要列出集群中的计算机器集,请运行以下命令:
$ oc get machinesets -n openshift-machine-api
NAME DESIRED CURRENT READY AVAILABLE AGE
agl030519-vplxk-worker-us-east-1a 1 1 1 1 55m
agl030519-vplxk-worker-us-east-1b 1 1 1 1 55m
agl030519-vplxk-worker-us-east-1c 1 1 1 1 55m
agl030519-vplxk-worker-us-east-1d 0 0 55m
agl030519-vplxk-worker-us-east-1e 0 0 55m
agl030519-vplxk-worker-us-east-1f 0 0 55m
要查看特定计算机器集自定义资源 (CR) 的值,请运行以下命令:
$ oc get machineset <machineset_name> \
-n openshift-machine-api -o yaml
apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id> (1)
name: <infrastructure_id>-<role> (2)
namespace: openshift-machine-api
spec:
replicas: 1
selector:
matchLabels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>
template:
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machine-role: <role>
machine.openshift.io/cluster-api-machine-type: <role>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>
spec:
providerSpec: (3)
...
1 | 集群基础架构 ID。 | ||
2 | 默认节点标签。
|
||
3 | 计算机器集 CR 的 <providerSpec> 部分中的值是特定于平台的。有关 CR 中 <providerSpec> 参数的更多信息,请参阅您提供程序的示例计算机器集 CR 配置。 |
通过运行以下命令创建 MachineSet
CR:
$ oc create -f <file_name>.yaml
通过运行以下命令查看计算机器集列表:
$ oc get machineset -n openshift-machine-api
NAME DESIRED CURRENT READY AVAILABLE AGE
agl030519-vplxk-windows-worker-us-east-1a 1 1 1 1 11m
agl030519-vplxk-worker-us-east-1a 1 1 1 1 55m
agl030519-vplxk-worker-us-east-1b 1 1 1 1 55m
agl030519-vplxk-worker-us-east-1c 1 1 1 1 55m
agl030519-vplxk-worker-us-east-1d 0 0 55m
agl030519-vplxk-worker-us-east-1e 0 0 55m
agl030519-vplxk-worker-us-east-1f 0 0 55m
当新的计算机器集可用时,DESIRED
和 CURRENT
值匹配。如果计算机器集不可用,请等待几分钟,然后再次运行该命令。