16.4. 创建在 Outpost 上部署边缘计算机器的计算机器集
要在 AWS Outposts 上创建边缘计算机器,您必须使用兼容配置创建新的计算机器集。
先决条件
- 您有一个 AWS Outposts 站点。
- 您已将 OpenShift Container Platform 集群安装到 AWS 上的自定义 VPC 中。
-
您可以使用具有
cluster-admin
权限的账户访问集群。 -
已安装 OpenShift CLI(
oc
)。
流程
运行以下命令列出集群中的计算机器集:
$ oc get machinesets.machine.openshift.io -n openshift-machine-api
输出示例
NAME DESIRED CURRENT READY AVAILABLE AGE <original_machine_set_name_1> 1 1 1 1 55m <original_machine_set_name_2> 1 1 1 1 55m
- 记录现有计算机器集的名称。
使用以下方法之一创建一个包含新计算机器设置自定义资源 (CR) 的 YAML 文件:
运行以下命令,将现有计算机器集配置复制到新文件中:
$ oc get machinesets.machine.openshift.io <original_machine_set_name_1> \ -n openshift-machine-api -o yaml > <new_machine_set_name_1>.yaml
您可以使用首选文本编辑器编辑此 YAML 文件。
使用您的首选文本编辑器创建名为
<new_machine_set_name_1>.yaml
的空白 YAML 文件,并包含新计算机器集所需的值。如果您不确定为特定字段设置哪个值,您可以通过运行以下命令来查看现有计算机器集 CR 的值:
$ oc get machinesets.machine.openshift.io <original_machine_set_name_1> \ -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>-<availability_zone> 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>-<availability_zone> 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>-<availability_zone> spec: providerSpec: 3 # ...
通过编辑
<new_machine_set_name_1>.yaml
文件,将新计算机器集配置为在 Outpost 中创建边缘计算机器:AWS Outposts 的计算机器集示例
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: labels: machine.openshift.io/cluster-api-cluster: <infrastructure_id> 1 name: <infrastructure_id>-outposts-<availability_zone> 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>-outposts-<availability_zone> template: metadata: labels: machine.openshift.io/cluster-api-cluster: <infrastructure_id> machine.openshift.io/cluster-api-machine-role: outposts machine.openshift.io/cluster-api-machine-type: outposts machine.openshift.io/cluster-api-machineset: <infrastructure_id>-outposts-<availability_zone> spec: metadata: labels: node-role.kubernetes.io/outposts: "" location: outposts providerSpec: value: ami: id: <ami_id> 3 apiVersion: machine.openshift.io/v1beta1 blockDevices: - ebs: volumeSize: 120 volumeType: gp2 4 credentialsSecret: name: aws-cloud-credentials deviceIndex: 0 iamInstanceProfile: id: <infrastructure_id>-worker-profile instanceType: m5.xlarge 5 kind: AWSMachineProviderConfig placement: availabilityZone: <availability_zone> region: <region> 6 securityGroups: - filters: - name: tag:Name values: - <infrastructure_id>-worker-sg subnet: id: <subnet_id> 7 tags: - name: kubernetes.io/cluster/<infrastructure_id> value: owned userDataSecret: name: worker-user-data taints: 8 - key: node-role.kubernetes.io/outposts effect: NoSchedule
- 1
- 指定集群基础架构 ID。
- 2
- 指定计算机器设置的名称。名称由集群基础架构 ID、
outposts
角色名称和 Outpost 可用区组成。 - 3
- 指定 Amazon Machine Image (AMI) ID。
- 4
- 指定 EBS 卷类型。AWS Outposts 需要 gp2 卷。
- 5
- 指定 AWS 实例类型。您必须使用 Outpost 中配置的实例类型。
- 6
- 指定 Outpost 可用区存在的 AWS 区域。
- 7
- 指定 Outpost 的专用子网。
- 8
- 指定污点,以防止将工作负载调度到具有
node-role.kubernetes.io/outposts
标签的节点上。要在 Outpost 中调度用户工作负载,您必须在应用程序的Deployment
资源中指定对应的容限。
- 保存您的更改。
运行以下命令来创建计算机器设置 CR:
$ oc create -f <new_machine_set_name_1>.yaml
验证
要验证是否已创建计算机器设置,请运行以下命令列出集群中的计算机器集:
$ oc get machinesets.machine.openshift.io -n openshift-machine-api
输出示例
NAME DESIRED CURRENT READY AVAILABLE AGE <new_machine_set_name_1> 1 1 1 1 4m12s <original_machine_set_name_1> 1 1 1 1 55m <original_machine_set_name_2> 1 1 1 1 55m
要列出由新计算机器集管理的机器,请运行以下命令:
$ oc get -n openshift-machine-api machines.machine.openshift.io \ -l machine.openshift.io/cluster-api-machineset=<new_machine_set_name_1>
输出示例
NAME PHASE TYPE REGION ZONE AGE <machine_from_new_1> Provisioned m5.xlarge us-east-1 us-east-1a 25s <machine_from_new_2> Provisioning m5.xlarge us-east-1 us-east-1a 25s
要验证由新计算机器集创建的机器是否具有正确的配置,请运行以下命令检查 CR 中的相关字段是否有新机器:
$ oc describe machine <machine_from_new_1> -n openshift-machine-api