|
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. |
Requisitos
K3s es muy ligero, pero tiene algunos requisitos mínimos que se detallan a continuación.
Ya sea que estés configurando K3s para ejecutarse en un contenedor o como un servicio nativo de Linux, cada nodo que ejecute K3s debe cumplir con los siguientes requisitos mínimos. Estos requisitos son la base para K3s y sus componentes empaquetados, y no incluyen los recursos consumidos por la carga de trabajo en sí.
Requisitos previos
Dos nodos no pueden tener el mismo nombre de host.
Si varios nodos tendrán el mismo nombre de host, o si los nombres de host pueden ser reutilizados por un sistema de aprovisionamiento automatizado, utiliza la opción --with-node-id para añadir un sufijo aleatorio a cada nodo, o idear un nombre único para pasar con --node-name o $K3S_NODE_NAME para cada nodo que añadas al clúster.
Arquitectura
K3s está disponible para las siguientes arquitecturas:
-
x86_64
-
armhf
-
arm64/aarch64
|
Tamaño de página ARM64
Antes de las versiones de mayo de 2023 (v1.24.14+k3s1, v1.25.10+k3s1, v1.26.5+k3s1, v1.27.2+k3s1), en sistemas |
Sistemas operativos
Se espera que K3s funcione en la mayoría de los sistemas Linux modernos.
Algunos sistemas operativos tienen requisitos adicionales de configuración:
- SUSE Linux Enterprise / openSUSE
-
Firewalld
Se recomienda desactivar firewalld:
systemctl disable firewalld --nowSi deseas mantener firewalld habilitado, por defecto, se requieren las siguientes reglas:
firewall-cmd --permanent --add-port=6443/tcp #apiserver firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16 #pods firewall-cmd --permanent --zone=trusted --add-source=10.43.0.0/16 #services firewall-cmd --reloadEs posible que se necesiten abrir puertos adicionales dependiendo de tu configuración. Consulta Reglas de entrada para más información. Si cambias el CIDR predeterminado para pods o servicios, necesitarás actualizar las reglas del firewall en consecuencia.
- Red Hat Enterprise Linux / CentOS / Fedora
-
RHEL 10
En RHEL 10, se requiere un paquete adicional:
sudo dnf install -y kernel-modules-extraFirewalld
Se recomienda desactivar firewalld:
systemctl disable firewalld --nowSi deseas mantener firewalld habilitado, por defecto, se requieren las siguientes reglas:
firewall-cmd --permanent --add-port=6443/tcp #apiserver firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16 #pods firewall-cmd --permanent --zone=trusted --add-source=10.43.0.0/16 #services firewall-cmd --reloadEs posible que se necesiten abrir puertos adicionales dependiendo de tu configuración. Consulta Reglas de entrada para más información. Si cambias el CIDR predeterminado para pods o servicios, necesitarás actualizar las reglas del firewall en consecuencia.
Versiones antiguas de RHEL/CentOSLas versiones del sistema operativo anteriores a RHEL 8.4 incluyen NetworkManager con un error conocido que interfiere con la red de K3s. Si utilizas una versión anterior, es necesario desactivar nm-cloud-setup y reiniciar el nodo:
systemctl disable nm-cloud-setup.service nm-cloud-setup.timer reboot - Ubuntu / Debian
-
UFW
Las versiones antiguas de Debian pueden sufrir de un error conocido en iptables. Consulta Problemas conocidos.
Se recomienda desactivar ufw (firewall sencillo):
ufw disableSi deseas mantener ufw habilitado, por defecto, se requieren las siguientes reglas:
ufw allow 6443/tcp #apiserver ufw allow from 10.42.0.0/16 to any #pods ufw allow from 10.43.0.0/16 to any #servicesEs posible que se necesiten abrir puertos adicionales dependiendo de tu configuración. Consulta Reglas de entrada para más información. Si cambias el CIDR predeterminado para pods o servicios, necesitarás actualizar las reglas del firewall en consecuencia.
- Raspberry Pi
-
Raspberry Pi OS está basado en Debian y puede sufrir de un error conocido en iptables. Consulta Problemas conocidos.
Cgroups
Las instalaciones estándar de Raspberry Pi OS no comienzan con
cgroupshabilitado. K3S necesitacgroupspara iniciar el servicio systemd.cgroups`se puede habilitar añadiendo `cgroup_memory=1 cgroup_enable=memorya/boot/firmware/cmdline.txt.En Debian 11 y versiones antiguas de Pi OS, el cmdline.txt se encuentra en
/boot/cmdline.txt.Ejemplo cmdline.txt:
console=serial0,115200 console=tty1 root=PARTUUID=58b06195-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait cgroup_memory=1 cgroup_enable=memory
Módulo Vxlan de Ubuntu
Con Ubuntu 21.10 a Ubuntu 23.10, el soporte de vxlan en Raspberry Pi se trasladó a un módulo del kernel separado. Este paso no es necesario para Ubuntu 24.04 y versiones posteriores.
sudo apt install linux-modules-extra-raspi
Para más información sobre qué sistemas operativos se probaron con clústeres K3s gestionados por Rancher, consulta los Términos de soporte y mantenimiento de Rancher.
Hardware
Los requisitos de hardware escalan según el tamaño de tus implementaciones. Los requisitos mínimos son:
| Nodo | CPU | RAM |
|---|---|---|
Servidor |
2 núcleos |
2 GB |
oficina postal |
1 núcleo |
512 MB |
Perfilado de Recursos captura los resultados de pruebas y análisis para determinar los requisitos mínimos de recursos para el agente K3s, el servidor K3s con una carga de trabajo y el servidor K3s con un agente.
Discos
El rendimiento de K3s depende del rendimiento de la base de datos. Para asegurar una velocidad óptima, recomendamos utilizar un SSD cuando sea posible.
Si despliegas K3s en un Raspberry Pi u otros dispositivos ARM, se recomienda que utilices un SSD externo. etcd es intensivo en escritura; las tarjetas SD y eMMC no pueden manejar la carga de IO.
Guía de Dimensionamiento del Servidor
Cuando hay limitaciones en la CPU y la RAM en el nodo del servidor (plano de control + etcd), hay limitaciones en la cantidad de nodos agentes que pueden unirse bajo condiciones de carga de trabajo estándar.
| CPU del Servidor | Server RAM | Número de Agentes |
|---|---|---|
2 |
4 GB |
0-350 |
4 |
8 GB |
351-900 |
8 |
16 GB |
901-1800 |
16+ |
32 GB |
1800+ |
|
Dimensionamiento de alta disponibilidad
Al utilizar una configuración de alta disponibilidad de 3 nodos de servidor, el número de agentes puede escalar aproximadamente ~50% más que la tabla anterior. Por ejemplo, 3 servidores con 4 vCPU/8 GB pueden escalar a ~1200 agentes. |
Se recomienda unir nodos de agentes en lotes de 50 o menos para permitir que la CPU libere espacio, ya que hay un pico al unirse a un nodo. ¡Recuerda modificar el valor predeterminado cluster-cidr si deseas más de 255 nodos!
Perfilado de Recursos contiene más información sobre cómo se encontraron estas recomendaciones.
Conectividad
El servidor K3s necesita que el puerto 6443 sea accesible por todos los nodos.
Los nodos deben poder alcanzar a otros nodos a través del puerto UDP 8472 al usar el backend Flannel VXLAN, o a través del puerto UDP 51820 (y 51821 si se utiliza IPv6) al usar el backend Flannel WireGuard. El nodo no debe escuchar en ningún otro puerto. K3s utiliza túneles inversos de modo que los nodos establecen conexiones salientes al servidor y todo el tráfico de kubelet pasa a través de ese túnel. Sin embargo, si no utilizas Flannel y proporcionas tu propio CNI personalizado, entonces los puertos necesarios por Flannel no son necesarios para K3s.
Si deseas utilizar el servidor de métricas, todos los nodos deben ser accesibles entre sí en el puerto 10250.
Si planeas lograr alta disponibilidad con etcd embebido, los nodos del servidor deben ser accesibles entre sí en los puertos 2379 y 2380.
|
Importante
El puerto VXLAN en los nodos no debe exponerse al mundo, ya que permite que tu red de clúster sea accesible para cualquiera. Ejecuta tus nodos detrás de un firewall/grupo de seguridad que desactive el acceso al puerto 8472. |
|
Flannel se basa en el plugin CNI Bridge para crear una red L2 que conmuta el tráfico. Pods rebeldes con |
Reglas de entrada para nodos K3s
| Protocolo | Puerto | Fuente | Destino | Descripción |
|---|---|---|---|---|
TCP |
2379-2380 |
Servidores |
Servidores |
Requerido solo para HA con etcd embebido |
TCP |
6443 |
Agentes |
Servidores |
Supervisor de K3s y servidor API de Kubernetes |
UDP |
8472 |
Todos los nodos |
Todos los nodos |
Requerido solo para Flannel VXLAN |
TCP |
10250 |
Todos los nodos |
Todos los nodos |
Métricas de Kubelet |
UDP |
51820 |
Todos los nodos |
Todos los nodos |
Requerido solo para Flannel Wireguard con IPv4 |
UDP |
51821 |
Todos los nodos |
Todos los nodos |
Requerido solo para Flannel Wireguard con IPv6 |
TCP |
5001 |
Todos los nodos |
Todos los nodos |
Requerido solo para el registro distribuido embebido (Spegel) |
TCP |
6443 |
Todos los nodos |
Todos los nodos |
Requerido solo para el registro distribuido embebido (Spegel) |
Típicamente, se permite todo el tráfico saliente.
Pueden ser necesarios cambios adicionales en el firewall dependiendo del sistema operativo utilizado.
Clústeres grandes
Los requisitos de hardware se basan en el tamaño de tu clúster K3s. Para producción y clústeres grandes, recomendamos utilizar una configuración de alta disponibilidad con una base de datos externa. Las siguientes opciones se recomiendan para la base de datos externa en producción:
-
MySQL
-
PostgreSQL
-
etcd
CPU y memoria
Los siguientes son los requisitos mínimos de CPU y memoria para los nodos en un servidor K3s de alta disponibilidad:
| Tamaño de despliegue | Nodos | vCPUs | RAM |
|---|---|---|---|
Pequeño |
Hasta 10 |
2 |
4 GB |
Media |
Hasta 100 |
4 |
8 GB |
Grande |
Hasta 250 |
8 |
16 GB |
X-Grande |
Hasta 500 |
16 |
32 GB |
XX-Large |
500+ |
32 |
64 GB |
Discos
El rendimiento del clúster depende del rendimiento de la base de datos. Para asegurar una velocidad óptima, recomendamos utilizar siempre discos SSD para respaldar tu clúster K3s. En proveedores de nube, también querrás utilizar el tamaño mínimo que permita el máximo IOPS.
Red
Deberías considerar aumentar el tamaño de la subred para el CIDR del clúster para que no te quedes sin IPs para los pods. Puedes hacerlo pasando la opción --cluster-cidr al servidor K3s al iniciarlo.
Base de datos
K3s soporta diferentes bases de datos incluyendo MySQL, PostgreSQL, MariaDB y etcd. Consulta Datastore del Clúster para más información.
Lo siguiente es una guía de dimensionamiento para los recursos de base de datos que necesitas para ejecutar clústeres grandes:
| Tamaño de ampliación | Nodos | vCPUs | RAM |
|---|---|---|---|
Pequeño |
Hasta 10 |
1 |
2 GB |
Media |
Hasta 100 |
2 |
8 GB |
Grande |
Hasta 250 |
4 |
16 GB |
X-Grande |
Hasta 500 |
8 |
32 GB |
XX-Large |
500+ |
16 |
64 GB |