Compartir a través de


Separar nodos de trabajo en diferentes subredes con Red Hat OpenShift en Azure

En este artículo se muestra cómo separar los nodos de trabajo en diferentes subredes privadas como parte de una implementación de ARO. La separación de nodos de trabajo en diferentes subredes privadas permite cumplir requisitos de control de acceso específicos para varios servicios y aplicaciones implementados en ARO.

Por ejemplo, puede que quiera ejecutar controladores de entrada específicos en nodos de trabajo dedicados dentro de una subred específica, mientras que el resto de los nodos de Kubernetes para cargas de trabajo (infraestructura y otros trabajos) están dentro de una subred diferente, como se muestra a continuación:

Captura de pantalla de una configuración de subred de ejemplo.

Nota:

Como parte de ARO, los nodos maestros y de trabajo no se pueden implementar en la misma subred privada.

Para separar los nodos de trabajo en subredes diferentes, es necesario realizar dos pasos principales:

  1. Implemente un clúster de ARO.

  2. Cree las subredes y conjuntos de máquinas adecuados asociados a esas subredes.

Implementación de un clúster de ARO

Consulte Creación de un clúster de Red Hat OpenShift en Azure 4 para obtener instrucciones sobre cómo realizar este paso.

Crear las subredes y los conjuntos de máquinas asociados

Una vez implementado el clúster de ARO, deberá crear subredes adicionales como parte de la misma red virtual general y crear nuevos conjuntos de máquinas para esas subredes.

Paso 1: Crear las subredes

Cree las subredes como parte de la red virtual actual en la que se implementa ARO. Asegúrese de que todas las subredes están actualizadas a Microsoft.ContainerRegistry para Puntos de conexión de servicio.

Captura de pantalla de la ventana Subredes con puntos de conexión de servicio resaltados.

Paso 2: Iniciar sesión en jumphost

Nota:

Este paso es opcional si tiene un método alternativo para iniciar sesión en el clúster de ARO.

Use el siguiente comando para iniciar sesión en jumphost:

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

Verifique el número de nodos y conjuntos de máquinas usando los comandos oc get nodes y oc get machineSets -n openshift-machine-api, como se muestra en los siguientes ejemplos:

$ 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

Paso 3: Recuperar los conjuntos de máquinas en openshift-machine-api project/namespace

La recuperación de los conjuntos de máquinas permite obtener todos los parámetros pertinentes en la plantilla machineSet que se usa en el paso siguiente.

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

Paso 4: Crear un nuevo archivo YAML machineSet y aplicarlo al clúster

Use la plantilla siguiente para el archivo YAML machineSet. Cambie los parámetros mostrados con X según los valores recuperados en la sección anterior. Por ejemplo, machine.openshift.io/cluster-api-cluster: XXX-XXX-XXX podría ser 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>

Paso 5: Aplicar el conjunto de máquinas

Aplique el conjunto de máquinas creado en la sección anterior mediante el comando oc apply -f <filename.yaml>, como en el ejemplo siguiente:

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

Paso 6: Comprobación del conjunto de máquinas y nodos

Una vez que haya aplicado el archivo YAML, puede comprobar la creación del conjunto de máquinas y nodos mediante los comandos oc get machineSets y oc get nodes, como se muestra en los ejemplos siguientes:

[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

Después de unos minutos más, aparecerá el nuevo conjunto de máquinas y nodos:

[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