|
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. |
Clúster híbrido o multinube distribuido
Un clúster K3s aún se puede desplegar en nodos que no comparten una red privada común y no están conectados directamente (por ejemplo, nodos en diferentes nubes públicas). Hay dos opciones para lograr esto: la solución k3s multinube integrada y la integración con el tailscale proveedor de VPN.
|
La latencia entre nodos aumentará a medida que la conectividad externa requiera más saltos. Esto reducirá el rendimiento de la red y también podría afectar la salud del clúster si la latencia es demasiado alta. |
|
El etcd integrado no es compatible con este tipo de despliegue. Si se utiliza etcd integrado, todos los nodos del servidor deben ser accesibles entre sí a través de sus IPs privadas. Los agentes pueden estar distribuidos en múltiples redes, pero todos los servidores deben estar en la misma ubicación. |
Solución k3s multinube integrada
K3s utiliza wireguard para establecer una malla VPN para el tráfico del clúster. Los nodos deben tener cada uno una IP única a través de la cual se les pueda alcanzar (normalmente una IP pública). El tráfico del supervisor de K3s utilizará un túnel websocket, y el tráfico del clúster (CNI) utilizará un túnel wireguard.
Para habilitar este tipo de despliegue, debes añadir los siguientes parámetros en los servidores:
--node-external-ip=<SERVER_EXTERNAL_IP> --flannel-backend=wireguard-native --flannel-external-ip
y en los agentes:
--node-external-ip=<AGENT_EXTERNAL_IP>
donde SERVER_EXTERNAL_IP es la IP a través de la cual podemos alcanzar el nodo del servidor y AGENT_EXTERNAL_IP es la IP a través de la cual podemos alcanzar el nodo del agente. Ten en cuenta que el parámetro de configuración K3S_URL en el agente debe utilizar el SERVER_EXTERNAL_IP para poder conectarse a él. Recuerda comprobar los Requisitos de Red y permitir el acceso a los puertos listados en ambas direcciones, interna y externa.
Tanto SERVER_EXTERNAL_IP como AGENT_EXTERNAL_IP deben tener conectividad entre ellos y normalmente son IPs públicas.
|
IPs dinámicas
Si se asignan IPs dinámicas a los nodos y la IP cambia (por ejemplo, en AWS), debes modificar el parámetro
|
Integración con el proveedor de VPN Tailscale (experimental)
Disponible en v1.27.3, v1.26.6, v1.25.11 y versiones posteriores.
K3s puede integrarse con Tailscale para que los nodos utilicen el servicio de VPN Tailscale y construyan una malla entre nodos.
Hay cuatro pasos que deben realizarse con Tailscale antes de desplegar K3s:
-
Inicia sesión en tu cuenta de Tailscale
-
En
Settings > Keys, genera una clave de autenticación ($AUTH-KEY), que puede ser reutilizable para todos los nodos en tu clúster. -
Decide el podCIDR que utilizará el clúster (por defecto
10.42.0.0/16). Añade el CIDR (o CIDRs para doble pila) en el control de acceso con la estrofa:"autoApprovers": { "routes": { "10.42.0.0/16": ["your_account@xyz.com"], "2001:cafe:42::/56": ["your_account@xyz.com"], }, }, -
Instala Tailscale en tus nodos:
curl -fsSL https://tailscale.com/install.sh | sh
Para desplegar K3s con la integración de Tailscale habilitada, debes añadir el siguiente parámetro en cada uno de tus nodos:
--vpn-auth="name=tailscale,joinKey=$AUTH-KEY"
o proporciona esa información en un archivo y utiliza el parámetro:
--vpn-auth-file=$PATH_TO_FILE
Opcionalmente, si tienes tu propio servidor Tailscale (por ejemplo, headscale), puedes conectarte a él añadiendo ,controlServerURL=$URL a los parámetros de vpn-auth.
A continuación, puedes proceder a crear el servidor utilizando el siguiente comando:
k3s server --token <token> --vpn-auth="name=tailscale,joinKey=<joinKey>" --node-external-ip=<TailscaleIPOfServerNode>
Después de ejecutar este comando, accede a la consola de administración de Tailscale para aprobar el nodo y la subred de Tailscale (si no se han aprobado ya a través de autoApprovers).
Una vez que el servidor esté configurado, conecta los agentes utilizando:
k3s agent --token <token> --vpn-auth="name=tailscale,joinKey=<joinKey>" --server https://<TailscaleIPOfServerNode>:6443 --node-external-ip=<TailscaleIPOfAgentNode>
Nuevamente, aprueba el nodo y la subred de Tailscale como hiciste para el servidor.
Si tienes ACLs activadas en Tailscale, necesitas añadir una regla de "aceptar" para permitir que los pods se comuniquen entre sí. Suponiendo que la clave de autenticación que creaste etiqueta automáticamente los nodos de Tailscale con la etiqueta testing-k3s, la regla debería verse así:
"acls": [
{
"action": "accept",
"src": ["tag:testing-k3s", "10.42.0.0/16"],
"dst": ["tag:testing-k3s:*", "10.42.0.0/16:*"],
},
],
|
Si planeas ejecutar varios clústeres de K3s utilizando la misma red de Tailscale, por favor crea las ACLs apropiadas para evitar conflictos de IP o utiliza diferentes subredes podCIDR para cada clúster. |