julio 5, 2024

BitCuco

¡Hola Mundo!

Guía de Instalación de Kubernetes

kubernetes instalar

Kubernetes es una plataforma de código abierto para la gestión de cargas de trabajo y servicios, que facilita tanto la configuración declarativa como la automatización. A continuación, se presenta una guía paso a paso para instalar Kubernetes en un entorno de máquina virtual utilizando kubeadm.

Requisitos Previos

  1. Sistema Operativo: Ubuntu 20.04 o 22.04 LTS.
  2. Usuario: Asegúrate de tener acceso como root o un usuario con permisos sudo.
  3. Memoria: Al menos 2GB de RAM para el nodo maestro.
  4. CPU: Al menos 2 CPUs.
  5. Red: Conectividad entre todos los nodos del clúster.

Paso 1: Preparar el Entorno

  1. Actualizar el sistema:
    bash sudo apt update && sudo apt upgrade -y
  2. Desactivar el swap:
    bash sudo swapoff -a sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
  3. Instalar dependencias:
    bash sudo apt install -y apt-transport-https ca-certificates curl

Paso 2: Instalar Docker

  1. Agregar el repositorio de Docker:
    bash curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  2. Instalar Docker:
    bash sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io
  3. Habilitar e iniciar Docker:
    bash sudo systemctl enable docker sudo systemctl start docker

Paso 3: Instalar kubeadm, kubelet y kubectl

  1. Agregar la clave GPG de Kubernetes:
    bash curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
  2. Agregar el repositorio de Kubernetes:
    bash sudo bash -c 'cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb https://apt.kubernetes.io/ kubernetes-xenial main EOF'
  3. Instalar las herramientas de Kubernetes:
    bash sudo apt update sudo apt install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl

Paso 4: Inicializar el Control Plane (Nodo Maestro)

  1. Inicializar Kubernetes:
    bash sudo kubeadm init --pod-network-cidr=192.168.0.0/16
  2. Configurar kubectl para el usuario no root:
    bash mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config

Paso 5: Instalar la Red de Pods (Calico)

  1. Aplicar la configuración de red:
    bash kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml

Paso 6: Unir Nodos al Clúster

  1. Obtener el comando de unión (este comando se obtiene al finalizar la inicialización del Control Plane):
    bash kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
  2. Ejecutar el comando de unión en cada nodo trabajador.

Paso 7: Verificar la Instalación

  1. Comprobar los nodos en el clúster:
    bash kubectl get nodes

Solución de problemas de instalación

Aquí tienes una lista de algunos errores comunes que pueden ocurrir durante la instalación de Kubernetes y cómo solucionarlos:

1. Problemas con Swap

Error:

[ERROR Swap]: running with swap on is not supported. Please disable swap.

Solución:
Desactiva el swap con los siguientes comandos:

sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

2. Docker no está corriendo

Error:

CRI v1 runtime: docker: unable to detect the docker daemon.

Solución:
Asegúrate de que Docker esté instalado y corriendo:

sudo systemctl start docker
sudo systemctl enable docker

3. Problemas con la red del Pod

Error:

[ERROR Port-10250]: Port 10250 is in use

Solución:
Asegúrate de que no haya ningún servicio usando el puerto 10250:

sudo lsof -i :10250
sudo kill -9 <PID>

4. Problemas de permisos con kubectl

Error:

The connection to the server localhost:8080 was refused - did you specify the right host or port?

Solución:
Configura kubectl correctamente para el usuario:

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

5. Problemas con los cgroups

Error:

[ERROR SystemVerification]: failed to parse cgroup info: failed to get cgroup stats: failed to parse memory.stat - invalid format

Solución:
Asegúrate de que Docker esté configurado para usar el controlador de cgroups correcto:

sudo mkdir /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
sudo systemctl restart docker

6. Problemas con el certificado

Error:

x509: certificate signed by unknown authority

Solución:
Asegúrate de que todos los nodos estén usando la misma configuración de certificado. Si hay problemas, puedes regenerar los certificados:

sudo kubeadm reset
sudo kubeadm init

7. Problemas con la configuración de red

Error:

[ERROR] Network Plugin is not ready: cni config uninitialized

Solución:
Asegúrate de haber aplicado correctamente la configuración de red (por ejemplo, Calico):

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

8. Falta de espacio en el disco

Error:

[ERROR ImagePull]: failed to pull image

Solución:
Asegúrate de tener suficiente espacio en disco y limpiar imágenes de Docker no utilizadas:

docker system prune -a

9. Token expirado

Error:

[ERROR Token expired]: the token has expired.

Solución:
Genera un nuevo token para unir nodos al clúster:

kubeadm token create
kubeadm token list

Usa el nuevo token en el comando de unión.

10. Problemas con el firewall

Error:

[ERROR] failed to connect: failed to connect to the host

Solución:
Asegúrate de que los puertos necesarios estén abiertos:

sudo ufw allow 6443/tcp
sudo ufw allow 2379:2380/tcp
sudo ufw allow 10250/tcp
sudo ufw allow 10251/tcp
sudo ufw allow 10252/tcp
sudo ufw allow 10255/tcp

Estos son algunos de los errores comunes que puedes encontrar durante la instalación de Kubernetes y sus soluciones. Asegúrate de seguir las mejores prácticas y revisar la documentación oficial de Kubernetes para más detalles y soluciones avanzadas.

Conclusión

Siguiendo estos pasos, habrás instalado y configurado un clúster básico de Kubernetes. Desde aquí, puedes comenzar a desplegar aplicaciones y servicios en tu clúster. Para más información y configuraciones avanzadas, visita la documentación oficial de Kubernetes.