你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure Red Hat OpenShift 将工作器节点隔离到不同的子网中

本文介绍如何在部署过程中将工作器节点隔离到不同的专用子网中。 将辅助角色节点分离到不同的专用子网中,可以满足 Azure Red Hat OpenShif 上部署的各种服务和应用程序的特定访问控制要求。

例如,你可能想要在特定子网内的专用工作器节点上运行特定的入口控制器,同时让用于工作负载(基础设施和其他工作节点)的其余 Kubernetes 节点位于不同的子网内,如下所示:

示例子网配置的屏幕截图。

注释

作为 Azure Red Hat OpenShif 的一部分,主节点和辅助角色节点不能部署在同一专用子网中。

若要将工作器节点隔离到不同的子网中,需要执行两个主要步骤:

  1. 部署群集。

  2. 创建与这些子网关联的相应子网和计算机组。

部署群集

有关执行此步骤的说明,请参阅创建 Azure Red Hat OpenShift 4 群集

创建子网和关联的计算机组

部署群集后,需要创建额外的子网作为同一整个虚拟网络的一部分,并为这些子网创建新计算机集。

步骤 1:创建子网

创建子网作为部署的当前虚拟网络的一部分。 确保所有子网都已更新至Microsoft.ContainerRegistry

“子网”窗口的屏幕截图,其中突出显示了服务终结点。

步骤 2:登录到 jumphost

注释

如果有用于登录到群集的备用方法,则此步骤是可选的。

使用以下命令登录到 jumphost:

oc login $apiServer -u kubeadmin -p <kubeadmin password>

使用 oc get nodesoc get machineSets -n openshift-machine-api 命令验证节点和计算机组的数量,如以下示例所示:

$ oc get nodes
NAME                                          STATUS   ROLES    AGE   VERSION
simon-aro-st5rm-master-0                      Ready    master   66m   v1.19.0+e405995
simon-aro-st5rm-master-1                      Ready    master   67m   v1.19.0+e405995
simon-aro-st5rm-master-2                      Ready    master   67m   v1.19.0+e405995
simon-aro-st5rm-worker-useast1-h6kzn   Ready    worker   59m   v1.19.0+e405995
simon-aro-st5rm-worker-useast2-48zsm   Ready    worker   59m   v1.19.0+e405995
simon-aro-st5rm-worker-useast3-rvzpn   Ready    worker   59m   v1.19.0+e405995
# oc get machineSets --all-namespaces
NAMESPACE               NAME                                    DESIRED   CURRENT   READY   AVAILABLE   AGE
openshift-machine-api   simon-aro-st5rm-worker-useast1   1         1         1       1           69m
openshift-machine-api   simon-aro-st5rm-worker-useast2   1         1         1       1           69m
openshift-machine-api   simon-aro-st5rm-worker-useast3   1         1         1       1           69m

步骤 3:检索 openshift-machine-api project/namespace 中的计算机组

通过检索计算机组,可以将所有相关参数放入要在下一步中使用的 machineSet 模板中。

oc describe machineSet simon-aro-st5rm-worker-useast1 > aro-worker-az1.yaml

步骤 4:新建 machineSet YAML 文件并将其应用到群集

为 machineSet YAML 文件应用以下模板。 根据上一节中检索的值更改使用 X 显示的参数。 例如,machine.openshift.io/cluster-api-cluster: XXX-XXX-XXX 可能是 machine.openshift.io/cluster-api-cluster: machine-aro-st3mr

==============MachineSet Template====================
apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
  labels:
    machine.openshift.io/cluster-api-cluster: <INFRASTRUCTURE_ID>
    machine.openshift.io/cluster-api-machine-role: worker
    machine.openshift.io/cluster-api-machine-type: worker
  name: XXX-XXX-XXX-XXX-XXX
  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>-infra-<REGION><ZONE>
  template:
    metadata:
      creationTimestamp: null
      labels:
        machine.openshift.io/cluster-api-cluster: <INFRASTRUCTURE_ID>
        machine.openshift.io/cluster-api-machine-role: worker
        machine.openshift.io/cluster-api-machine-type: worker
        machine.openshift.io/cluster-api-machineset: <INFRASTRUCTURE_ID>-infra-<REGION><ZONE>
    spec:
      metadata:
        creationTimestamp: null
        labels:
          node-role.kubernetes.io/<role>: ""            #Example: worker,infra
      providerSpec:
        value:
          apiVersion: azureproviderconfig.openshift.io/v1beta1
          credentialsSecret:
            name: azure-cloud-credentials
            namespace: openshift-machine-api
          image:
            offer: aro4
            publisher: azureopenshift
            resourceID: ""
            sku: <SKU>
            version: <VERSION>
          kind: AzureMachineProviderSpec
          location: <REGION>
          metadata:
            creationTimestamp: null
          natRule: null
          networkResourceGroup: <NETWORK_RESOURCE_GROUP>
          osDisk:
            diskSizeGB: 128
            managedDisk:
              storageAccountType: Premium_LRS
            osType: Linux
          publicIP: false
          publicLoadBalancer: <LOADBALANCER_NAME>
          resourceGroup: <CLUSTER_RESOURCE_GROUP>
          subnet: <SUBNET_NAME> 
          userDataSecret:
            name: worker-user-data
          vmSize: Standard_D4s_v3
          vnet: <VNET_NAME>
          zone: <ZONE>

步骤 5:应用计算机组

使用 oc apply -f <filename.yaml> 命令应用在上一节中创建的计算机组,如以下示例所示:

[root@jumphost-new ARO-cluster-Private]# oc apply -f aro-new-worker-az1.yaml
machineset.machine.openshift.io/simon-aro-qpsl5-worker-useast4 created

步骤 6:验证计算机组和节点

应用 YAML 文件后,可以使用 oc get machineSetsoc get nodes 命令验证计算机组和节点的创建,如以下示例所示:

[root@jumphost-new ARO-cluster-Private]# oc get machineSet

NAME                                    DESIRED   CURRENT   READY   AVAILABLE   AGE
simon-aro-st5rm-worker-useast1   1         1         1       1           142m
simon-aro-st5rm-worker-useast2   1         1         1       1           142m
simon-aro-st5rm-worker-useast3   1         1         1       1           142m
simon-aro-st5rm-worker-useast4   1         1                             46s

再过几分钟,系统就会显示新的计算机组和节点:

[root@jumphost-new ARO-cluster-Private]# oc get machineSet

NAME                                    DESIRED   CURRENT   READY   AVAILABLE   AGE
simon-aro-st5rm-worker-useast1   1         1         1       1           148m
simon-aro-st5rm-worker-useast2   1         1         1       1           148m
simon-aro-st5rm-worker-useast3   1         1         1       1           148m
simon-aro-st5rm-worker-useast4   1         1         1       1           6m11s

[root@jumphost-new ARO-cluster-Private]# oc get nodes

NAME                                          STATUS   ROLES    AGE    VERSION
simon-aro-st5rm-master-0                      Ready    master   147m   v1.19.0+e405995
simon-aro-st5rm-master-1                      Ready    master   147m   v1.19.0+e405995
simon-aro-st5rm-master-2                      Ready    master   147m   v1.19.0+e405995
simon-aro-st5rm-worker-useast1-h6kzn   Ready    worker   139m   v1.19.0+e405995
simon-aro-st5rm-worker-useast2-48zsm   Ready    worker   139m   v1.19.0+e405995
simon-aro-st5rm-worker-useast3-rvzpn   Ready    worker   139m   v1.19.0+e405995
simon-aro-st5rm-worker-useast4-qrsgx   Ready    worker   104s   v1.19.0+e405995