Nota:

Amplíe un cluster de Kubernetes en un entorno nativo en Oracle Cloud

Introducción

En este tutorial se muestra cómo escalar un cluster de Kubernetes existente en Oracle Cloud Native Environment.

Para escalar verticalmente un cluster de Kubernetes es necesario agregar nodos; también se produce la reducción vertical mediante la eliminación de nodos. Los nodos pueden ser nodos de plano de control o nodos de trabajador. Oracle recomienda no ampliar ni reducir el cluster al mismo tiempo. En su lugar, realice una escala vertical y, a continuación, una reducción vertical en dos comandos distintos.

Para evitar escenarios de "cerebro dividido" y mantener el quórum, se recomienda escalar el plano de control de cluster de Kubernetes o los nodos de trabajador en números impares. Por ejemplo, los nodos de plano de control o de trabajador 3, 5 o 7 garantizan la fiabilidad del cluster.

En este tutorial se utiliza un cluster de Kubernetes de alta disponibilidad existente que se ejecuta en Oracle Cloud Native Environment y tiene tres módulos desplegados:

El despliegue inicial consta de lo siguiente:

Se basa en los laboratorios:

Objetivos

En este tutorial o laboratorio se explica cómo configurar y agregar dos nuevos nodos de plano de control y dos nuevos nodos de trabajador al cluster. A continuación, el tutorial/laboratorio muestra cómo reducir el cluster eliminando los mismos nodos del cluster.

En este escenario, los certificados de CA privados X.509 se utilizan para proteger la comunicación entre los nodos. Existen otros métodos para gestionar y desplegar los certificados, como el uso del gestor de secretos de HashiCorp Vault o el uso de sus propios certificados, firmados por una autoridad de certificación (CA) de confianza. Estos otros métodos no se incluyen en este tutorial.

Requisitos

Nota: Si utiliza el entorno de prácticas gratuitas, se proporcionan estos requisitos como punto de partida.

Además del requisito de un cluster de Kubernetes de alta disponibilidad que se ejecute en Oracle Cloud Native Environment, se necesita lo siguiente:

Configurar entorno de prácticas

Nota: Al utilizar el entorno de prácticas gratuitas, consulte Conceptos básicos de las prácticas de Oracle Linux para obtener información sobre la conexión y otras instrucciones de uso.

Información: el entorno de prácticas gratuitas despliega Oracle Cloud Native Environment en los nodos proporcionados, listo para crear entornos. Este despliegue tarda entre 20 y 25 minutos aproximadamente en terminar tras el lanzamiento. Por lo tanto, puede que desee salir mientras se ejecuta y, a continuación, volver para completar la práctica.

A menos que se indique lo contrario, todos los pasos dentro del entorno de prácticas libres se pueden ejecutar desde el nodo ocne-operator y se recomienda comenzar abriendo una ventana de terminal y conectarse al nodo. En una instalación de varios nodos de Oracle Cloud Native Environment, los comandos kubectl se ejecutan en el operador, un nodo de plano de control u otro sistema configurado para kubectl.

  1. Abra un terminal y conéctese mediante ssh al sistema ocne-operator.

    ssh oracle@<ip_address_of_ol_node>
    

Instalación del módulo de Kubernetes

Importante Todas las operaciones, a menos que se indique lo contrario, se ejecutan desde el nodo ocne-operator.

