paint-brush
Configuración y administración de un clúster de Kubernetes con Kubeadmpor@humalect
2,091 lecturas
2,091 lecturas

Configuración y administración de un clúster de Kubernetes con Kubeadm

por Humalect Inc11m2023/08/09
Read on Terminal Reader

Demasiado Largo; Para Leer

Este tutorial de Kubeadm cubre los aspectos básicos de la creación y administración de clústeres de Kubernetes mediante los comandos de Kubeadm. Explica los Kubernetes autohospedados, los pros y los contras, y luego profundiza en el propósito de Kubeadm. Brinda ejemplos y detalla los 20 comandos más comunes de Kubeadm, incluida la inicialización del plano de control, la unión de nodos trabajadores, el restablecimiento de clústeres, la actualización de versiones y la administración de componentes. El tutorial también describe la creación de un clúster de Kubernetes con Kubeadm, el manejo de los componentes del clúster y enfatiza las mejores prácticas, como el uso de Kubeadm para escalar automáticamente los clústeres de producción, realizar copias de seguridad regulares de etcd y monitorear los nodos de manera efectiva.
featured image - Configuración y administración de un clúster de Kubernetes con Kubeadm
Humalect Inc HackerNoon profile picture
0-item
1-item

En este tutorial de Kubeadm, exploraremos todo lo que necesita saber sobre los comandos de Kubeadm y cómo usarlos para crear clústeres y administrar componentes de clústeres en Kubernetes (K8s).

No solo aprenderá a crear su propio clúster de Kubernetes con Kubeadm, sino que también dominará el arte de administrar los componentes del clúster y descubrirá las prácticas recomendadas de Kubeadm.


Únase a nosotros en este emocionante viaje al mundo de Kubeadm, donde desbloqueará el poder de orquestar contenedores con facilidad.


¡Sumerjámonos y convirtámonos juntos en expertos de Kubeadm! Antes de profundizar en kubeadm , ¿qué es exactamente Kubernetes autohospedado (K8)?


Descripción general del contenido

  • ¿Qué es Kubernetes autohospedado? - Pros y contras
  • ¿Qué es Kubeadm?
  • Ejemplos de Kubeadm
  • Los 20 comandos de Kubeadm más comunes
  • Cómo crear un clúster de Kubernetes con Kubeadm
  • Cómo administrar los componentes del clúster con Kubeadm
  • Prácticas recomendadas de Kubeadm


¿Qué es Kubernetes autohospedado? - Pros y contras

Kubernetes autohospedado, también conocido como implementación de Kubernetes "bare metal" o "local", se refiere a la ejecución de Kubernetes directamente en máquinas físicas o virtuales sin depender de un servicio de Kubernetes administrado proporcionado por un proveedor de la nube (como EKS de AWS). ).


Estos son algunos pros y contras de los Kubernetes autohospedados:


Ventajas de los Kubernetes autohospedados

1. Control total y personalización

Con Kubernetes autohospedado, tiene control total sobre la configuración, las redes y la infraestructura del clúster. Esto le permite personalizar y optimizar el clúster de acuerdo con sus requisitos específicos y capacidades de infraestructura.

2. Rentabilidad

Kubernetes autohospedado puede ser más rentable, especialmente para implementaciones a largo plazo, en comparación con el uso de servicios de Kubernetes administrados que a menudo incurren en tarifas adicionales. El alojamiento propio le permite aprovechar los recursos de hardware existentes y evitar los costos generales de los servicios administrados. (y ahorrar un montón de dinero)

3. Seguridad y Cumplimiento

Kubernetes de alojamiento propio le brinda control directo sobre las medidas de seguridad, como las políticas de red, el cifrado, los controles de acceso y los requisitos de cumplimiento. Esto le permite implementar las mejores prácticas de seguridad de Kubernetes específicas para las necesidades y los estándares regulatorios de su organización. (log4j, ¿te suena algo?)

4. Asignación de recursos

