Observação:

Escale um Cluster do Kubernetes no Ambiente Nativo do Oracle Cloud

Introdução

Este tutorial demonstra como escalar um cluster existente do Kubernetes no Oracle Cloud Native Environment.

A expansão de um cluster do Kubernetes significa a adição de nós; da mesma forma, a redução ocorre com a remoção dos nós. Os nós podem ser um plano de controle ou nós de trabalho. A Oracle recomenda ampliar e reduzir o cluster ao mesmo tempo. Em vez disso, execute uma ampliação e, em seguida, a redução em dois comandos separados.

Para evitar cenários de divisão do cérebro e manter o quorum, é recomendável dimensionar o plano de controle de cluster do Kubernetes ou os nós de trabalho em números ímpares. Por exemplo, o plano de controle ou os nós de trabalho 3, 5 ou 7 garantem a confiabilidade do cluster.

Este tutorial usa um cluster do Kubernetes Altamente Disponível existente em execução no Oracle Cloud Native Environment e tem três módulos implantados:

A implantação inicial consiste no seguinte:

Baseia-se nos laboratórios:

Objetivos

Este tutorial/laboratório passa pela configuração e adição de dois novos nós de plano de controle e dois novos nós de trabalho ao cluster. O tutorial/lab demonstra como reduzir o cluster removendo os mesmos nós do cluster.

Neste cenário, os Certificados de CA Privados X.509 são usados para proteger a comunicação entre os nós. Existem outros métodos para gerenciar e implantar os certificados, como usando o gerenciador de segredos do Vault HashiCorp ou usando seus próprios certificados, assinados por uma Autoridade de Certificação (CA) confiável. Esses outros métodos não estão incluídos neste tutorial.

Pré-requisitos

Observação: Se estiver usando o ambiente de laboratório gratuito, esses pré-requisitos serão fornecidos como ponto de partida.

Além do requisito de um cluster do Kubernetes Altamente Disponível em execução no Oracle Cloud Native Environment, é necessário o seguinte:

Configurar ambiente de laboratório

Observação: Ao usar o ambiente de laboratório gratuito, consulte Conceitos Básicos do Oracle Linux Lab para obter informações sobre conexão e outras instruções de uso.

Informações: O ambiente de laboratório gratuito implanta o Oracle Cloud Native Environment nos nós fornecidos, prontos para criar ambientes. Essa implantação leva aproximadamente de 20 a 25 minutos para ser concluída após o início. Portanto, talvez você queira diminuir o tempo de execução e retornar para concluir o laboratório.

A menos que especificado em contrário, todas as etapas do ambiente de laboratório gratuito podem ser executadas no nó ocne-operator e é recomendado iniciar abrindo uma janela de terminal e conectar-se ao nó. Em uma instalação de vários nós do Oracle Cloud Native Environment, os comandos kubectl são executados no operador, em um nó de plano de controle ou em outro sistema configurado para kubectl.

  1. Abra um terminal e conecte via ssh ao sistema ocne-operator.

    ssh oracle@<ip_address_of_ol_node>
    

Instalar o Módulo do Kubernetes

Importante Todas as operações, a menos que sejam declaradas de outra forma, são executadas no nó ocne-operator.