El entorno de prácticas gratuitas crea una instalación de Oracle Cloud Native Environment de alta disponibilidad durante el despliegue, incluida la preparación del entorno y la configuración del módulo.

  1. Visualice el archivo myenvironment.yaml.

    cat ~/myenvironment.yaml
    

    El despliegue del entorno de prácticas gratuitas utiliza tres nodos de plano de control y cinco nodos de trabajador al crear el cluster.

    Resultado de ejemplo:

    [oracle@ocne-operator ~]$ cat ~/myenvironment.yaml
    environments:
      - environment-name: myenvironment
        globals:
          api-server: 127.0.0.1:8091
          secret-manager-type: file
          olcne-ca-path: /etc/olcne/configs/certificates/production/ca.cert
          olcne-node-cert-path: /etc/olcne/configs/certificates/production/node.cert
          olcne-node-key-path:  /etc/olcne/configs/certificates/production/node.key
        modules:
          - module: kubernetes
            name: mycluster
            args:
              container-registry: container-registry.oracle.com/olcne
              load-balancer: 10.0.0.168:6443
              master-nodes:
                - ocne-control01.lv.vcnf998d566.oraclevcn.com:8090
                - ocne-control02.lv.vcnf998d566.oraclevcn.com:8090
                - ocne-control03.lv.vcnf998d566.oraclevcn.com:8090
              worker-nodes:
                - ocne-worker01.lv.vcnf998d566.oraclevcn.com:8090
                - ocne-worker02.lv.vcnf998d566.oraclevcn.com:8090
                - ocne-worker03.lv.vcnf998d566.oraclevcn.com:8090
                - ocne-worker04.lv.vcnf998d566.oraclevcn.com:8090
                - ocne-worker05.lv.vcnf998d566.oraclevcn.com:8090
              selinux: enforcing
              restrict-service-externalip: true
              restrict-service-externalip-ca-cert: /etc/olcne/configs/certificates/restrict_external_ip/production/ca.cert
              restrict-service-externalip-tls-cert: /etc/olcne/configs/certificates/restrict_external_ip/production/node.cert
              restrict-service-externalip-tls-key: /etc/olcne/configs/certificates/restrict_external_ip/production/node.key
          - module: helm
            name: myhelm
            args:
              helm-kubernetes-module: mycluster      
          - module: oci-ccm
            name: myoci
            oci-ccm-helm-module: myhelm
            oci-use-instance-principals: true
            oci-compartment: ocid1.compartment.oc1..aaaaaaaau2g2k23u6mp3t43ky3i4ky7jpyeiqcdcobpbcb7z6vjjlrdnuufq
            oci-vcn: ocid1.vcn.oc1.eu-frankfurt-1.amaaaaaaw6qx2pia2xkfmnnknpk3jll6emb76gtcza3ttbqqofxmwjb45rka
            oci-lb-subnet1: ocid1.subnet.oc1.eu-frankfurt-1.aaaaaaaawfjs5zrb6wdmg43522a4l5aak5zr6vvkaaa6xogttha2ufsip7fq         
    

    La parte del dominio del FQDN para los nodos será única en cada despliegue del entorno de prácticas libres.

  2. Instalar el módulo de Kubernetes.

    olcnectl module install --config-file myenvironment.yaml
    

    Nota: El despliegue de Kubernetes en los nodos tardará entre 20 y 25 minutos en realizarse.

    Resultado de ejemplo:

    [oracle@ocne-operator ~]$ olcnectl module install --config-file myenvironment.yaml
    Modules installed successfully.
    Modules installed successfully.
    Modules installed successfully.
    

    ¿Por qué hay tres respuestas de módulos instalados correctamente? Esto se debe a que el archivo myenvironment.yaml utilizado en este ejemplo define tres módulos independientes:

    • - module: kubernetes (Fin de creación)
    • - module: helm (Fin de creación)
    • - module: oci-ccm (Fin de creación)

    Es importante comprender esto porque, más adelante en estos pasos, algunas respuestas también se devolverán tres veces, una vez para cada módulo definido en el archivo myenvironment.yaml.

  3. Verifique el despliegue del módulo de Kubernetes.

    olcnectl module instances --config-file myenvironment.yaml
    

    Resultado de ejemplo:

    [oracle@ocne-operator ~]$ olcnectl module instances --config-file myenvironment.yaml
    INSTANCE                                        	MODULE    	STATE    
    mycluster                                       	kubernetes	installed
    myhelm                                          	helm      	installed
    myoci                                           	oci-ccm   	installed
    ocne-control01.lv.vcnf998d566.oraclevcn.com:8090	node      	installed
    ocne-control02.lv.vcnf998d566.oraclevcn.com:8090	node      	installed
    ocne-control03.lv.vcnf998d566.oraclevcn.com:8090	node      	installed
    ocne-worker01.lv.vcnf998d566.oraclevcn.com:8090 	node      	installed
    ocne-worker02.lv.vcnf998d566.oraclevcn.com:8090 	node      	installed
    ocne-worker03.lv.vcnf998d566.oraclevcn.com:8090 	node      	installed
    ocne-worker04.lv.vcnf998d566.oraclevcn.com:8090 	node      	installed
    ocne-worker05.lv.vcnf998d566.oraclevcn.com:8090 	node      	installed
    

Configurar kubectl

  1. Configure el comando kubectl.

    1. Copie el archivo de configuración desde uno de los nodos de plano de control.

      mkdir -p $HOME/.kube
      ssh -o StrictHostKeyChecking=no 10.0.0.150 "sudo cat /etc/kubernetes/admin.conf" > $HOME/.kube/config
      

      Resultado de ejemplo:

      [oracle@ocne-operator ~]$ mkdir -p $HOME/.kube
      [oracle@ocne-operator ~]$ ssh -o StrictHostKeyChecking=no 10.0.0.150 "sudo cat /etc/kubernetes/admin.conf" > $HOME/.kube/config
      Warning: Permanently added '10.0.0.150' (ECDSA) to the list of known hosts.
      
    2. Exporte la configuración para que la utilice el comando kubectl.

      sudo chown $(id -u):$(id -g) $HOME/.kube/config
      export KUBECONFIG=$HOME/.kube/config
      echo 'export KUBECONFIG=$HOME/.kube/config' >> $HOME/.bashrc
      
  2. Verifique que kubectl funciona.

    kubectl get nodes
    

    Resultado de ejemplo:

    [oracle@ocne-operator ~]$ kubectl get nodes
    NAME             STATUS   ROLES                  AGE   VERSION
    ocne-control01   Ready    control-plane,master   17m   v1.23.7+1.el8
    ocne-control02   Ready    control-plane,master   16m   v1.23.7+1.el8
    ocne-control03   Ready    control-plane,master   15m   v1.23.7+1.el8
    ocne-worker01    Ready    <none>                 16m   v1.23.7+1.el8
    ocne-worker02    Ready    <none>                 15m   v1.23.7+1.el8
    ocne-worker03    Ready    <none>                 14m   v1.23.7+1.el8
    ocne-worker04    Ready    <none>                 15m   v1.23.7+1.el8
    ocne-worker05    Ready    <none>                 15m   v1.23.7+1.el8
    [oracle@ocne-operator ~]$
    

Confirme que el módulo de Oracle Cloud Infrastructure Cloud Controller Manager está listo