Kubernetes autohospedado le permite asignar recursos exclusivamente a su clúster sin compartirlos con otros inquilinos. Esto permite una mejor utilización de los recursos y evita posibles problemas de rendimiento que pueden surgir de la contención de recursos en un entorno compartido.


Contras de Kubernetes autoalojado

1. Gestión de Infraestructura

Kubernetes autohospedado requiere experiencia en la gestión y el mantenimiento de la infraestructura subyacente.


Usted es responsable de aprovisionar, configurar y monitorear los servidores, las redes, el almacenamiento y otros componentes del clúster. Esto puede llevar mucho tiempo y requerir recursos dedicados y contratación adicional.

2. Escalabilidad y elasticidad

El escalado de clústeres de Kubernetes autohospedados puede ser más complejo en comparación con los servicios administrados que ofrecen capacidades de escalado automatizado.


Debe planificar y aprovisionar recursos con anticipación para manejar las cargas máximas, y agregar o eliminar nodos puede requerir una intervención manual.

3. Complejidad operativa

Kubernetes autohospedado presenta complejidades operativas adicionales, como la gestión de actualizaciones, parches, copias de seguridad y alta disponibilidad. Estas tareas requieren una planificación, prueba y coordinación cuidadosas para garantizar una interrupción mínima del clúster y las aplicaciones o, de lo contrario, un aumento en el tiempo de inactividad de la producción.


¿Qué es Kubeadm?

Kubeadm es una herramienta de línea de comandos que simplifica el proceso de configuración y administración de un clúster de Kubernetes, lo que facilita que los miembros de la comunidad técnica se sumerjan en el mundo de la orquestación de contenedores.


Piense en kubeadm como su asistente de confianza que se ocupa de los detalles esenciales de la configuración del clúster , lo que le permite concentrarse en el panorama general.


Automatiza tareas complejas como configurar componentes esenciales, generar certificados y garantizar que su clúster siga las mejores prácticas.


Ejemplos de Kubeadm

Echemos un vistazo a algunos ejemplos y comandos para comprender mejor cómo funciona kubeadm .

1. Inicializando el Plano de Control

Comando de ejemplo n.º 1: ` kubeadm init `

Aquí se explica cómo usar el comando anterior.

kubeadm init --pod-network-cidr=192.168.0.0/16


Este comando inicializa el plano de control en el nodo principal. Genera los certificados necesarios, configura el servidor API, etc. y otros componentes vitales.


El indicador ` --pod-network-cidr ` especifica el rango de direcciones IP para la red del módulo en el clúster.

2. Unirse a los nodos de trabajo

Comando de ejemplo n.º 2: ` kubeadm join `


kubeadm join <master-node-ip>:<master-node-port> --token <token> --discovery-token-ca-cert-hash <hash>


Este comando une un nodo trabajador al clúster. Debe proporcionar la IP y el puerto del nodo maestro, junto con un token y un hash de certificado de CA de token de descubrimiento, que se pueden obtener durante la inicialización del plano de control.

3. Restablecimiento de un clúster

Comando: ` kubeadm reset `


kubeadm reset --force


Este comando restablece un clúster, elimina todos los componentes instalados y devuelve el nodo a su estado anterior a Kubernetes. El indicador ` --force ` garantiza un restablecimiento completo.

4. Actualización de la versión de Kubernetes