O ambiente de laboratório gratuito cria uma instalação do Oracle Cloud Native Environment Altamente Disponível durante a implantação, incluindo a preparação do ambiente e a configuração do módulo.

  1. Exiba o arquivo myenvironment.yaml.

    cat ~/myenvironment.yaml
    

    A implantação do ambiente de laboratório gratuito usa três nós de plano de controle e cinco nós de trabalho ao criar o cluster.

    Exemplo de Saída:

    [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         
    

    A parte do domínio do FQDN para os nós será exclusiva em cada implantação do ambiente de laboratório gratuito.

  2. Instale o módulo do Kubernetes.

    olcnectl module install --config-file myenvironment.yaml
    

    Observação: A implantação do Kubernetes nos nós levará de 20 a 25 minutos para ser concluída.

    Exemplo de Saída:

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

    Por que há três respostas de Módulos instalados com sucesso? Bem, isso ocorre porque o arquivo myenvironment.yaml usado neste exemplo define três módulos separados:

    • - module: kubernetes
    • - module: helm
    • - module: oci-ccm

    É importante entender isso porque, nestas etapas, algumas respostas também serão retornadas três vezes - uma para cada módulo definido no arquivo myenvironment.yaml.

  3. Verifique a implantação do módulo Kubernetes.

    olcnectl module instances --config-file myenvironment.yaml
    

    Exemplo de Saída:

    [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 o kubectl

  1. Configure o comando kubectl.

    1. Copie o arquivo de configuração de um dos nós do plano de controle.

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

      Exemplo de Saída:

      [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 a configuração para uso pelo 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 se kubectl funciona.

    kubectl get nodes
    

    Exemplo de Saída:

    [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 ~]$
    

Confirmar se o Módulo Oracle Cloud Infrastructure Cloud Controller Manager está Pronto

Antes de prosseguir, é importante aguardar que o módulo Oracle Cloud Infrastructure Cloud Controller Manager estabeleça comunicação com a API do OCI. O módulo Oracle Cloud Infrastructure Cloud Controller Manager executa um pod em cada nó que trata a funcionalidade, como anexar o armazenamento em blocos. Após a instalação, esse controlador impede que qualquer pod seja programado até que esse pod dedicado confirme que ele foi inicializado, em execução e se comunicando com a API do OCI. Até essa comunicação ser estabelecida com sucesso, qualquer tentativa de prosseguir provavelmente impedirá o uso bem-sucedido do armazenamento na nuvem ou dos balanceadores de carga pelo Kubernetes.

  1. Recupere o status dos pods oci-cloud-controller-manager do componente.

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

    Exemplo de Saída:

    [[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 o status dos pods da atribuição csi-oci.

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

    Exemplo de Saída:

    [[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
    

Observação: Aguarde os dois comandos mostrarem STATUS como Running antes de prosseguir.

Se os valores na coluna READY não mostrarem todos os contêineres como iniciados e os valores na coluna STATUS não forem mostrados como Running após 15 minutos, reinicie o laboratório.

(Opcional) Configurar os Novos Nós do Kubernetes

Observação: as etapas desta seção não são necessárias no ambiente de laboratório gratuito porque elas já foram concluídas durante a implantação inicial do laboratório. Pule para a próxima seção e continue daí.

Ao ampliar (adicionar nós), todos os novos nós exigem que todos os pré-requisitos listados na seção Prerequisites deste tutorial sejam atendidos.

Neste tutorial/lab, os nós ocne-control04 e ocne-control05 são os novos nós do plano de controle, enquanto os nós ocne-worker06 e ocne-worker07 são os novos nós de trabalho. Além dos pré-requisitos, esses novos nós exigem a instalação e a ativação do Oracle Cloud Native Environment Platform Agent.

  1. Instale e ative o Agente de Plataforma.

    sudo dnf install olcne-agent olcne-utils
    sudo systemctl enable olcne-agent.service
    
  2. Se estiver usando um servidor proxy, configure-o com CRI-O. Em cada nó do Kubernetes, crie um diretório de configuração do systemd CRI-O. Crie um arquivo chamado proxy.conf no diretório e adicione as informações do servidor proxy.

    sudo mkdir /etc/systemd/system/crio.service.d
    sudo vi /etc/systemd/system/crio.service.d/proxy.conf
    
  3. Substitua os valores de proxy apropriados para aqueles no ambiente usando o exemplo de arquivo proxy.conf:

    [Service]
    Environment="HTTP_PROXY=proxy.example.com:80"
    Environment="HTTPS_PROXY=proxy.example.com:80"
    Environment="NO_PROXY=.example.com,192.0.2.*"
    
  4. Se o serviço docker ou containerd estiver em execução, interrompa e desative-os.

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

Configurar Certificados de CA Privada X.509

Configure os Certificados de CA Privados X.509 para os novos nós de plano de controle e os nós de trabalho.

  1. Crie uma lista de novos nós.

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

    O script bash fornecido cria o nome do domínio do nó do operador e cria uma lista separada por vírgulas dos nós a serem adicionados ao cluster durante o procedimento de ampliação.

  2. Gere uma CA privada e um conjunto de certificados para os novos nós.

    Use a opção --byo-ca-cert para especificar o local do Certificado de CA existente e a opção --byo-ca-key para especificar o local da Chave de CA existente. Use a opção --nodes e forneça o FQDN do novo plano de controle e dos novos nós de trabalho.

    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
    

    Exemplo de Saída:

    [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
    

Transferir Certificados

Transfira os certificados recém-criados do nó do operador para todos os novos nós.

  1. Atualize os detalhes do usuário no script de transferência fornecido.

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

    Observação: O tutorial requer esta etapa porque o usuário padrão do script é opc. Como este tutorial e o ambiente de laboratório gratuito instalam o produto usando o usuário oracle, atualize a variável USER dentro do script adequadamente.

  2. Atualize as permissões de cada node.key gerado pelo script de criação do certificado.

    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. Transfira os certificados para cada um dos novos nós.

    Observação Esta etapa requer SSH sem senha configurado entre os nós. A configuração disso está fora do escopo deste tutorial, mas está pré-configurada no ambiente de laboratório gratuito.

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

Configurar o Agente da Plataforma para Usar os Certificados

Configure o Agente de Plataforma em cada novo nó para usar os certificados copiados na etapa anterior. Realizamos essa tarefa no nó do operador executando o comando sobre ssh.

  1. Configure o nó 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'
    

    Exemplo de Saída:

    [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 o nó 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'
    

    Exemplo de Saída:

    [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 o nó 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'
    

    Exemplo de Saída:

    [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 o nó 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'
    

    Exemplo de Saída:

    [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
    

Acessar o Balanceador de Carga do OCI e Exibir os Backends

Como ter mais de um nó definido para o plano de controle do Kubernetes requer um Balanceador de Carga, é interessante exibir a configuração que foi configurada automaticamente quando o ambiente de laboratório livre foi implantado. Isso mostrará os três nós implantados e configurados quando o laboratório for criado como tendo um status Healthy e os dois nós que serão adicionados nas próximas etapas como estando no status Critical.

  1. Alternar do Terminal para a área de trabalho Luna

  2. Abra a página de detalhes do Luna Lab usando o ícone Luna Lab.

  3. Clique no link Console do OCI.

    link do oci

  4. A página de log-in da Console do Oracle Cloud é exibida.

    log-in do console

  5. Informe User Name e Password (localizados na guia Luna Lab na seção Credenciais).

    un-pw

  6. Clique no menu de hambúrguer (na parte superior esquerda), em Rede e Balanceadores de Carga.

    selecionar rede

  7. A página Balanceadores de Carga é exibida.

    balanceador de carga

  8. Localize o Compartimento que está sendo usado na lista drop-down.

    oci-compartimento

  9. Clique no Balanceador de Carga listado na tabela (ocne-load-balancer).

    balanceador de carga

  10. Role a página para baixo e clique no link para Conjuntos de Backend (no lado esquerdo da seção Recursos).

    conjunto de backend

  11. A tabela Conjuntos de Backend é exibida. Clique no link chamado ocne-lb-backend-set na coluna Nome.

    balanceador de carga

  12. Clique no link para os Backends (no lado esquerdo da seção Recursos).

    link de backend

  13. Os Backends que representam os nós do plano de controle são exibidos.

    Observação Dois dos nós de backend estão no estado Crítico - falha na conexão porque esses nós ainda não fazem parte do cluster do plano de controle do Kubernetes. Mantenha essa guia do browser aberta, pois verificaremos novamente o status dos nós de backend após concluir as etapas de expansão.

    tabela de backend

Exibir os Nós do Kubernetes

Verifique os nós do Kubernetes disponíveis no momento no cluster. Observe que há três nós de plano de controle e cinco nós de trabalho.

  1. Confirme se os nós estão todos no status READY.

    kubectl get nodes
    

    Exemplo de Saída:

    [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
    

Adicionar Plano de Controle e Nós de Trabalho ao Arquivo de Configuração de Implantação

Adicione o FQDN (Fully Qualified Domain Name) e a porta de acesso do Agente de Plataforma (8090) a todos os nós de plano de controle e de trabalho a serem adicionados ao cluster.

Edite o arquivo de configuração de implantação YAML para incluir os novos nós do cluster. Adicione os nós do plano de controle na seção master-nodes ao adicionar os nós de trabalho à seção worker-node.

O nome do arquivo de configuração neste tutorial é myenvironment.yaml e atualmente inclui três planos de controle e cinco nós de trabalho.

  1. Confirme se o ambiente atual usa três nós de planos de controle e cinco nós de trabalho.

    cat ~/myenvironment.yaml
    

    Exemplo de Saída:

    ...
              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. Adicione o novo plano de controle e os nós de trabalho ao arquivo 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 se o plano de controle e os nós de trabalho foram adicionados ao arquivo myenvironment.yaml.

    cat ~/myenvironment.yaml
    

    Exemplo de Trecho:

    ...
              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   
    ...
    

O arquivo de configuração agora inclui os novos nós de plano de controle (ocne-control04 e ocne-control05) e os novos nós de trabalho (ocne-worker06 e ocne-worker07). Isso representa todos os nós de plano de controle e de trabalho que devem estar no cluster após a conclusão do scale-up.

Ampliar o Plano de Controle e os Nós de Trabalho

  1. Execute o comando de atualização do módulo.

    Use o comando olcnectl module update com a opção --config-file para especificar o local do arquivo de configuração. O Platform API Server valida o arquivo de configuração com o estado do cluster e reconhece que há mais nós que devem ser adicionados ao cluster. Responda y quando solicitado.

    Observação: Haverá um atraso entre os prompts na janela Terminal enquanto cada um dos módulos for atualizado. No ambiente de laboratório livre, esse atraso pode chegar a 10-15 minutos.

    olcnectl module update --config-file myenvironment.yaml
    

    Exemplo de Saída:

    [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. (Na Console do Cloud) Confirme se o Conjunto de Backend do Balanceador de Carga mostra cinco nós de Backend íntegros.

    lb-saudável

  3. Confirme se o novo plano de controle e os nós de trabalho foram adicionados ao cluster.

    kubectl get nodes
    

    Exemplo de Saída:

    [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 os novos nós de planos de controle (ocne-control04 e ocne-control05) e os novos nós de trabalho (ocne-work06 e ocne-worker07) agora estão incluídos no cluster. Confirmando assim que a operação de ampliação funcionou.

Reduzir os Nós do Plano de Controle

Para demonstrar que o plano de controle e os nós de trabalho podem ser dimensionados de forma independente, apenas vamos reduzir (remover) os nós de plano de controle nesta etapa.

  1. Confirme se o ambiente atual usa cinco nós de planos de controle e sete nós de trabalho.

    cat ~/myenvironment.yaml
    

    Exemplo de Saída:

    ...
              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 dimensionar o cluster de volta para o plano de controle original, remova os nós de plano de controle ocne-control04 e ocne-control05 do arquivo de configuração.

    sed -i '19d;20d' ~/myenvironment.yaml
    
  3. Confirme se o arquivo de configuração agora contém apenas três nós de planos de controle e os sete nós de trabalho.

    cat ~/myenvironment.yaml
    

    Exemplo de Trecho:

    ...
              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 a mensagem de aviso de atualização do módulo.

    É possível evitar e suprimir o prompt de confirmação durante a atualização do módulo adicionando a diretiva force: true ao arquivo de configuração. Esse directive precisa ser colocado imediatamente sob a diretiva 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 se o arquivo de configuração agora contém a diretiva force: true.

    cat ~/myenvironment.yaml
    

    Exemplo de Trecho:

    [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. Execute o comando para atualizar o cluster e remover os nós.

    Observação: isso pode levar alguns minutos para ser concluído.

    olcnectl module update --config-file myenvironment.yaml
    

    Exemplo de Saída:

    [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. (Na Console do Cloud) Confirme se o Conjunto de Backend do Balanceador de Carga mostra três nós íntegros (Health = 'OK') e dois não íntegros (Health = 'Critical - Connection failed'). O motivo pelo qual dois nós mostram que têm um status crítico é porque eles foram removidos do cluster do Kubernetes.

    lb-saudável

  8. Mostre que os nós do plano de controle foram removidos do cluster pelo Platform API Server. Confirme se os nós do plano de controle (ocne-control04 e ocne-control05) foram removidos.

    kubectl get nodes
    

    Exemplo de Saída:

    [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
    

Resumo

Isso conclui a demonstração que detalha como adicionar e remover nós do Kubernetes do cluster. Embora esse exercício demonstre a atualização simultânea do plano de controle e dos nós de trabalho, essa não é a abordagem recomendada para ampliar ou reduzir um cluster do Kubernetes do Oracle Cloud Native Environment e, em um ambiente de produção, provavelmente seria realizada separadamente.

Para Obter Mais Informações

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.