$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
您可以通过更新控制平面机器集中的值来更改 Microsoft Azure 控制平面机器的配置并启用功能。保存对控制平面机器集的更新后,控制平面机器集运算符将根据您配置的更新策略更新控制平面机器。
以下示例 YAML 代码段显示了 Azure 集群的提供程序规范和故障域配置。
为现有集群创建控制平面机器集时,提供程序规范必须与安装程序创建的控制平面Machine
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:
acceleratedNetworking: true
apiVersion: machine.openshift.io/v1beta1
credentialsSecret:
name: azure-cloud-credentials (1)
namespace: openshift-machine-api
diagnostics: {}
image: (2)
offer: ""
publisher: ""
resourceID: /resourceGroups/<cluster_id>-rg/providers/Microsoft.Compute/galleries/gallery_<cluster_id>/images/<cluster_id>-gen2/versions/412.86.20220930 (3)
sku: ""
version: ""
internalLoadBalancer: <cluster_id>-internal (4)
kind: AzureMachineProviderSpec (5)
location: <region> (6)
managedIdentity: <cluster_id>-identity
metadata:
creationTimestamp: null
name: <cluster_id>
networkResourceGroup: <cluster_id>-rg
osDisk: (7)
diskSettings: {}
diskSizeGB: 1024
managedDisk:
storageAccountType: Premium_LRS
osType: Linux
publicIP: false
publicLoadBalancer: <cluster_id> (8)
resourceGroup: <cluster_id>-rg
subnet: <cluster_id>-master-subnet (9)
userDataSecret:
name: master-user-data (10)
vmSize: Standard_D8s_v3
vnet: <cluster_id>-vnet
zone: "1" (11)
1 | 指定集群的密钥名称。请勿更改此值。 | ||
2 | 指定控制平面机器集的镜像详细信息。 | ||
3 | 指定与您的实例类型兼容的镜像。安装程序创建的 Hyper-V 第 2 代镜像具有-gen2 后缀,而第 1 代镜像则具有相同名称,没有后缀。 |
||
4 | 指定控制平面的内部负载均衡器。此字段可能未预先配置,但在ControlPlaneMachineSet 和控制平面Machine CR 中都需要。 |
||
5 | 指定云提供商平台类型。请勿更改此值。 | ||
6 | 指定放置控制平面机器的区域。 | ||
7 | 指定控制平面的磁盘配置。 | ||
8 | 指定控制平面的公共负载均衡器。
|
||
9 | 指定控制平面的子网。 | ||
10 | 指定控制平面用户数据密钥。请勿更改此值。 | ||
11 | 指定所有故障域都使用单个区域的集群的区域配置。
|
控制平面机器集的故障域概念类似于现有的 Azure Azure 可用性区域概念。ControlPlaneMachineSet
CR 会尽可能地跨多个故障域分配控制平面机器。
在控制平面机器集中配置 Azure 故障域时,必须指定可用性区域名称。Azure 集群使用跨多个区域的单个子网。
apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
metadata:
name: cluster
namespace: openshift-machine-api
spec:
# ...
template:
# ...
machines_v1beta1_machine_openshift_io:
failureDomains:
azure:
- zone: "1" (1)
- zone: "2"
- zone: "3"
platform: Azure (2)
# ...
1 | 每个zone 实例指定一个用于故障域的 Azure 可用性区域。
|
||
2 | 指定云提供商平台名称。请勿更改此值。 |
您可以通过更新控制平面机器集中的值来启用功能。
将集群部署到 Microsoft Azure 后,您可以重新配置 API 服务器以仅使用私有区域。
安装 OpenShift CLI (oc
)。
以具有admin
权限的用户身份访问 Web 控制台。
在云提供商的 Web 门户或控制台中,执行以下操作
找到并删除相应的负载均衡器组件
对于 Azure,请删除公共负载均衡器的api-internal-v4
规则。
对于 Azure,将 Ingress 控制器端点发布范围配置为Internal
。有关更多信息,请参阅“将 Ingress 控制器端点发布范围配置为 Internal”。
对于 Azure 公共负载均衡器,如果您将 Ingress 控制器端点发布范围配置为Internal
并且公共负载均衡器中没有现有的入站规则,则必须显式创建出站规则以提供后端地址池的出站流量。有关更多信息,请参阅有关添加出站规则的 Microsoft Azure 文档。
删除公共区域中的api.$clustername
DNS 条目。
您可以创建一个在 Azure 上运行的机器集,该机器集部署使用 Azure 市场产品的机器。要使用此产品,您必须首先获取 Azure 市场映像。获取映像时,请考虑以下事项
虽然映像相同,但 Azure 市场发布者因地区而异。如果您位于北美,请指定redhat
作为发布者。如果您位于 EMEA,请指定redhat-limited
作为发布者。
此产品包括rh-ocp-worker
SKU 和rh-ocp-worker-gen1
SKU。rh-ocp-worker
SKU 代表 Hyper-V 第 2 代 VM 映像。OpenShift Container Platform 中使用的默认实例类型与第 2 代兼容。如果您计划使用仅与第 1 代兼容的实例类型,请使用与rh-ocp-worker-gen1
SKU 关联的映像。rh-ocp-worker-gen1
SKU 代表 Hyper-V 第 1 代 VM 映像。
在具有 64 位 ARM 实例的集群上不支持使用 Azure 市场安装映像。 |
您已安装 Azure CLI 客户端(az)
。
您的 Azure 帐户有权使用此产品,并且您已使用 Azure CLI 客户端登录到此帐户。
通过运行以下命令之一来显示所有可用的 OpenShift Container Platform 映像
北美
$ az vm image list --all --offer rh-ocp-worker --publisher redhat -o table
Offer Publisher Sku Urn Version
------------- -------------- ------------------ -------------------------------------------------------------- -----------------
rh-ocp-worker RedHat rh-ocp-worker RedHat:rh-ocp-worker:rh-ocp-worker:4.15.2024072409 4.15.2024072409
rh-ocp-worker RedHat rh-ocp-worker-gen1 RedHat:rh-ocp-worker:rh-ocp-worker-gen1:4.15.2024072409 4.15.2024072409
EMEA
$ az vm image list --all --offer rh-ocp-worker --publisher redhat-limited -o table
Offer Publisher Sku Urn Version
------------- -------------- ------------------ -------------------------------------------------------------- -----------------
rh-ocp-worker redhat-limited rh-ocp-worker redhat-limited:rh-ocp-worker:rh-ocp-worker:4.15.2024072409 4.15.2024072409
rh-ocp-worker redhat-limited rh-ocp-worker-gen1 redhat-limited:rh-ocp-worker:rh-ocp-worker-gen1:4.15.2024072409 4.15.2024072409
使用可用于计算和控制平面节点的最新映像。如有必要,您的 VM 将在安装过程中自动升级。 |
通过运行以下命令之一来检查您的产品的映像
北美
$ az vm image show --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>
EMEA
$ az vm image show --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>
通过运行以下命令之一来查看产品的条款
北美
$ az vm image terms show --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>
EMEA
$ az vm image terms show --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>
通过运行以下命令之一来接受产品的条款
北美
$ az vm image terms accept --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>
EMEA
$ az vm image terms accept --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>
记录您产品的映像详细信息,特别是publisher
、offer
、sku
和version
的值。
使用您产品的映像详细信息,将以下参数添加到机器集 YAML 文件的providerSpec
部分
providerSpec
映像值providerSpec:
value:
image:
offer: rh-ocp-worker
publisher: redhat
resourceID: ""
sku: rh-ocp-worker
type: MarketplaceWithPlan
version: 413.92.2023101700
您可以在机器集创建的 Azure 机器上启用启动诊断。
拥有现有的 Microsoft Azure 集群。
将适用于您的存储类型的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 上运行的机器集,该机器集部署具有超高速磁盘的机器。超高速磁盘是高性能存储,旨在用于最苛刻的数据工作负载。
您可以通过编辑机器集 YAML 文件来部署在 Azure 上具有超高速磁盘的机器。
拥有现有的 Microsoft Azure 集群。
使用以下命令在openshift-machine-api
命名空间中创建自定义密钥,使用master
数据密钥
$ oc -n openshift-machine-api \
get secret <role>-user-data \ (1)
--template='{{index .data.userData | base64decode}}' | jq > userData.txt (2)
1 | 将<role> 替换为master 。 |
2 | 指定userData.txt 作为新自定义密钥的名称。 |
在文本编辑器中,打开userData.txt
文件并找到文件中的最后一个}
字符。
在紧邻的前一行添加,
。
在,
之后创建新行并添加以下配置详细信息
"storage": {
"disks": [ (1)
{
"device": "/dev/disk/azure/scsi1/lun0", (2)
"partitions": [ (3)
{
"label": "lun0p1", (4)
"sizeMiB": 1024, (5)
"startMiB": 0
}
]
}
],
"filesystems": [ (6)
{
"device": "/dev/disk/by-partlabel/lun0p1",
"format": "xfs",
"path": "/var/lib/lun0p1"
}
]
},
"systemd": {
"units": [ (7)
{
"contents": "[Unit]\nBefore=local-fs.target\n[Mount]\nWhere=/var/lib/lun0p1\nWhat=/dev/disk/by-partlabel/lun0p1\nOptions=defaults,pquota\n[Install]\nWantedBy=local-fs.target\n", (8)
"enabled": true,
"name": "var-lib-lun0p1.mount"
}
]
}
1 | 要作为超高速磁盘附加到节点的磁盘的配置详细信息。 |
2 | 指定在您使用的机器集的dataDisks 节中定义的lun 值。例如,如果机器集包含lun: 0 ,则指定lun0 。您可以通过在此配置文件中指定多个"disks" 条目来初始化多个数据磁盘。如果您指定多个"disks" 条目,请确保每个条目的lun 值与机器集中的值匹配。 |
3 | 磁盘上新分区的配置详细信息。 |
4 | 指定分区的标签。您可能会发现使用分层名称(例如lun0p1 表示lun0 的第一个分区)很有帮助。 |
5 | 指定分区的总大小(以 MiB 为单位)。 |
6 | 指定格式化分区时要使用的文件系统。使用分区标签指定分区。 |
7 | 指定在启动时挂载分区的systemd 单元。使用分区标签指定分区。您可以通过在此配置文件中指定多个"partitions" 条目来创建多个分区。如果您指定多个"partitions" 条目,则必须为每个条目指定一个systemd 单元。 |
8 | 对于Where ,指定storage.filesystems.path 的值。对于What ,指定storage.filesystems.device 的值。 |
使用以下命令将禁用模板值提取到名为disableTemplating.txt
的文件中
$ oc -n openshift-machine-api get secret <role>-user-data \ (1)
--template='{{index .data.disableTemplating | base64decode}}' | jq > disableTemplating.txt
1 | 将<role> 替换为master 。 |
组合userData.txt
文件和disableTemplating.txt
文件以创建数据密钥文件,方法是运行以下命令
$ oc -n openshift-machine-api create secret generic <role>-user-data-x5 \ (1)
--from-file=userData=userData.txt \
--from-file=disableTemplating=disableTemplating.txt
1 | 对于<role>-user-data-x5 ,指定密钥的名称。将<role> 替换为master 。 |
通过运行以下命令来编辑您的控制平面机器集 CR
$ oc --namespace openshift-machine-api edit controlplanemachineset.machine.openshift.io cluster
在指示的位置添加以下行
apiVersion: machine.openshift.io/v1beta1
kind: ControlPlaneMachineSet
spec:
template:
spec:
metadata:
labels:
disk: ultrassd (1)
providerSpec:
value:
ultraSSDCapability: Enabled (2)
dataDisks: (2)
- nameSuffix: ultrassd
lun: 0
diskSizeGB: 4
deletionPolicy: Delete
cachingType: None
managedDisk:
storageAccountType: UltraSSD_LRS
userDataSecret:
name: <role>-user-data-x5 (3)
1 | 指定要用于选择由此机器集创建的节点的标签。此步骤为此值使用disk.ultrassd 。 |
2 | 这些行启用超高速磁盘的使用。对于dataDisks ,包括整个节。 |
3 | 指定前面创建的用户数据密钥。将<role> 替换为master 。 |
保存您的更改。
对于使用默认RollingUpdate
更新策略的集群,Operator会自动将更改传播到您的控制平面配置。
对于配置为使用OnDelete
更新策略的集群,您必须手动替换控制平面机器。
运行以下命令验证机器是否已创建
$ oc get machines
机器应处于运行中
状态。
对于正在运行并已附加节点的机器,请运行以下命令验证分区
$ oc debug node/<node-name> -- chroot /host lsblk
在此命令中,oc debug node/<node-name>
在节点<node-name>
上启动一个调试 shell 并传递一个带有--
的命令。传递的命令chroot /host
提供对底层主机 OS 二进制文件的访问权限,lsblk
显示附加到主机 OS 机器上的块设备。
要在控制平面上使用超大磁盘,请重新配置您的工作负载以使用控制平面的超大磁盘挂载点。
使用本节中的信息来了解和恢复您可能遇到的问题。
如果在机器集中指定了ultraSSDCapability
参数的错误配置,则机器预配将失败。
例如,如果ultraSSDCapability
参数设置为Disabled
,但在dataDisks
参数中指定了超大磁盘,则会显示以下错误消息
StorageAccountType UltraSSD_LRS can be used only when additionalCapabilities.ultraSSDEnabled is set.
要解决此问题,请验证您的机器集配置是否正确。
如果在机器集中指定了与超大磁盘不兼容的区域、可用性区域或实例大小,则机器预配将失败。检查日志中是否存在以下错误消息
failed to create vm <machine_name>: failure sending request for machine <machine_name>: cannot create vm: compute.VirtualMachinesClient#CreateOrUpdate: Failure sending request: StatusCode=400 -- Original Error: Code="BadRequest" Message="Storage Account type 'UltraSSD_LRS' is not supported <more_information_about_why>."
要解决此问题,请验证您是否在受支持的环境中使用此功能,以及您的机器集配置是否正确。
您可以向 Azure 提供加密密钥以加密静止状态下托管磁盘上的数据。您可以使用机器 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
对 Azure 虚拟机使用可信启动仅是技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能提供对即将推出的产品功能的早期访问,使客户能够在开发过程中测试功能并提供反馈。 有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅技术预览功能支持范围。 |
OpenShift Container Platform 4.17 支持 Azure 虚拟机 (VM) 的可信启动。通过编辑机器集 YAML 文件,您可以配置机器集为其部署的机器使用的可信启动选项。例如,您可以将这些机器配置为使用 UEFI 安全功能,例如安全启动或专用的虚拟可信平台模块 (vTPM) 实例。
某些功能组合会导致无效配置。 |
安全启动[1] | vTPM[2] | 有效配置 |
---|---|---|
已启用 |
已启用 |
是 |
已启用 |
已禁用 |
是 |
已启用 |
已省略 |
是 |
已禁用 |
已启用 |
是 |
已省略 |
已启用 |
是 |
已禁用 |
已禁用 |
否 |
已省略 |
已禁用 |
否 |
已省略 |
已省略 |
否 |
使用secureBoot
字段。
使用virtualizedTrustedPlatformModule
字段。
有关相关功能和功能的更多信息,请参阅 Microsoft Azure 关于Azure 虚拟机的可信启动的文档。
在文本编辑器中,打开现有机器集的 YAML 文件或创建一个新文件。
编辑providerSpec
字段下的以下部分以提供有效的配置
apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
# ...
spec:
template:
machines_v1beta1_machine_openshift_io:
spec:
providerSpec:
value:
securityProfile:
settings:
securityType: TrustedLaunch (1)
trustedLaunch:
uefiSettings: (2)
secureBoot: Enabled (3)
virtualizedTrustedPlatformModule: Enabled (4)
# ...
1 | 启用对 Azure 虚拟机的可信启动的使用。此值对于所有有效配置都是必需的。 |
2 | 指定要使用的 UEFI 安全功能。此部分对于所有有效配置都是必需的。 |
3 | 启用 UEFI 安全启动。 |
4 | 启用 vTPM 的使用。 |
在 Azure 门户上,查看机器集部署的机器的详细信息,并验证可信启动选项是否与您配置的值匹配。
使用 Azure 机密虚拟机仅是技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能提供对即将推出的产品功能的早期访问,使客户能够在开发过程中测试功能并提供反馈。 有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅技术预览功能支持范围。 |
OpenShift Container Platform 4.17 支持 Azure 机密虚拟机 (VM)。
目前 64 位 ARM 架构不支持机密 VM。 |
通过编辑机器集 YAML 文件,您可以配置机器集为其部署的机器使用的机密 VM 选项。例如,您可以将这些机器配置为使用 UEFI 安全功能,例如安全启动或专用的虚拟可信平台模块 (vTPM) 实例。
并非所有实例类型都支持机密 VM。请勿将配置为使用机密 VM 的控制平面机器集的实例类型更改为不兼容的类型。使用不兼容的实例类型可能会导致您的集群变得不稳定。 |
有关相关功能和功能的更多信息,请参阅 Microsoft Azure 文档关于机密虚拟机。
在文本编辑器中,打开现有机器集的 YAML 文件或创建一个新文件。
编辑providerSpec
字段下的以下部分
apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
# ...
spec:
template:
spec:
providerSpec:
value:
osDisk:
# ...
managedDisk:
securityProfile: (1)
securityEncryptionType: VMGuestStateOnly (2)
# ...
securityProfile: (3)
settings:
securityType: ConfidentialVM (4)
confidentialVM:
uefiSettings: (5)
secureBoot: Disabled (6)
virtualizedTrustedPlatformModule: Enabled (7)
vmSize: Standard_DC16ads_v5 (8)
# ...
1 | 使用机密虚拟机时,指定托管磁盘的安全配置文件设置。 |
2 | 启用 Azure VM 来宾状态 (VMGS) Blob 的加密。此设置需要使用 vTPM。 |
3 | 指定机密虚拟机的安全配置文件设置。 |
4 | 启用机密虚拟机的使用。此值对于所有有效配置都是必需的。 |
5 | 指定要使用的 UEFI 安全功能。此部分对于所有有效配置都是必需的。 |
6 | 禁用 UEFI 安全启动。 |
7 | 启用 vTPM 的使用。 |
8 | 指定支持机密虚拟机的实例类型。 |
在 Azure 门户上,查看机器集部署的机器的详细信息,并验证机密虚拟机选项是否与您配置的值匹配。
加速网络使用单根 I/O 虚拟化 (SR-IOV) 为 Microsoft Azure VM 提供到交换机的更直接路径。这增强了网络性能。此功能可在安装后启用。
在决定是否使用加速网络时,请考虑以下限制
加速网络仅在机器 API 可运行的集群上受支持。
加速网络需要包含至少四个 vCPU 的 Azure VM 大小。要满足此要求,您可以更改机器集中的vmSize
值。有关 Azure VM 大小的信息,请参阅Microsoft Azure 文档。
OpenShift Container Platform 4.17 及更高版本支持在 Microsoft Azure 集群上使用容量预留组进行按需容量预留。
您可以配置机器集以在与您定义的容量请求参数匹配的任何可用资源上部署机器。这些参数指定您要预留的 VM 大小、区域和实例数。如果您的 Azure 订阅配额可以容纳容量请求,则部署将成功。
有关此 Azure 实例类型的更多信息(包括限制和建议的使用案例),请参阅 Microsoft Azure 文档关于按需容量预留。
您无法更改机器集的现有容量预留配置。要使用不同的容量预留组,您必须替换机器集和先前机器集部署的机器。 |
您可以使用cluster-admin
权限访问集群。
您已安装 OpenShift CLI (oc
)。
您已创建容量预留组。
有关更多信息,请参阅 Microsoft Azure 文档创建容量预留。
在文本编辑器中,打开现有机器集的 YAML 文件或创建一个新文件。
编辑providerSpec
字段下的以下部分
apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
# ...
spec:
template:
machines_v1beta1_machine_openshift_io:
spec:
providerSpec:
value:
capacityReservationGroupID: <capacity_reservation_group> (1)
# ...
1 | 指定您希望机器集在其上部署机器的容量预留组的 ID。 |
要验证机器部署,请列出机器集创建的机器,方法是运行以下命令
$ oc get machine \
-n openshift-machine-api \
-l machine.openshift.io/cluster-api-machine-role=master
在输出中,验证列出机器的特性是否与您的容量预留的参数匹配。
您可以通过将acceleratedNetworking
添加到机器集 YAML 文件来在 Azure 上启用加速网络。
拥有一个机器 API 可运行的现有 Microsoft Azure 集群。
将以下内容添加到providerSpec
字段
providerSpec:
value:
acceleratedNetworking: true (1)
vmSize: <azure-vm-size> (2)
1 | 此行启用加速网络。 |
2 | 指定包含至少四个 vCPU 的 Azure VM 大小。有关 VM 大小的信息,请参阅Microsoft Azure 文档。 |
在 Microsoft Azure 门户上,查看机器集配置的机器的**网络**设置页面,并验证加速网络
字段是否设置为已启用
。