Comando: ` kubeadm upgrade


Aquí se explica cómo usar el comando kubeadm anterior.

kubeadm upgrade plan


Este comando lo ayuda a actualizar su versión de Kubernetes. Comprueba las actualizaciones disponibles y proporciona un plan para actualizar los componentes del plano de control.


Los 20 comandos de Kubeadm más comunes

Aquí hay una lista de comandos de kubeadm de uso común, seguida de un ejemplo relevante.

1. inicio de kubeadm

kubeadm init --pod-network-cidr=192.168.0.0/16


En el ejemplo anterior, el comando inicializa el plano de control en el nodo maestro, genera certificados y configura los componentes esenciales. El indicador ` --pod-network-cidr ` especifica el rango de direcciones IP de la red del módulo.

2. unión de kubeadm

kubeadm join <master-node-ip>:<master-node-port> --token <token> --discovery-token-ca-cert-hash <hash>


El comando anterior une un nodo de trabajo al clúster al conectarse al nodo maestro especificado mediante un token y un hash de certificado de CA de token de descubrimiento.

3. reinicio de kubeadm

kubeadm reset --force


El comando anterior restablece un nodo, elimina todos los componentes de Kubernetes instalados y lo devuelve a su estado anterior a Kubernetes. El indicador ` --force ` garantiza un restablecimiento completo.

4. actualización de kubeadm

kubeadm upgrade plan


El comando anterior proporciona un plan de actualización, verificando las actualizaciones disponibles para los componentes del plano de control.

5. token kubeadm

kubeadm token create


Este comando kubeadm administra los tokens de autenticación que se usan para unir nodos al clúster. Este ejemplo genera un nuevo token.

6. configuración de kubeadm

kubeadm config print init-defaults


El comando anterior administra los archivos de configuración de kubeadm. Este ejemplo imprime la configuración predeterminada para la inicialización del clúster.

7. versión kubeadm

kubeadm version


El comando anterior imprime la versión de kubeadm.

8. Imágenes de configuración de kubeadm

kubeadm config images list


Utilice el comando anterior para imprimir una lista de imágenes necesarias para la versión actual de Kubernetes.

Este comando lo ayuda a determinar las imágenes de contenedor necesarias para la administración manual de imágenes de contenedor. Reemplace ` list ` con ` pull ` para extraer imágenes de configuración.

9. creación de tokens kubeadm

kubeadm token create --print-join-command


El comando anterior genera un nuevo token que se puede usar para unir nodos al clúster. El indicador ` --print-join-command ` muestra el comando de unión que se ejecutará en los nodos trabajadores.

10. lista de tokens de kubeadm

kubeadm token list


El comando anterior enumera los tokens activos junto con su tiempo de creación y vencimiento asociados.

11. Eliminación del token de kubeadm

kubeadm token delete <token_value>


Use el comando anterior para eliminar un token específico, dejándolo inutilizable para las uniones de nodos.

12. migración de configuración de kubeadm

kubeadm config migrate --old-config kubeadm.conf --new-config kubeadm.yaml


El comando anterior migra un archivo de configuración de una versión anterior a una nueva versión, lo que permite actualizaciones sin problemas de la configuración.

13. certificados kubeadm


kubeadm certs check-expirationkubeadm certs certificate-key


Los comandos anteriores comprueban el estado de caducidad de los certificados utilizados por los componentes del plano de control y proporcionan advertencias para los certificados que están a punto de caducar. El segundo comando genera la clave.

14. fase de inicio de kubeadm

kubeadm init phase kubelet-start --config config.yaml


A partir de un archivo InitConfiguration, el comando anterior crea un archivo de entorno dinámico con banderas de kubelet.

15. fase de unión de kubeadm

kubeadm join phase control-plane-prepare


El comando anterior ejecuta una fase específica durante la unión de un nodo trabajador al plano de control. Este ejemplo ejecuta la fase ` control-plane-prepare` , que prepara el nodo trabajador para convertirse en un nodo del plano de control.

16. kubeadm kubeconfig

kubeadm kubeconfig user --client-name=foo --config=bar

Use el comando anterior para generar un archivo kubeconfig para un usuario adicional llamado foo usando una barra de archivos de configuración kubeadm.

17. fase de reinicio de kubeadm

kubeadm reset phase preflight


El comando anterior ejecuta una fase específica durante el proceso de reinicio de un nodo. Este ejemplo ejecuta la fase ` preflight , que realiza comprobaciones previas al reinicio antes de eliminar los componentes de Kubernetes.

18. plan de actualización de kubeadm

kubeadm upgrade plan


El comando anterior muestra un plan de actualización para los componentes del plano de control, que muestra las versiones disponibles y las acciones necesarias para la actualización.

19. Se aplica la actualización de kubeadm

