Nota:
- Este tutorial está disponible en un entorno de laboratorio gratuito proporcionado por Oracle.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
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:
- Kubernetes (
kubernetes
) - Helm (
helm
) - Módulo de Oracle Cloud Infrastructure Cloud Controller Manager (
oci-ccm
)
El despliegue inicial consta de lo siguiente:
- 1 nodo de operador
- 3 nodos de plano de control
- 5 nodos de trabajador
Se basa en los laboratorios:
- Despliegue Oracle Cloud Native Environment
- Despliegue de un equilibrador de carga externo con Oracle Cloud Native Environment
- Uso de OCI Cloud Controller Manager en Oracle Cloud Native Environment
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:
-
4 sistemas Oracle Linux adicionales para usar como:
- 2 nodos de plano de control de Kubernetes
- 2 nodos de trabajador de Kubernetes
-
Acceso a un equilibrador de carga (el entorno de prácticas gratuitas utiliza el equilibrador de carga de OCI)
-
Los sistemas deben tener:
- un mínimo de la versión más reciente de Oracle Linux 8 (x86_64) instalada y en ejecución de Unbreakable Enterprise Kernel versión 6 (UEK R6).
- ha realizado los pasos previos necesarios para instalar Oracle Cloud Native Environment
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
.
-
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.
-
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.
-
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
. -
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
-
Configure el comando
kubectl
.-
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.
-
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
-
-
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.
-
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
-
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
comoRunning
antes de continuar.
Si los valores de la columnaREADY
no muestran todos los contenedores como iniciados y los de la columnaSTATUS
no se muestran comoRunning
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.
-
Instale y active el agente de plataforma.
sudo dnf install olcne-agent olcne-utils sudo systemctl enable olcne-agent.service
-
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
-
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.*"
-
Si el servicio
docker
ocontainerd
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.
-
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.
-
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.
-
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 usuariooracle
, actualice la variableUSER
en el script según corresponda. -
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
-
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
.
-
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
-
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
-
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
-
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
.
-
Cambie de Terminal a Luna
-
Abra la página de detalles Luna Lab mediante el icono Luna Lab.
-
Haga clic en el enlace Consola de OCI.
-
Se muestra la página de conexión a la consola de Oracle Cloud.
-
Introduzca
User Name
yPassword
(que se encuentran en el separador Luna Lab de la sección Credenciales). -
Haga clic en el menú de hamburguesa (parte superior izquierda) y, a continuación, en Red y Equilibradores de carga.
-
Se muestra la página Equilibradores de carga.
-
Localice el compartimento que se está utilizando en la lista desplegable.
-
Haga clic en el equilibrador de carga que se muestra en la tabla (ocne-load-balancer).
-
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).
-
Se muestra la tabla Juegos de backends. Haga clic en el enlace denominado ocne-lb-backend-set en la columna Nombre.
-
Haga clic en el enlace a Backends (en la parte izquierda de la sección Recursos).
-
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.
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.
-
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.
-
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 ...
-
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
-
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
-
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. Responday
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
-
(En la consola en la nube) Confirme que el juego de backends del equilibrador de carga muestra cinco nodos de backend en buen estado.
-
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
yocne-control05
) y los nuevos nodos de trabajador (ocne-work06
yocne-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.
-
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 ...
-
Para volver a reducir el cluster a los tres planos de control originales, elimine los nodos de plano de control
ocne-control04
yocne-control05
del archivo de configuración.sed -i '19d;20d' ~/myenvironment.yaml
-
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 ...
-
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. Estadirective
se debe colocar inmediatamente bajo la directivaname: <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 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
-
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
-
(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. -
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
yocne-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
- Documentación del entorno nativo de Oracle Cloud
- Seguimiento de Oracle Cloud Native Environment
- Estación de formación de Oracle Linux
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.
Scale a Kubernetes Cluster on Oracle Cloud Native Environment
F30806-12
September 2022
Copyright © 2022, Oracle and/or its affiliates.