Observação:
- Este tutorial está disponível em um ambiente de laboratório gratuito fornecido pela Oracle.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir o laboratório, substitua esses valores por valores específicos ao seu ambiente de nuvem.
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:
- Kubernetes (
kubernetes
) - Helm (
helm
) - Módulo Oracle Cloud Infrastructure Cloud Controller Manager (
oci-ccm
)
A implantação inicial consiste no seguinte:
- 1 Nó do Operador
- 3 Nós do Plano de Controle
- 5 Nós de Trabalho
Baseia-se nos laboratórios:
- Implantar o Oracle Cloud Native Environment
- Implantar um Balanceador de Carga Externo com o Oracle Cloud Native Environment
- Usar o OCI Cloud Controller Manager no Oracle Cloud Native Environment
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:
-
4 sistemas Oracle Linux adicionais a serem usados como:
- 2 nós de plano de controle do Kubernetes
- 2 nós de trabalho do Kubernetes
-
Acesso a um Balanceador de Carga (o ambiente de laboratório gratuito usa o Balanceador de Carga do OCI)
-
Os sistemas devem ter:
- um mínimo do Oracle Linux 8 (x86_64) mais recente instalado e executando o Unbreakable Enterprise Kernel Release 6 (UEK R6).
- concluiu as etapas de pré-requisito para instalar o Oracle Cloud Native Environment
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
.
-
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.
-
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.
-
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
. -
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
-
Configure o comando
kubectl
.-
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.
-
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
-
-
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.
-
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
-
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
comoRunning
antes de prosseguir.
Se os valores na colunaREADY
não mostrarem todos os contêineres como iniciados e os valores na colunaSTATUS
não forem mostrados comoRunning
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.
-
Instale e ative o Agente de Plataforma.
sudo dnf install olcne-agent olcne-utils sudo systemctl enable olcne-agent.service
-
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
-
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.*"
-
Se o serviço
docker
oucontainerd
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.
-
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.
-
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.
-
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áriooracle
, atualize a variávelUSER
dentro do script adequadamente. -
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
-
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
.
-
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
-
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
-
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
-
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
.
-
Alternar do Terminal para a área de trabalho Luna
-
Abra a página de detalhes do Luna Lab usando o ícone Luna Lab.
-
Clique no link Console do OCI.
-
A página de log-in da Console do Oracle Cloud é exibida.
-
Informe
User Name
ePassword
(localizados na guia Luna Lab na seção Credenciais). -
Clique no menu de hambúrguer (na parte superior esquerda), em Rede e Balanceadores de Carga.
-
A página Balanceadores de Carga é exibida.
-
Localize o Compartimento que está sendo usado na lista drop-down.
-
Clique no Balanceador de Carga listado na tabela (ocne-load-balancer).
-
Role a página para baixo e clique no link para Conjuntos de Backend (no lado esquerdo da seção Recursos).
-
A tabela Conjuntos de Backend é exibida. Clique no link chamado ocne-lb-backend-set na coluna Nome.
-
Clique no link para os Backends (no lado esquerdo da seção Recursos).
-
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.
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.
-
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.
-
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 ...
-
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
-
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
-
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. Responday
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
-
(Na Console do Cloud) Confirme se o Conjunto de Backend do Balanceador de Carga mostra cinco nós de Backend íntegros.
-
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
eocne-control05
) e os novos nós de trabalho (ocne-work06
eocne-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.
-
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 ...
-
Para dimensionar o cluster de volta para o plano de controle original, remova os nós de plano de controle
ocne-control04
eocne-control05
do arquivo de configuração.sed -i '19d;20d' ~/myenvironment.yaml
-
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 ...
-
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. Essedirective
precisa ser colocado imediatamente sob a diretivaname: <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
-
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
-
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
-
(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. -
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
eocne-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
- Documentação do Oracle Cloud Native Environment
- Rastreamento do Oracle Cloud Native Environment
- Estação de Treinamento do Oracle Linux
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.
Scale a Kubernetes Cluster on Oracle Cloud Native Environment
F30806-12
September 2022
Copyright © 2022, Oracle and/or its affiliates.