kubeadm upgrade apply v1.22.2


Utilice el comando anterior para aplicar una versión específica de Kubernetes al plano de control, actualizando sus componentes a la versión especificada.

20. nodo de actualización de kubeadm

kubeadm upgrade node


Este comando actualiza kubelet y kube-proxy en un nodo trabajador para que coincidan con la versión del plano de control.


Cómo crear un clúster de Kubernetes con Kubeadm

Para crear un clúster de Kubernetes con kubeadm , debe asegurarse de que su entorno cumpla con los requisitos previos necesarios.

Aquí hay una guía paso a paso sobre cómo crear un clúster de Kubernetes usando kubeadm , incluidos los requisitos previos, instrucciones detalladas, ejemplos y comandos.

requisitos previos

  1. Dos o más máquinas que ejecutan una distribución de Linux compatible (p. ej., Ubuntu, CentOS o Red Hat Enterprise Linux) con Docker instalado.

  2. Se recomiendan 2 GiB o más de RAM por máquina; cualquier cosa menos deja espacio limitado para su software.

  3. Deshabilite el espacio de intercambio en todas las máquinas.

  4. Configure un nombre de host único, una dirección MAC y product_uuid para cada máquina.

  5. Todas las máquinas en el clúster tienen conectividad de red completa. Puede conectarse a una red pública o privada.

  6. Abra los puertos necesarios (por ejemplo, 6443, 2379-2380, 10250, 10251, 10252) en su firewall.


Paso 1: instale las herramientas de Docker y Kubernetes

En todas las máquinas, instale Docker utilizando la guía de Docker para su distribución de Linux.

Instale ` kubeadm `, ` kubelet ` y ` kubectl ` usando los siguientes comandos en todas las máquinas:


sudo apt-get update && sudo apt-get install -y apt-transport-https curlcurl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.listsudo apt-get updatesudo apt-get install -y kubelet kubeadm kubectlsudo apt-mark hold kubelet kubeadm kubectl


Paso 2: inicialice el plano de control de Kubernetes

En el nodo del plano de control deseado, inicialice el clúster con el comando ` kubeadm init `:

sudo kubeadm init --pod-network-cidr=192.168.0.0/16


Nota: Ajuste el indicador ` --pod-network-cidr ` si planea usar una red de pod diferente.

Una vez completada la inicialización, el comando generará un comando ` kubeadm join ` con un token y un hash. Asegúrese de copiar este comando, ya que se usará para unir los nodos trabajadores al clúster más adelante.


Paso 3: configurar la configuración de clúster para kubectl

En el nodo del plano de control, cree el directorio necesario y copie el archivo kubeconfig :


mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config


Paso 4: implementar un complemento de red de pod

En el nodo del plano de control, implemente un complemento de red de pod. Por ejemplo, puedes usar Calico:

kubectl apply -f https://docs.projectcalico.org/v3.21/manifests/calico.yaml


Paso 5: Únase a los nodos trabajadores en el clúster

En cada nodo trabajador, ejecute el comando ` kubeadm join ` que se generó durante la inicialización del plano de control (desde el Paso 2). Este comando normalmente se ve así:

sudo kubeadm join <control_plane_IP>:6443 --token <token> --discovery-token-ca-cert-hash <hash>


Paso 6: verificar el clúster

En el nodo del plano de control, verifique el estado del clúster usando ` kubectl `:

kubectl get nodes


¡Felicidades! Ha creado correctamente un clúster de Kubernetes utilizando ` kubeadm `. Ahora puede implementar y administrar sus aplicaciones en el clúster.


Cómo administrar los componentes del clúster con kubeadm

Para administrar los componentes del clúster con kubeadm , puede usar varios comandos para realizar tareas como actualizar el clúster, agregar o quitar nodos y administrar el plano de control.

Aquí hay una guía paso a paso sobre cómo administrar los componentes del clúster con kubeadm , incluidos comandos detallados con comentarios de código.


Paso 1: Actualización del clúster

