¿Cómo instalar un clúster K3s de alta disponibilidad?

Sobre el Autor

Janakiram MSV es el analista principal de Janakiram & Associates y profesor a tiempo parcial de la Escuela Internacional de Tecnología de la Información. También es desarrollador
calificado de Google
, arquitecto de soluciones certificado por Amazon, desarrollador certificado por Amazon, administrador certificado de operaciones de sistemas de Amazon y profesional certificado por Microsoft Azure.

Janakiram es el embajador de Cloud Native Computing Foundation y uno de los primeros administradores y desarrolladores de aplicaciones certificados de Kubernetes. Ha trabajado en
empresas de renombre como Microsoft, AWS y Gigaom Research.

En el artículo anterior , hemos aprendido cómo configurar un clúster etcd de varios nodos. En este artículo, usaremos la misma infraestructura para instalar y configurar un clúster de Kubernetes de alta disponibilidad basado en K3.

Clúster de Kubernetes de alta disponibilidad

El plano de control de un clúster de Kubernetes es en su mayoría sin estado. El único componente del plano de control con estado es la base de datos etcd, que sirve como la única fuente de verdad para todo el clúster. API Server sirve como puerta de enlace de la base de datos etcd, a través de la cual los usuarios internos y externos pueden acceder y operar el estado.

La base de datos etcd debe configurarse en modo HA para garantizar que no haya un solo punto de falla. Hay dos opciones para configurar la topología de un clúster de Kubernetes de alta disponibilidad (HA), según cómo se configure etcd.

La primera topología se basa en un diseño de clúster de pila y cada nodo ejecuta una instancia de etcd con el plano de control. Cada nodo del plano de control ejecuta una instancia de kube-apiserver, kube-Scheduler y kube-controller-manager. kube-apiserver usa un balanceador de carga para exponer a los nodos trabajadores.

Cada nodo del plano de control crea un miembro etcd local, y el miembro etcd solo se comunica con el kube-apiserver de este nodo. Lo mismo se aplica a las instancias locales de kube-controller-manager y kube-Scheduler.

Esta topología requiere al menos tres modos de plano de control de pila para clústeres HA Kubernetes. Kubeadm, esta popular herramienta de instalación de clústeres, utiliza esta topología para configurar clústeres de Kubernetes.

Inserte la descripción de la imagen aquí

La segunda topología utiliza un clúster etcd externo instalado y administrado en un conjunto de hosts completamente diferente.

En esta topología, cada nodo del plano de control ejecuta instancias de kube-apiserver , kube-Scheduler y kube-controller-manager , donde cada host etcd se comunica con el kube-apiserver de cada nodo del plano de control .

Inserte la descripción de la imagen aquí

El número de hosts necesarios para esta topología es el doble que el de la topología de alta disponibilidad apilada. El clúster de alta disponibilidad que utiliza esta topología requiere al menos tres hosts de nodo del plano de control y tres hosts de nodo etcd.

Para obtener más información sobre cómo iniciar un clúster, consulte la documentación oficial de Kubernetes:

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/ha-topology/

K3 en modo de alta disponibilidad

Dado que los K3 se implementan principalmente en el borde y los recursos de hardware son limitados, es posible que no sea posible ejecutar la base de datos etcd en un host dedicado. La arquitectura de implementación es muy similar a la topología apilada, excepto que la base de datos etcd se configura de antemano.

Inserte la descripción de la imagen aquí

En este tutorial, estoy usando una infraestructura básica que se ejecuta en hardware Intel NUC. La asignación es la siguiente:

Inserte la descripción de la imagen aquí

Consulte la parte anterior de esta serie de tutoriales para instalar y configurar etcd en los primeros tres nodos con direcciones IP 10.0.0.60, 10.0.0.61 y 10.0.0.62.

Instalar el servidor K3s

Primero instalemos el servidor en todos los nodos donde está instalado etcd. SSH en el primer nodo y establezca las siguientes variables de entorno. Esto supone que ha configurado el clúster etcd siguiendo los pasos del tutorial anterior.

export K3S_DATASTORE_ENDPOINT='https://10.0.0.60:2379,https://10.0.0.61:2379,https://10.0.0.62:2379'
export K3S_DATASTORE_CAFILE='/etc/etcd/etcd-ca.crt'
export K3S_DATASTORE_CERTFILE='/etc/etcd/server.crt'
export K3S_DATASTORE_KEYFILE='/etc/etcd/server.key'

Estas variables de entorno indican al instalador de K3s que utilice la base de datos etcd existente para la gestión del estado.

A continuación, llenaremos K3S_TOKEN con un token que se usará cuando el agente se una al clúster.

export K3S_TOKEN="secret_edgecluster_token"

Estamos listos para instalar el servidor en el primer nodo. Ejecute el siguiente comando para iniciar el proceso:

curl -sfL https://get.k3s.io | sh -

Repita estos pasos en el nodo 2 y el nodo 3 para iniciar servidores adicionales.

En este punto, tiene un clúster K3s de 3 nodos que ejecuta el plano de control y los componentes etcd en modo de alta disponibilidad.

sudo kubectl get nodes

Inserte la descripción de la imagen aquí

Puede verificar el estado del servicio con el siguiente comando:

sudo systemctl status k3s.service

Inserte la descripción de la imagen aquí

Instalar el agente de K3s

Con el establecimiento y operación del plano de control, podemos agregar fácilmente nodos trabajadores y agentes al clúster. Solo debemos asegurarnos de usar el mismo token asociado con el servidor.

SSH en uno de los nodos de trabajo y ejecute comandos.

export K3S_TOKEN="secret_edgecluster_token"
export K3S_URL=https://10.0.0.60:6443

La variable de entorno K3S_URL es el agente que solicita al instalador que configure el nodo para conectarse al servidor existente.

Finalmente, ejecute el mismo script que hicimos en el paso anterior.

curl -sfL https://get.k3s.io | sh -

Inserte la descripción de la imagen aquí

Verifique si el nuevo nodo se ha agregado al clúster.

Inserte la descripción de la imagen aquí

¡Felicidades! Ha instalado correctamente un clúster K3s de alta disponibilidad y ha realizado una copia de seguridad de una base de datos externa etcd.

Verificar la base de datos etcd

Asegurémonos de que el clúster k3s esté utilizando la base de datos etcd para la gestión del estado.

Comenzaremos un Pod NGINX simple en el clúster K3s.

sudo kubectl run nginx --image nginx --port 80
sudo kubectl get pods

Inserte la descripción de la imagen aquí

Las especificaciones y el estado del pod deben almacenarse en la base de datos etcd. Intentemos recuperarlo a través de etcdctl CLI. Instale la herramienta jq para analizar la salida JSON.

Dado que la salida está codificada en base64, la decodificaremos con la herramienta base64.

etcdctl --endpoints https://10.0.0.61:2379 \
--cert /etc/etcd/server.crt \
--cacert /etc/etcd/etcd-ca.crt \
--key /etc/etcd/server.key get /registry/pods/default/nginx \
--prefix=true -w json | jq -r .kvs[].value | base64 -d

Inserte la descripción de la imagen aquí

El resultado muestra que el pod tiene una clave y un valor asociados en la base de datos etcd. El carácter especial no se muestra correctamente, pero nos muestra suficientes datos sobre el pod.

En este artículo, aprendimos cómo instalar y configurar el clúster K3s en modo de alta disponibilidad, con la esperanza de ayudarlo a practicar con mayor fluidez en el borde.

Supongo que te gusta

Origin blog.csdn.net/qq_42206813/article/details/109391034
Recomendado
Clasificación