Antes de continuar, es importante esperar a que el módulo de Oracle Cloud Infrastructure Cloud Controller Manager establezca la comunicación con la API de OCI. El módulo Oracle Cloud Infrastructure Cloud Controller Manager ejecuta un pod en cada nodo que maneja funcionalidades como la conexión del almacenamiento de bloques. Después de instalarse, este controlador evita que se programe cualquier pod hasta que este pod dedicado confirme que se inicializa, ejecuta y se comunica con la API de OCI. Hasta que esta comunicación se haya establecido correctamente, es probable que cualquier intento de continuar evite el uso correcto del almacenamiento en la nube o los equilibradores de carga por parte de Kubernetes.

  1. Recupere el estado de los pods oci-cloud-controller-manager del componente.

    kubectl -n kube-system get pods -l component=oci-cloud-controller-manager
    

    Resultado de ejemplo:

    [[oracle@ocne-operator ~]$ kubectl -n kube-system get pods -l component=oci-cloud-controller-manager
    NAME                                 READY   STATUS    RESTARTS      AGE
    oci-cloud-controller-manager-9d9gh   1/1     Running   1 (48m ago)   50m
    oci-cloud-controller-manager-jqzs6   1/1     Running   0             50m
    oci-cloud-controller-manager-xfm9w   1/1     Running   0             50m
    
  2. Recupere el estado de los pods csi-oci del rol.

    kubectl -n kube-system get pods -l role=csi-oci
    

    Resultado de ejemplo:

    [[oracle@ocne-operator ~]$ kubectl -n kube-system get pods -l role=csi-oci
    NAME                                  READY   STATUS             RESTARTS      AGE
    csi-oci-controller-7fcbddd746-2hb5c   4/4     Running            2 (50m ago)   51m
    csi-oci-node-7jd6t                    3/3     Running            0             51m
    csi-oci-node-fc5x5                    3/3     Running            0             51m
    csi-oci-node-jq8sm                    3/3     Running            0             51m
    csi-oci-node-jqkvl                    3/3     Running            0             51m
    csi-oci-node-jwq8g                    3/3     Running            0             51m
    csi-oci-node-jzxqt                    3/3     Running            0             51m
    csi-oci-node-rmmmb                    3/3     Running            0             51m
    csi-oci-node-zc287                    1/3     Running            0             51m
    

Nota: Espere a que ambos comandos muestren STATUS como Running antes de continuar.

Si los valores de la columna READY no muestran todos los contenedores como iniciados y los de la columna STATUS no se muestran como Running después de 15 minutos, reinicie la práctica.

(Opcional) Configuración de los nuevos nodos de Kubernetes

Nota: Los pasos de esta sección no son necesarios en el entorno de prácticas gratuitas porque ya se han completado durante el despliegue inicial del laboratorio. Vaya a la sección siguiente y continúe desde allí.

Al escalar verticalmente (agregar nodos), cualquier nodo nuevo necesita que se cumplan todos los requisitos enumerados en la sección Prerequisites de este tutorial.

En este tutorial/laboratorio, los nodos ocne-control04 y ocne-control05 son los nuevos nodos de plano de control, mientras que los nodos ocne-worker06 y ocne-worker07 son los nuevos nodos de trabajador. Además de los requisitos, estos nuevos nodos requieren la instalación y activación del agente de plataforma de Oracle Cloud Native Environment.

  1. Instale y active el agente de plataforma.

    sudo dnf install olcne-agent olcne-utils
    sudo systemctl enable olcne-agent.service
    
  2. Si utiliza un servidor proxy, configúrelo con CRI-O. En cada nodo de Kubernetes, cree un directorio de configuración systemd de CRI-O. Cree un archivo denominado proxy.conf en el directorio y agregue la información del servidor proxy.

    sudo mkdir /etc/systemd/system/crio.service.d
    sudo vi /etc/systemd/system/crio.service.d/proxy.conf
    
  3. Sustituya los valores de proxy adecuados para los del entorno mediante el archivo proxy.conf de ejemplo:

    [Service]
    Environment="HTTP_PROXY=proxy.example.com:80"
    Environment="HTTPS_PROXY=proxy.example.com:80"
    Environment="NO_PROXY=.example.com,192.0.2.*"
    
  4. Si el servicio docker o containerd se está ejecutando, deténgalo y desactívelo.

    sudo systemctl disable --now docker.service
    sudo systemctl disable --now containerd.service
    

Configurar certificados de CA privada X.509

Configure X.509 Private CA Certificates para los nuevos nodos de plano de control y los nodos de trabajador.

  1. Cree una lista de nuevos nodos.

    VAR1=$(hostname -d)
    for NODE in 'ocne-control04' 'ocne-control05' 'ocne-worker06' 'ocne-worker07'; do VAR2+="${NODE}.$VAR1,"; done
    VAR2=${VAR2%,}
    

    El script bash proporcionado captura el nombre de dominio del nodo de operador y crea una lista separada por comas de los nodos que se agregarán al cluster durante el procedimiento de ampliación.

  2. Genere una CA privada y un juego de certificados para los nuevos nodos.

    Utilice la opción --byo-ca-cert para especificar la ubicación del certificado de CA existente y la opción --byo-ca-key para especificar la ubicación de la clave de CA existente. Utilice la opción --nodes y proporcione el FQDN del nuevo plano de control y los nuevos nodos de trabajador.

    cd /etc/olcne
    sudo ./gen-certs-helper.sh \
    --cert-dir /etc/olcne/configs/certificates/ \
    --byo-ca-cert /etc/olcne/configs/certificates/production/ca.cert \
    --byo-ca-key /etc/olcne/configs/certificates/production/ca.key \
    --nodes $VAR2
    

    Resultado de ejemplo:

    [oracle@ocne-operator ~]$ cd /etc/olcne
    [oracle@ocne-operator olcne]$ sudo ./gen-certs-helper.sh \
    > --cert-dir /etc/olcne/configs/certificates/ \
    > --byo-ca-cert /etc/olcne/configs/certificates/production/ca.cert \
    > --byo-ca-key /etc/olcne/configs/certificates/production/ca.key \
    > --nodes $VAR2
    [INFO] Generating certs for ocne-control04.lv.vcnf998d566.oraclevcn.com
    Generating RSA private key, 2048 bit long modulus (2 primes)
    .............................+++++
    ....................+++++
    e is 65537 (0x010001)
    Signature ok
    subject=C = US, ST = North Carolina, L = Whynot, O = your-company, OU = private cloud, CN = example.com
    Getting CA Private Key
    [INFO] Generating certs for ocne-control05.lv.vcnf998d566.oraclevcn.com
    Generating RSA private key, 2048 bit long modulus (2 primes)
    ...+++++
    ...........................................................+++++
    e is 65537 (0x010001)
    Signature ok
    subject=C = US, ST = North Carolina, L = Whynot, O = your-company, OU = private cloud, CN = example.com
    Getting CA Private Key
    [INFO] Generating certs for ocne-worker06.lv.vcnf998d566.oraclevcn.com
    Generating RSA private key, 2048 bit long modulus (2 primes)
    ......+++++
    .......................+++++
    e is 65537 (0x010001)
    Signature ok
    subject=C = US, ST = North Carolina, L = Whynot, O = your-company, OU = private cloud, CN = example.com
    Getting CA Private Key
    [INFO] Generating certs for ocne-worker07.lv.vcnf998d566.oraclevcn.com
    Generating RSA private key, 2048 bit long modulus (2 primes)
    ....................................................................................+++++
    .................................+++++
    e is 65537 (0x010001)
    Signature ok
    subject=C = US, ST = North Carolina, L = Whynot, O = your-company, OU = private cloud, CN = example.com
    Getting CA Private Key
    -----------------------------------------------------------
    Script To Transfer Certs: /etc/olcne/configs/certificates/olcne-tranfer-certs.sh
    -----------------------------------------------------------
    [SUCCESS] Generated certs and file transfer script!
    [INFO]    CA Cert: /etc/olcne/configs/certificates/production/ca.key
    [INFO]    CA Key:  /etc/olcne/configs/certificates/production/ca.cert
    [WARNING] The CA Key is the only way to generate more certificates, ensure it is stored in long term storage
    [USER STEP #1]    Please ensure you have ssh access from this machine to: ocne-control04.lv.vcnf998d566.oraclevcn.com,ocne-control05.lv.vcnf998d566.oraclevcn.com,ocne-worker06.lv.vcnf998d566.oraclevcn.com,ocne-worker07.lv.vcnf998d566.oraclevcn.com
    

Certificados de transferencia

Transfiera los certificados recién creados del nodo de operador a todos los nodos nuevos.

  1. Actualice los detalles de usuario en el script de transferencia proporcionado.

    sudo sed -i 's/USER=opc/USER=oracle/g' configs/certificates/olcne-tranfer-certs.sh
    

    Nota: el tutorial necesita este paso porque el usuario por defecto del script es opc. Dado que tanto este tutorial como el entorno de prácticas gratuitas instalan el producto con el usuario oracle, actualice la variable USER en el script según corresponda.

  2. Actualice los permisos para cada node.key generado por el script de creación de certificados.

    sudo chmod 644 /etc/olcne/configs/certificates/tmp-olcne/ocne-control*/node.key
    sudo chmod 644 /etc/olcne/configs/certificates/tmp-olcne/ocne-operator*/node.key
    sudo chmod 644 /etc/olcne/configs/certificates/tmp-olcne/ocne-worker*/node.key
    
  3. Transfiera los certificados a cada uno de los nuevos nodos.

    Nota Este paso requiere la configuración de SSH sin contraseña entre los nodos. La configuración de esto está fuera del ámbito de este tutorial, pero está preconfigurada en el entorno de prácticas libres.

    bash -ex /etc/olcne/configs/certificates/olcne-tranfer-certs.sh
    

Configuración del agente de plataforma para utilizar los certificados

Configure el agente de plataforma en cada nodo nuevo para utilizar los certificados copiados en el paso anterior. Esta tarea se realiza desde el nodo de operador ejecutando el comando en ssh.

  1. Configure el nodo ocne-control04.

    ssh -o StrictHostKeyChecking=no ocne-control04 'sudo /etc/olcne/bootstrap-olcne.sh \
    --secret-manager-type file \
    --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    --olcne-component agent'
    

    Resultado de ejemplo:

    [oracle@ocne-operator olcne]$ ssh -o StrictHostKeyChecking=no ocne-control04 'sudo /etc/olcne/bootstrap-olcne.sh \
    > --secret-manager-type file \
    > --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    > --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    > --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    > --olcne-component agent'
    Warning: Permanently added 'ocne-control04,10.0.0.153' (ECDSA) to the list of known hosts.
    ��� olcne-agent.service - Agent for Oracle Linux Cloud Native Environments
       Loaded: loaded (/usr/lib/systemd/system/olcne-agent.service; enabled; vendor preset: disabled)
      Drop-In: /etc/systemd/system/olcne-agent.service.d
               ������10-auth.conf
       Active: active (running) since Tue 2022-08-30 15:29:37 GMT; 2s ago
     Main PID: 152809 (olcne-agent)
        Tasks: 8 (limit: 202294)
       Memory: 11.1M
       CGroup: /system.slice/olcne-agent.service
               ������152809 /usr/libexec/olcne-agent --secret-manager-type file --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key
    
    Aug 30 15:29:37 ocne-control04 systemd[1]: Started Agent for Oracle Linux Cloud Native Environments.
    Aug 30 15:29:37 ocne-control04 olcne-agent[152809]: time=30/08/22 15:29:37 level=info msg=Started server on[::]:8090
    
  2. Configure el nodo ocne-control05.

    ssh -o StrictHostKeyChecking=no ocne-control05 'sudo /etc/olcne/bootstrap-olcne.sh \
    --secret-manager-type file \
    --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    --olcne-component agent'
    

    Resultado de ejemplo:

    [oracle@ocne-operator olcne]$ ssh -o StrictHostKeyChecking=no ocne-control05 'sudo /etc/olcne/bootstrap-olcne.sh \
    > --secret-manager-type file \
    > --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    > --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    > --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    > --olcne-component agent'
    Warning: Permanently added 'ocne-control05,10.0.0.154' (ECDSA) to the list of known hosts.
    ��� olcne-agent.service - Agent for Oracle Linux Cloud Native Environments
      Loaded: loaded (/usr/lib/systemd/system/olcne-agent.service; enabled; vendor preset: disabled)
      Drop-In: /etc/systemd/system/olcne-agent.service.d
               ������10-auth.conf
       Active: active (running) since Tue 2022-08-30 15:34:13 GMT; 2s ago
     Main PID: 153413 (olcne-agent)
        Tasks: 7 (limit: 202294)
       Memory: 9.1M
       CGroup: /system.slice/olcne-agent.service
               ������153413 /usr/libexec/olcne-agent --secret-manager-type file --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key
    
    Aug 30 15:34:13 ocne-control05 systemd[1]: olcne-agent.service: Succeeded.
    Aug 30 15:34:13 ocne-control05 systemd[1]: Stopped Agent for Oracle Linux Cloud Native Environments.
    Aug 30 15:34:13 ocne-control05 systemd[1]: Started Agent for Oracle Linux Cloud Native Environments.
    Aug 30 15:34:13 ocne-control05 olcne-agent[153413]: time=30/08/22 15:34:13 level=info msg=Started server on[::]:8090
    
  3. Configure el nodo ocne-worker06.

    ssh -o StrictHostKeyChecking=no ocne-worker06 'sudo /etc/olcne/bootstrap-olcne.sh \
    --secret-manager-type file \
    --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    --olcne-component agent'
    

    Resultado de ejemplo:

    [oracle@ocne-operator olcne]$ ssh -o StrictHostKeyChecking=no ocne-worker06 'sudo /etc/olcne/bootstrap-olcne.sh \
    > --secret-manager-type file \
    > --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    > --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    > --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    > --olcne-component agent'
    Warning: Permanently added 'ocne-worker06,10.0.0.165' (ECDSA) to the list of known hosts.
    ��� olcne-agent.service - Agent for Oracle Linux Cloud Native Environments
       Loaded: loaded (/usr/lib/systemd/system/olcne-agent.service; enabled; vendor preset: disabled)
      Drop-In: /etc/systemd/system/olcne-agent.service.d
               ������10-auth.conf
       Active: active (running) since Tue 2022-08-30 15:41:08 GMT; 2s ago
     Main PID: 153988 (olcne-agent)
        Tasks: 8 (limit: 202294)
       Memory: 5.2M
       CGroup: /system.slice/olcne-agent.service
               ������153988 /usr/libexec/olcne-agent --secret-manager-type file --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key
    
    Aug 30 15:41:08 ocne-worker06 systemd[1]: Started Agent for Oracle Linux Cloud Native Environments.
    Aug 30 15:41:08 ocne-worker06 olcne-agent[153988]: time=30/08/22 15:41:08 level=info msg=Started server on[::]:8090
    
  4. Configure el nodo ocne-worker07.

    ssh -o StrictHostKeyChecking=no ocne-worker07 'sudo /etc/olcne/bootstrap-olcne.sh \
    --secret-manager-type file \
    --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    --olcne-component agent'
    

    Resultado de ejemplo:

    [oracle@ocne-operator olcne]$ ssh -o StrictHostKeyChecking=no ocne-worker07 'sudo /etc/olcne/bootstrap-olcne.sh \
    > --secret-manager-type file \
    > --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    > --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    > --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    > --olcne-component agent'
    Warning: Permanently added 'ocne-worker07,10.0.0.166' (ECDSA) to the list of known hosts.
    ��� olcne-agent.service - Agent for Oracle Linux Cloud Native Environments
       Loaded: loaded (/usr/lib/systemd/system/olcne-agent.service; enabled; vendor preset: disabled)
      Drop-In: /etc/systemd/system/olcne-agent.service.d
               ������10-auth.conf
       Active: active (running) since Tue 2022-08-30 15:43:23 GMT; 2s ago
     Main PID: 154734 (olcne-agent)
        Tasks: 8 (limit: 202294)
       Memory: 9.1M
       CGroup: /system.slice/olcne-agent.service
               ������154734 /usr/libexec/olcne-agent --secret-manager-type file --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key
    
    Aug 30 15:43:23 ocne-worker07 systemd[1]: olcne-agent.service: Succeeded.
    Aug 30 15:43:23 ocne-worker07 systemd[1]: Stopped Agent for Oracle Linux Cloud Native Environments.
    Aug 30 15:43:23 ocne-worker07 systemd[1]: Started Agent for Oracle Linux Cloud Native Environments.
    Aug 30 15:43:23 ocne-worker07 olcne-agent[154734]: time=30/08/22 15:43:23 level=info msg=Started server on[::]:8090
    

Acceso al equilibrador de carga de OCI y visualización de los backends

Puesto que tener más de un nodo definido para el plano de control de Kubernetes necesita un equilibrador de carga, es interesante ver la configuración que se ha configurado automáticamente cuando se desplegó el entorno de prácticas gratuitas. Esto mostrará los tres nodos desplegados y configurados cuando se cree el ejercicio práctico con un estado Healthy y los dos nodos que se agregarán en los próximos pasos con el estado Critical.

  1. Cambie de Terminal a Luna

  2. Abra la página de detalles Luna Lab mediante el icono Luna Lab.

  3. Haga clic en el enlace Consola de OCI.

    enlace de oci

  4. Se muestra la página de conexión a la consola de Oracle Cloud.

    Inicio de sesión de consola

  5. Introduzca User Name y Password (que se encuentran en el separador Luna Lab de la sección Credenciales).

    sin contraseña

  6. Haga clic en el menú de hamburguesa (parte superior izquierda) y, a continuación, en Red y Equilibradores de carga.

    selección de redes

  7. Se muestra la página Equilibradores de carga.

    equilibrador de carga

  8. Localice el compartimento que se está utilizando en la lista desplegable.

    oci-compartimento

  9. Haga clic en el equilibrador de carga que se muestra en la tabla (ocne-load-balancer).

    equilibrador de carga

  10. Desplácese por la página y haga clic en el enlace a Juegos de backends (en la parte izquierda de la sección Recursos).

    juego de backends

  11. Se muestra la tabla Juegos de backends. Haga clic en el enlace denominado ocne-lb-backend-set en la columna Nombre.

    equilibrador de carga

  12. Haga clic en el enlace a Backends (en la parte izquierda de la sección Recursos).

    enlace de backend

  13. Se muestran los Backends que representan los nodos de plano de control.

    Nota Dos de los nodos de backend están en estado Crítico: fallo de conexión porque estos nodos aún no forman parte del cluster de plano de control de Kubernetes. Mantenga abierto este separador del explorador, ya que volveremos a comprobar el estado de los nodos de backend después de completar los pasos de escalado vertical.

    tabla de backend

Visualización de los nodos de Kubernetes

Compruebe los nodos de Kubernetes disponibles actualmente en el cluster. Tenga en cuenta que hay tres nodos de plano de control y cinco nodos de trabajador.

  1. Confirme que todos los nodos tienen el estado READY (Listo).

    kubectl get nodes
    

    Resultado de ejemplo:

    [oracle@ocne-operator olcne]$ kubectl get nodes
    NAME             STATUS   ROLES                  AGE     VERSION
    ocne-control01   Ready    control-plane,master   5h15m   v1.23.7+1.el8
    ocne-control02   Ready    control-plane,master   5h14m   v1.23.7+1.el8
    ocne-control03   Ready    control-plane,master   5h13m   v1.23.7+1.el8
    ocne-worker01    Ready    <none>                 5h14m   v1.23.7+1.el8
    ocne-worker02    Ready    <none>                 5h13m   v1.23.7+1.el8
    ocne-worker03    Ready    <none>                 5h12m   v1.23.7+1.el8
    ocne-worker04    Ready    <none>                 5h13m   v1.23.7+1.el8
    ocne-worker05    Ready    <none>                 5h14m   v1.23.7+1.el8
    

Adición de nodos de plan de control y trabajador al archivo de configuración de despliegue

Agregue el nombre de dominio totalmente cualificado (FQDN) y el puerto de acceso de agente de plataforma (8090) a todos los nodos de plano de control y de trabajador que se agregarán al cluster.

Edite el archivo de configuración de despliegue de YAML para incluir los nuevos nodos de cluster. Agregue los nodos de plano de control en la sección master-nodes al agregar los nodos de trabajador a la sección worker-node.

El nombre de archivo del archivo de configuración de este tutorial es myenvironment.yaml y actualmente incluye tres planos de control y cinco nodos de trabajador.

  1. Confirme que el entorno actual utiliza tres nodos de planos de control y cinco nodos de trabajador.

    cat ~/myenvironment.yaml
    

    Resultado de ejemplo:

    ...
              master-nodes:
                - ocne-control01.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control02.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control03.lv.vcneea798df.oraclevcn.com:8090
              worker-nodes:
                - ocne-worker01.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker02.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker03.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker04.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker05.lv.vcneea798df.oraclevcn.com:8090
    ...
    
  2. Agregue los nuevos nodos de plano de control y de trabajador al archivo myenvironment.yaml.

    cd ~
    sed -i '19 i \            - ocne-control04.'"$(hostname -d)"':8090' ~/myenvironment.yaml
    sed -i '20 i \            - ocne-control05.'"$(hostname -d)"':8090' ~/myenvironment.yaml
    sed -i '27 i \            - ocne-worker06.'"$(hostname -d)"':8090' ~/myenvironment.yaml
    sed -i '28 i \            - ocne-worker07.'"$(hostname -d)"':8090' ~/myenvironment.yaml
    
  3. Confirme que los nodos de plano de control y de trabajador se han agregado al archivo myenvironment.yaml.

    cat ~/myenvironment.yaml
    

    Ejemplo de extracto:

    ...
              master-nodes:
                - ocne-control01.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control02.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control03.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control04.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control05.lv.vcneea798df.oraclevcn.com:8090
              worker-nodes:
                - ocne-worker01.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker02.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker03.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker04.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker05.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker06.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker07.lv.vcneea798df.oraclevcn.com:8090   
    ...
    

El archivo de configuración ahora incluye los nuevos nodos de plano de control (ocne-control04 y ocne-control05) y los nuevos nodos de trabajador (ocne-worker06 y ocne-worker07). Esto representa todos los nodos de plano de control y de trabajador que deben estar en el cluster una vez que finaliza la ampliación.

Ampliación del plano de control y los nodos de trabajador

  1. Ejecute el comando de actualización del módulo.

    Utilice el comando olcnectl module update con la opción --config-file para especificar la ubicación del archivo de configuración. El servidor de API de plataforma valida el archivo de configuración con el estado del cluster y reconoce que hay más nodos que se deben agregar al cluster. Responda y cuando se lo solicite.

    Nota: Habrá un retraso entre las peticiones de datos en la ventana Terminal mientras se actualiza cada uno de los módulos. En el entorno de laboratorio libre, este retraso puede ser de hasta 10-15 minutos.

    olcnectl module update --config-file myenvironment.yaml
    

    Resultado de ejemplo:

    [oracle@ocne-operator ~]$ olcnectl module update --config-file myenvironment.yaml
    ? [WARNING] Update will shift your workload and some pods will lose data if they rely on local storage. Do you want to continue? Yes
    Taking backup of modules before update
    Backup of modules succeeded.
    Updating modules
    Update successful
    ? [WARNING] Update will shift your workload and some pods will lose data if they rely on local storage. Do you want to continue? Yes
    Taking backup of modules before update
    Backup of modules succeeded.
    Updating modules
    Update successful
    ? [WARNING] Update will shift your workload and some pods will lose data if they rely on local storage. Do you want to continue? Yes
    Taking backup of modules before update
    Backup of modules succeeded.
    Updating modules
    Update successful
    
  2. (En la consola en la nube) Confirme que el juego de backends del equilibrador de carga muestra cinco nodos de backend en buen estado.

    lb en buen estado

  3. Confirme que los nuevos nodos de plano de control y de trabajador se hayan agregado al cluster.

    kubectl get nodes
    

    Resultado de ejemplo:

    [oracle@ocne-operator ~]$ kubectl get nodes
    NAME             STATUS   ROLES                  AGE   VERSION
    ocne-control01   Ready    control-plane,master   99m   v1.23.7+1.el8
    ocne-control02   Ready    control-plane,master   97m   v1.23.7+1.el8
    ocne-control03   Ready    control-plane,master   96m   v1.23.7+1.el8
    ocne-control04   Ready    control-plane,master   13m   v1.23.7+1.el8
    ocne-control05   Ready    control-plane,master   12m   v1.23.7+1.el8
    ocne-worker01    Ready    <none>                 99m   v1.23.7+1.el8
    ocne-worker02    Ready    <none>                 98m   v1.23.7+1.el8
    ocne-worker03    Ready    <none>                 98m   v1.23.7+1.el8
    ocne-worker04    Ready    <none>                 98m   v1.23.7+1.el8
    ocne-worker05    Ready    <none>                 98m   v1.23.7+1.el8
    ocne-worker06    Ready    <none>                 13m   v1.23.7+1.el8
    ocne-worker07    Ready    <none>                 13m   v1.23.7+1.el8
    

    Observe que los nuevos nodos de planos de control (ocne-control04 y ocne-control05) y los nuevos nodos de trabajador (ocne-work06 y ocne-worker07) ahora se incluyen en el cluster. Confirmando así que funcionó la operación de ampliación.

Reducción de los nodos del plano de control

Para demostrar que el plano de control y los nodos de trabajador se pueden escalar de forma independiente, simplemente reduciremos (eliminaremos) los nodos de plano de control en este paso.

  1. Confirme que el entorno actual utiliza cinco nodos de planos de control y siete nodos de trabajador.

    cat ~/myenvironment.yaml
    

    Resultado de ejemplo:

    ...
              master-nodes:
                - ocne-control01.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control02.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control03.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control04.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control05.lv.vcneea798df.oraclevcn.com:8090
              worker-nodes:
                - ocne-worker01.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker02.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker03.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker04.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker05.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker06.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker07.lv.vcneea798df.oraclevcn.com:8090
    ...
    
  2. Para volver a reducir el cluster a los tres planos de control originales, elimine los nodos de plano de control ocne-control04 y ocne-control05 del archivo de configuración.

    sed -i '19d;20d' ~/myenvironment.yaml
    
  3. Confirme que el archivo de configuración ahora contiene solo tres nodos de planos de control y los siete nodos de trabajador.

    cat ~/myenvironment.yaml
    

    Ejemplo de extracto:

    ...
              master-nodes:
                - ocne-control01.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control02.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control03.lv.vcneea798df.oraclevcn.com:8090
              worker-nodes:
                - ocne-worker01.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker02.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker03.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker04.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker05.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker06.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker07.lv.vcneea798df.oraclevcn.com:8090
    ...
    
  4. Suprima el mensaje de advertencia de actualización del módulo.

    Es posible evitar y suprimir la petición de datos de confirmación durante la actualización del módulo agregando la directiva force: true al archivo de configuración. Esta directive se debe colocar inmediatamente bajo la directiva name: <xxxx> para cada módulo definido.

    cd ~
    sed -i '12 i \        force: true' ~/myenvironment.yaml
    sed -i '35 i \        force: true' ~/myenvironment.yaml
    sed -i '40 i \        force: true' ~/myenvironment.yaml
    
  5. Confirme que el archivo de configuración ahora contiene la directiva force: true.

    cat ~/myenvironment.yaml
    

    Ejemplo de extracto:

    [oracle@ocne-operator ~]$ cat ~/myenvironment.yaml
    environments:
      - environment-name: myenvironment
        globals:
          api-server: 127.0.0.1:8091
          secret-manager-type: file
          olcne-ca-path: /etc/olcne/configs/certificates/production/ca.cert
          olcne-node-cert-path: /etc/olcne/configs/certificates/production/node.cert
          olcne-node-key-path:  /etc/olcne/configs/certificates/production/node.key
        modules:
          - module: kubernetes
            name: mycluster
            force: true
            args:
              container-registry: container-registry.oracle.com/olcne
              load-balancer: 10.0.0.18:6443
              master-nodes:
                - ocne-control01.lv.vcn1174e41d.oraclevcn.com:8090
                - ocne-control02.lv.vcn1174e41d.oraclevcn.com:8090
                - ocne-control03.lv.vcn1174e41d.oraclevcn.com:8090
              worker-nodes:
                - ocne-worker01.lv.vcn1174e41d.oraclevcn.com:8090
                - ocne-worker02.lv.vcn1174e41d.oraclevcn.com:8090
                - ocne-worker03.lv.vcn1174e41d.oraclevcn.com:8090
                - ocne-worker04.lv.vcn1174e41d.oraclevcn.com:8090
                - ocne-worker05.lv.vcn1174e41d.oraclevcn.com:8090
                - ocne-worker06.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker07.lv.vcneea798df.oraclevcn.com:8090
              selinux: enforcing
              restrict-service-externalip: true
              restrict-service-externalip-ca-cert: /etc/olcne/configs/certificates/restrict_external_ip/production/ca.cert
              restrict-service-externalip-tls-cert: /etc/olcne/configs/certificates/restrict_external_ip/production/node.cert
              restrict-service-externalip-tls-key: /etc/olcne/configs/certificates/restrict_external_ip/production/node.key
          - module: helm
            name: myhelm
            force: true
            args:
              helm-kubernetes-module: mycluster      
          - module: oci-ccm
            name: myoci
            force: true
            oci-ccm-helm-module: myhelm
            oci-use-instance-principals: true
            oci-compartment: ocid1.compartment.oc1..aaaaaaaanr6cysadeswwxc7sczdsrlamzhfh6scdyvuh4s4fmvecob6e2cha
            oci-vcn: ocid1.vcn.oc1.eu-frankfurt-1.amaaaaaag7acy3iat3duvrym376oax7nxdyqd56mqxtjaws47t4g7vqthgja
            oci-lb-subnet1: ocid1.subnet.oc1.eu-frankfurt-1.aaaaaaaa6rt6chugbkfhyjyl4exznpxrlvnus2bgkzcgm7fljfkqbxkva6ya         
    
  6. Ejecute el comando para actualizar el cluster y eliminar los nodos.

    Nota: Esta operación puede tardar unos minutos en realizarse.

    olcnectl module update --config-file myenvironment.yaml
    

    Resultado de ejemplo:

    [oracle@ocne-operator ~]$ olcnectl module update --config-file myenvironment.yaml
    Taking backup of modules before update
    Backup of modules succeeded.
    Updating modules
    Update successful
    Taking backup of modules before update
    Backup of modules succeeded.
    Updating modules
    Update successful
    Taking backup of modules before update
    Backup of modules succeeded.
    Updating modules
    Update successful
    
  7. (En la consola en la nube) Confirme que el juego de backends del equilibrador de carga muestra tres nodos en buen estado (Health = 'OK') y dos nodos en mal estado (Health = 'Critical - Connection failed'). El motivo por el que dos nodos se muestran con un estado crítico es porque se han eliminado del cluster de Kubernetes.

    lb en buen estado

  8. Muestre que el servidor de API de plataforma ha eliminado los nodos de plano de control del cluster. Confirme que se hayan eliminado los nodos del plano de control (ocne-control04 y ocne-control05).

    kubectl get nodes
    

    Resultado de ejemplo:

    [oracle@ocne-operator ~]$ kubectl get nodes
    NAME             STATUS   ROLES                  AGE    VERSION
    ocne-control01   Ready    control-plane,master   164m   v1.23.7+1.el8
    ocne-control02   Ready    control-plane,master   163m   v1.23.7+1.el8
    ocne-control03   Ready    control-plane,master   162m   v1.23.7+1.el8
    ocne-worker01    Ready    <none>                 164m   v1.23.7+1.el8
    ocne-worker02    Ready    <none>                 163m   v1.23.7+1.el8
    ocne-worker03    Ready    <none>                 164m   v1.23.7+1.el8
    ocne-worker04    Ready    <none>                 164m   v1.23.7+1.el8
    ocne-worker05    Ready    <none>                 164m   v1.23.7+1.el8
    ocne-worker06    Ready    <none>                 13m   v1.23.7+1.el8
    ocne-worker07    Ready    <none>                 13m   v1.23.7+1.el8
    

Resumen

Esta acción finaliza la demostración en la que se detalla cómo agregar y, a continuación, eliminar nodos de Kubernetes del cluster. Aunque este ejercicio demostró la actualización simultánea del plano de control y los nodos de trabajador, este no es el enfoque recomendado para la ampliación o reducción vertical de un cluster de Kubernetes de Oracle Cloud Native Environment, y es muy probable que en un entorno de producción se realice por separado.

Para más información

Más recursos de aprendizaje

Explore otras prácticas en docs.oracle.com/learn o acceda a contenido de aprendizaje más gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de formación de Oracle.

Para obtener documentación sobre los productos, visite Oracle Help Center.