|
Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado. |
Balanceador de Carga de Clúster
Esta sección describe cómo instalar un balanceador de carga externo delante de los nodos del servidor de un clúster K3s de alta disponibilidad (HA). Se proporcionan dos ejemplos: Nginx y HAProxy.
|
Los balanceadores de carga externos no deben confundirse con el ServiceLB integrado, que es un controlador embebido que permite el uso de Servicios LoadBalancer de Kubernetes sin desplegar un controlador de balanceador de carga de terceros. Para más detalles, consulta Balanceador de Carga de Servicio. Los balanceadores de carga externos pueden utilizarse para proporcionar una dirección de registro fija para registrar nodos, o para el acceso externo al Servidor API de Kubernetes. Para exponer Servicios LoadBalancer, se pueden utilizar balanceadores de carga externos junto con o en lugar de ServiceLB, pero en la mayoría de los casos, controladores de balanceador de carga de reemplazo como MetalLB o Kube-VIP son una mejor opción. |
Requisitos previos
Todos los nodos en este ejemplo están ejecutando Ubuntu 20.04.
Para ambos ejemplos, asume que se ha instalado un clúster HA K3s con etcd embebido en 3 nodos.
Cada servidor k3s está configurado con:
# /etc/rancher/k3s/config.yaml
token: lb-cluster-gd
tls-san: 10.10.10.100
Los nodos tienen nombres de host e IPs de:
-
servidor-1:
10.10.10.50 -
servidor-2:
10.10.10.51 -
servidor-3:
10.10.10.52
Se configuran dos nodos adicionales para el balance de la carga con nombres de host e IPs de:
-
lb-1:
10.10.10.98 -
lb-2:
10.10.10.99
Existen tres nodos adicionales con nombres de host e IPs de:
-
agente-1:
10.10.10.101 -
agente-2:
10.10.10.102 -
agente-3:
10.10.10.103
Configura el balanceador de carga
-
HAProxy
-
Nginx
HAProxy es una opción de código abierto que proporciona un balanceador de carga TCP. También admite alta disponibilidad para el propio balanceador de carga, asegurando redundancia en todos los niveles. Consulta Documentación de HAProxy para más información.
Además, utilizaremos KeepAlived para generar una IP virtual (VIP) que se utilizará para acceder al clúster. Consulta Documentación de KeepAlived para más información.
-
Instala HAProxy y KeepAlived:
sudo apt-get install haproxy keepalived -
Añade lo siguiente a
/etc/haproxy/haproxy.cfgen lb-1 y lb-2:frontend k3s-frontend bind *:6443 mode tcp option tcplog default_backend k3s-backend backend k3s-backend mode tcp option tcp-check balance roundrobin default-server inter 10s downinter 5s server server-1 10.10.10.50:6443 check server server-2 10.10.10.51:6443 check server server-3 10.10.10.52:6443 check -
Añade lo siguiente a
/etc/keepalived/keepalived.confen lb-1 y lb-2:global_defs { enable_script_security script_user root } vrrp_script chk_haproxy { script 'killall -0 haproxy' # faster than pidof interval 2 } vrrp_instance haproxy-vip { interface eth1 state <STATE> # MASTER on lb-1, BACKUP on lb-2 priority <PRIORITY> # 200 on lb-1, 100 on lb-2 virtual_router_id 51 virtual_ipaddress { 10.10.10.100/24 } track_script { chk_haproxy } } -
Reinicia HAProxy y KeepAlived en lb-1 y lb-2:
systemctl restart haproxy systemctl restart keepalived -
En agente-1, agente-2 y agente-3, ejecuta el siguiente comando para instalar k3s y unirte al clúster:
curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s K3S_TOKEN=lb-cluster-gd sh -s - agent --server https://10.10.10.100:6443Donde
INSTALL_K3S_ARTIFACT_URLes la URL de Prime ArtifactsAhora puedes usar
kubectldesde el nodo del servidor para interactuar con el clúster.root@server-1 $ k3s kubectl get nodes -A NAME STATUS ROLES AGE VERSION agent-1 Ready <none> 32s v1.27.3+k3s1 agent-2 Ready <none> 20s v1.27.3+k3s1 agent-3 Ready <none> 9s v1.27.3+k3s1 server-1 Ready control-plane,etcd,master 4m22s v1.27.3+k3s1 server-2 Ready control-plane,etcd,master 3m58s v1.27.3+k3s1 server-3 Ready control-plane,etcd,master 3m12s v1.27.3+k3s1
|
Nginx no admite nativamente una configuración de alta disponibilidad (HA). Si configuras un clúster HA, tener un único balanceador de carga frente a K3s reintroducirá un único punto de fallo. |
Nginx Open Source proporciona un balanceador de carga TCP. Consulta Usando nginx como balanceador de carga HTTP para más información.
-
Cree un archivo
nginx.confen lb-1 con el siguiente contenido:events {} stream { upstream k3s_servers { server 10.10.10.50:6443; server 10.10.10.51:6443; server 10.10.10.52:6443; } server { listen 6443; proxy_pass k3s_servers; } } -
Ejecute el balanceador de carga Nginx en lb-1:
Usando docker:
docker run -d --restart unless-stopped \ -v ${PWD}/nginx.conf:/etc/nginx/nginx.conf \ -p 6443:6443 \ nginx:stableO instale nginx y luego ejecute:
cp nginx.conf /etc/nginx/nginx.conf systemctl start nginx -
En agente-1, agente-2 y agente-3, ejecuta el siguiente comando para instalar k3s y unirte al clúster:
curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s K3S_TOKEN=lb-cluster-gd sh -s - agent --server https://10.10.10.98:6443Ahora puedes usar
kubectldesde el nodo del servidor para interactuar con el clúster.root@server1 $ k3s kubectl get nodes -A NAME STATUS ROLES AGE VERSION agent-1 Ready <none> 30s v1.27.3+k3s1 agent-2 Ready <none> 22s v1.27.3+k3s1 agent-3 Ready <none> 13s v1.27.3+k3s1 server-1 Ready control-plane,etcd,master 4m49s v1.27.3+k3s1 server-2 Ready control-plane,etcd,master 3m58s v1.27.3+k3s1 server-3 Ready control-plane,etcd,master 3m16s v1.27.3+k3s1