$ oc get infrastructure cluster -o jsonpath='{.status.platform}'
您可以创建不同的计算机会集以在 Microsoft Azure Stack Hub 上的 OpenShift Container Platform 集群中服务于特定目的。例如,您可以创建基础设施机器集和相关机器,以便您可以将支持的工作负载迁移到新机器。
您只能在机器 API 正在运行的集群中使用高级机器管理和缩放功能。具有用户预置基础设施的集群需要额外的验证和配置才能使用机器 API。 基础设施平台类型为 要查看集群的平台类型,请运行以下命令
|
此示例 YAML 定义了一个在区域的1
个 Microsoft Azure 区域中运行的计算机会集,并创建标记为node-role.kubernetes.io/<role>: ""
的节点。
在此示例中,<infrastructure_id>
是基于您在预配集群时设置的集群 ID 的基础设施 ID 标签,而<role>
是要添加的节点标签。
apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id> (1)
machine.openshift.io/cluster-api-machine-role: <role> (2)
machine.openshift.io/cluster-api-machine-type: <role> (2)
name: <infrastructure_id>-<role>-<region> (3)
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>-<role>-<region> (3)
template:
metadata:
creationTimestamp: null
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id> (1)
machine.openshift.io/cluster-api-machine-role: <role> (2)
machine.openshift.io/cluster-api-machine-type: <role> (2)
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>-<region> (3)
spec:
metadata:
creationTimestamp: null
labels:
node-role.kubernetes.io/<role>: "" (2)
providerSpec:
value:
apiVersion: machine.openshift.io/v1beta1
availabilitySet: <availability_set> (6)
credentialsSecret:
name: azure-cloud-credentials
namespace: openshift-machine-api
image:
offer: ""
publisher: ""
resourceID: /resourceGroups/<infrastructure_id>-rg/providers/Microsoft.Compute/images/<infrastructure_id> (1)
sku: ""
version: ""
internalLoadBalancer: ""
kind: AzureMachineProviderSpec
location: <region> (4)
managedIdentity: <infrastructure_id>-identity (1)
metadata:
creationTimestamp: null
natRule: null
networkResourceGroup: ""
osDisk:
diskSizeGB: 128
managedDisk:
storageAccountType: Premium_LRS
osType: Linux
publicIP: false
publicLoadBalancer: ""
resourceGroup: <infrastructure_id>-rg (1)
sshPrivateKey: ""
sshPublicKey: ""
subnet: <infrastructure_id>-<role>-subnet (1) (2)
userDataSecret:
name: worker-user-data (2)
vmSize: Standard_DS4_v2
vnet: <infrastructure_id>-vnet (1)
zone: "1" (5)
1 | 指定基于您在预配集群时设置的集群 ID 的基础设施 ID。如果您安装了 OpenShift CLI,则可以通过运行以下命令获取基础设施 ID
您可以通过运行以下命令获取子网
您可以通过运行以下命令获取虚拟网络
|
2 | 指定要添加的节点标签。 |
3 | 指定基础设施 ID、节点标签和区域。 |
4 | 指定放置机器的区域。 |
5 | 指定要在其上放置机器的区域内的区域。请确保您的区域支持您指定的区域。 |
6 | 指定集群的可用性集。 |
除了安装程序创建的计算机会集之外,您还可以创建自己的计算机会集来动态管理您选择的特定工作负载的机器计算资源。
部署 OpenShift Container Platform 集群。
安装 OpenShift CLI (oc
)。
以具有cluster-admin
权限的用户身份登录到oc
。
创建一个可用性集,用于在其中部署 Azure Stack Hub 计算机会。
创建一个新的YAML文件,其中包含计算机集合自定义资源 (CR) 示例,并将其命名为<file_name>.yaml
。
确保设置<availabilitySet>
、<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-infra-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
值匹配。如果计算机器集合不可用,请等待几分钟然后再次运行该命令。
您可以使用机器集合标签来指示集群自动缩放器可以使用哪些机器来部署启用 GPU 的节点。
您的集群使用集群自动缩放器。
在您要为集群自动缩放器创建机器以用于部署启用 GPU 的节点的机器集合上,添加cluster-api/accelerator
标签
apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
name: machine-set-name
spec:
template:
spec:
metadata:
labels:
cluster-api/accelerator: nvidia-t4 (1)
1 | 指定您选择的标签,该标签由字母数字字符、- 、_ 或. 组成,并以字母数字字符开头和结尾。例如,您可以使用nvidia-t4 表示 Nvidia T4 GPU,或使用nvidia-a10g 表示 A10G GPU。
|
您可以启用机器集合创建的 Azure 机器上的启动诊断。
拥有现有的 Microsoft Azure Stack Hub 集群。
将适用于您的存储类型的diagnostics
配置添加到机器集合 YAML 文件中的providerSpec
字段
对于 Azure 托管存储帐户
providerSpec:
diagnostics:
boot:
storageAccountType: AzureManaged (1)
1 | 指定 Azure 托管存储帐户。 |
对于 Azure 非托管存储帐户
providerSpec:
diagnostics:
boot:
storageAccountType: CustomerManaged (1)
customerManaged:
storageAccountURI: https://<storage-account>.blob.core.windows.net (2)
1 | 指定 Azure 非托管存储帐户。 |
2 | 将<storage-account> 替换为您的存储帐户的名称。 |
仅支持 Azure Blob 存储数据服务。 |
在 Microsoft Azure 门户上,查看机器集合部署的机器的**启动诊断**页面,并验证您可以看到该机器的串行日志。
您可以向 Azure 提供加密密钥以加密静止状态下托管磁盘上的数据。您可以使用 Machine API 启用使用客户管理密钥的服务器端加密。
使用客户管理密钥需要 Azure Key Vault、磁盘加密集和加密密钥。磁盘加密集必须位于云凭据运算符 (CCO) 已授予权限的资源组中。如果不是,则需要在磁盘加密集上授予额外的读取器角色。
在机器集合 YAML 文件的providerSpec
字段下配置磁盘加密集。例如
providerSpec:
value:
osDisk:
diskSizeGB: 128
managedDisk:
diskEncryptionSet:
id: /subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.Compute/diskEncryptionSets/<disk_encryption_set_name>
storageAccountType: Premium_LRS