Compruebe la versión actual de Kubernetes en el nodo del plano de control:

kubectl version --short


Actualice ` kubeadm `, ` kubelet ` y ` kubectl ` en todos los nodos para que coincidan con la versión deseada de Kubernetes:

# Upgrade kubeadmsudo apt-get updatesudo apt-get install -y kubeadm=<desired_version># Upgrade kubelet and kubectlsudo apt-get updatesudo apt-get install -y kubelet=<desired_version> kubectl=<desired_version># Hold the packages to prevent automatic upgradessudo apt-mark hold kubeadm kubelet kubectl


En el nodo del plano de control, inicie el proceso de actualización:

sudo kubeadm upgrade plansudo kubeadm upgrade apply <desired_version>

Upgrade the kubelet configuration on all nodes:

sudo kubeadm upgrade node


Verifique el estado de la actualización:

kubectl get nodeskubectl version --short


Paso 2: agregar nodos de trabajo

En el nodo del plano de control, genere un nuevo comando kubeadm join :

sudo kubeadm token create --print-join-command


En los nodos trabajadores, ejecute el comando kubeadm join para unirlos al clúster:

sudo kubeadm join <control_plane_IP>:6443 --token <token> --discovery-token-ca-cert-hash <hash>


Verifique el estado de los nuevos nodos trabajadores:

kubectl get nodes


Paso 3: Eliminación de nodos

Drene el nodo que desea eliminar:

kubectl drain <node_name> --ignore-daemonsets


En el nodo del plano de control, elimine el nodo:

sudo kubeadm reset


En el nodo del plano de control, elimine el nodo del clúster:

kubectl delete node <node_name>


Paso 4: Gestión de los componentes del plano de control

Actualice los componentes del plano de control en el nodo del plano de control:

sudo apt-get update sudo apt-get install -y kubeadm=<desired_version> kubelet=<desired_version> kubectl=<desired_version> sudo kubeadm upgrade plan sudo kubeadm upgrade apply <desired_version> sudo systemctl restart kubelet


Verifique el estado de la actualización:

kubectl get nodes kubectl version --short

Drain the control plane node you want to remove:

kubectl drain <control_plane_node> --ignore-daemonsets


En el nodo del plano de control, elimine los componentes del plano de control con el siguiente comando kubeadm .

sudo kubeadm reset


En el nodo del plano de control, elimine el nodo del plano de control del clúster:

kubectl delete node <control_plane_node>


Nota: Administrar los componentes del clúster con kubeadm requiere precaución, ya que puede afectar la estabilidad y la disponibilidad del clúster. Asegúrese de tener un plan de respaldo y siga la documentación oficial de Kubernetes para obtener instrucciones detalladas específicas para su configuración y requisitos.


Prácticas recomendadas de Kubeadm

Cuando se utiliza para los fines previstos, Kubeadm es una herramienta excelente. Aquí hay tres prácticas recomendadas que debe recordar para usar la herramienta adecuada para el trabajo y aprovechar al máximo kubeadm.


Use kubeadm solo para clústeres de producción que necesitan ajuste de escala automático

En general, kubeadm no debe utilizarse para clústeres de producción porque carece de la capacidad de escalado automático de nodos y clústeres. Esto se debe al hecho de que el escalado automático de nodos requiere el control de la infraestructura y el hardware subyacentes, que kubeadm delegó a otras herramientas.


Copia de seguridad etcd de forma regular

Kubeadm no tiene un clúster multi-etcd de forma predeterminada para almacenar el estado del clúster. Realice copias de seguridad regulares de etcd en caso de que algo salga mal.


Realizar un seguimiento de las máquinas/nodos

Kubeadm no puede apagar máquinas que no están en uso.

Por lo tanto, para optimizar el costo en el clúster de Kubernetes mediante kubeadm , deberá usar una solución externa para realizar un seguimiento de los nodos de trabajo y su utilización de recursos.




También publicado aquí.


La imagen principal de este artículo fue generada porAI Image Generator de HackerNoon a través de los "contenedores" de aviso.