Cómo configurar Kubernetes

Veamos cómo hacer la configuración de Kubernetes en un clúster de servidores. El ejemplo se aplica en un clúster de máquinas que ejecutan CentOS7, pero puede replicarse en cualquier máquina basada en Linux.

Veamos cómo hacer la configuración de Kubernetes en un clúster de servidores. El ejemplo se aplica en un clúster de máquinas que ejecutan CentOS7, pero puede replicarse en cualquier máquina basada en Linux

Requisitos previos

Necesitamos:

  • varios servidores con CentOS7 (1 nodo maestro y más de un nodo trabajador)
  • Una cuenta de usuario en cada máquina con privilegios de administración
  • Docker (enlace al artículo Qué es Docker) instalado en cada máquina

Configuración del repositorio de Kubernetes

En primer lugar, siempre hay que tener en cuenta que los paquetes de Kubernetes no están disponibles a través de los repositorios oficiales de CentOS 7. Por lo tanto, este paso debe realizarse en el nodo maestro y en cada nodo trabajador.

Por lo tanto, es necesario ejecutar el siguiente comando para recuperar el repositorio desde el que posteriormente recuperar el instalador de Kubernetes:

cat <<EOF > /etc/yum.repos.d/kubernetes.repo

Instalación de kubelet, kubeadm y kubectl

Estos 3 paquetes básicos son necesarios para poder utilizar Kubernetes. Instala los siguientes paquetes en cada nodo como se muestra en el ejemplo:

sudo yum install -y kubelet kubeadm kubectl

systemctl enable kubelet

systemctl start kubelet

Antes de desplegar un clúster, asegúrate de establecer los nombres de host configurando el firewall y los ajustes del kernel.

Establecer el nombre de host de un nodo

Para dar un nombre de host único a cada uno de sus nodos, utiliza este comando:

sudo hostnamectl set-hostname master-node

o bien 

sudo hostnamectl set-hostname worker-node1

En este ejemplo, el nodo maestro se llama ahora nodo-maestro, mientras que un nodo trabajador se llama nodo-trabajador1.

Ahora crea un registro DNS para resolver el nombre de host para todos los nodos:

192.168.1.10 master.example.com master-node

192.168.1.20 node1. example.com node1 worker-node

Configurar el cortafuegos

Los nodos, contenedores y pods deben poder comunicarse a través del clúster para realizar sus funciones. En CentOS por defecto, Firewalld está instalado. Añade los siguientes puertos introduciendo los comandos listados.

Por lo tanto, en el Nodo Maestro ejecuta:

sudo firewall-cmd –permanent –add-port=6443/tcp

sudo firewall-cmd –permanent –add-port=2379-2380/tcp

sudo firewall-cmd –permanent –add-port=10250/tcp

sudo firewall-cmd –permanent –add-port=10251/tcp

sudo firewall-cmd –permanent –add-port=10252/tcp

sudo firewall-cmd –permanent –add-port=10255/tcp

sudo firewall-cmd –reload

En este punto, ejecuta estos comandos en cada nodo trabajador:

sudo firewall-cmd –permanent –add-port=10251/tcp

sudo firewall-cmd –permanent –add-port=10255/tcp

firewall-cmd –reload

Actualizar la configuración de Iptables

Establece el valor de net.bridge.bridge-nf-call-iptables a ‘1’ en el archivo de configuración sysctl. Esto asegura que los paquetes sean correctamente procesados por las tablas IP cuando se filtran y reenvían los puertos.

cat <<EOF > /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

EOF

sysctl –system

Desactivar SELinux

Los contenedores deben acceder al sistema de archivos del host. SELinux debe estar en modo permisivo, lo que desactiva sus funciones de seguridad.

Utiliza los siguientes comandos para desactivar SELinux

sudo setenforce 0

sudo sed -i ‘s/^SELINUX=enforcing$/SELINUX=permissive/’ /etc/selinux/config

Desactivar SWAP

Por último, debemos desactivar SWAP para que kubelet funcione correctamente:

sudo sed -i ‘/swap/d’ /etc/fstab

sudo swapoff -a

Crear un cluster con kubeadm

Inicia el clúster con el siguiente comando:

sudo kubeadm init –pod-network-cidr=10.244.0.0/16

El proceso puede tardar varios minutos en completarse dependiendo de la velocidad de la red. Al final de este comando, se muestra un mensaje de unión de kubeadm. Anote el registro y utilícelo para unir los nodos trabajadores al clúster en una etapa posterior.

Gestionar el clúster como un usuario estándar

Para utilizar el clúster, debes poder conectarte como usuario estándar. Ejecuta el siguiente conjunto de comandos:

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

Configurar la red de Pods

La red de pods permite que los nodos del clúster se comuniquen entre sí. Hay varias opciones de red Kubernetes disponibles. Utiliza el siguiente comando para instalar el complemento de red Flannel Pod:

sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Si decides utilizar Flannel, cambia las reglas de su cortafuegos para permitir el tráfico del puerto 8285 por defecto de Flannel.

Comprobar el estado del kluster

Comprueba el estado de los nodos ejecutando el siguiente comando en el servidor maestro:

sudo kubectl get nodes

Una vez que se ha instalado una red de pods, puedes confirmar que funciona comprobando que el pod CoreDNS se está ejecutando escribiendo:

sudo kubectl get pods –all-namespaces

Añadir un nodo trabajador al clúster

Puedes utilizar el comando kubeadm join en cada nodo trabajador para conectarlo al clúster.

kubeadm join –discovery-token cfgrty.1234567890jyrfgd –discovery-token-ca-cert-hash sha256:1234..cdef 1.2.3.4:6443

Sustituye los códigos por los de su servidor principal. Repite esta acción para cada nodo trabajador de tu clúster.

En conclusión

Has instalado correctamente Kubernetes en CentOS y ahora puedes gestionar clústeres en varios servidores.

Este tutorial de Kubernetes proporciona un buen punto de partida para explorar las muchas opciones que ofrece esta plataforma. Utiliza Kubernetes para autoescalar tus contenedores y así pasar menos tiempo microgestionando cada uno de ellos.

Share: Facebook Twitter Linkedin

Comments