|
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. |
Alta disponibilidad de etcd embebido
|
El etcd embebido (HA) puede tener problemas de rendimiento en discos más lentos, como Raspberry Pis que funcionan con tarjetas SD. |
¿Por qué un número impar de nodos de servidor?
Un clúster HA de etcd embebido debe estar compuesto por un número impar de nodos de servidor para que etcd mantenga el quórum. Para un clúster con n servidores, el quórum es (n/2)+1. Para cualquier clúster de tamaño impar, añadir un nodo siempre aumentará el número de nodos necesarios para el quórum. Aunque añadir un nodo a un clúster de tamaño impar parece mejor ya que hay más máquinas, la tolerancia a fallos es peor, ya que exactamente el mismo número de nodos puede fallar sin perder el quórum, pero hay más nodos que pueden fallar.
Un clúster HA K3s con etcd embebido está compuesto por:
-
Tres o más nodos de servidor que servirán la API de Kubernetes y ejecutarán otros servicios del plano de control, así como alojar la base de datos etcd embebida.
-
Opcional: Cero o más nodos agentes que están designados para ejecutar tus aplicaciones y servicios
-
Opcional: Una dirección de registro fija para que los nodos agentes se registren en el clúster
|
Para desplegar rápidamente grandes clústeres HA, consulta Proyectos Relacionados |
Para empezar, lanza primero un nodo de servidor con la bandera cluster-init para habilitar el clustering y un token que servirá como secreto compartido para unir servidores adicionales al clúster.
curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s K3S_TOKEN=SECRET sh -s - server \
--cluster-init \
--tls-san=<FIXED_IP> # Optional, needed if using a fixed registration address
Después de lanzar el primer servidor, une el segundo y el tercer servidor al clúster utilizando el secreto compartido:
curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s K3S_TOKEN=SECRET sh -s - server \
--server https://<ip or hostname of server1>:6443 \
--tls-san=<FIXED_IP> # Optional, needed if using a fixed registration address
Donde INSTALL_K3S_ARTIFACT_URL es la URL de Artefactos Primarios
Verifica que el segundo y el tercer servidor ahora son parte del clúster:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
server1 Ready control-plane,etcd,master 28m vX.Y.Z
server2 Ready control-plane,etcd,master 13m vX.Y.Z
server3 Ready control-plane,etcd,master 10m vX.Y.Z
Ahora tienes un plano de control altamente disponible. Cualquier servidor agrupado con éxito puede ser utilizado en el argumento --server para unir nodos de servidor y agentes adicionales. Unir nodos agentes adicionales al clúster sigue el mismo procedimiento que los servidores:
curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s K3S_TOKEN=SECRET sh -s - agent --server https://<ip or hostname of server>:6443
Hay algunas banderas de configuración que deben ser las mismas en todos los nodos del servidor:
-
Banderas relacionadas con la red:
--cluster-dns,--cluster-domain,--cluster-cidr,--service-cidr -
Banderas que controlan el despliegue de ciertos componentes:
--disable-helm-controller,--disable-kube-proxy,--disable-network-policyy cualquier componente pasado a--disable -
Banderas relacionadas con características:
--secrets-encryption
Clústeres existentes de un solo nodo
Si tienes un clúster existente que utiliza la base de datos SQLite embebida por defecto, puedes convertirlo a etcd simplemente reiniciando tu servidor K3s con la bandera --cluster-init. Una vez que hayas hecho eso, podrás añadir instancias adicionales como se ha descrito anteriormente.
Si se encuentra un almacén de datos etcd en el disco, ya sea porque ese nodo se ha inicializado o se ha unido a un clúster, se ignoran los argumentos del almacén de datos (--cluster-init, --server, --datastore-endpoint, etc).