¿Qué es Kubernetes?
Kubernetes es un sistema de administración de contenedores de código abierto y gratuito que proporciona una plataforma para la automatización de la implementación, el escalado y las operaciones de contenedores de aplicaciones en clústeres de equipos host. Con Kubernetes, puede utilizar libremente la infraestructura de nube híbrida, local y pública para ejecutar las tareas de implementación de su organización.
En este tutorial, explicaremos cómo instalar Kubernetes en un sistema Ubuntu y también implementar Kubernetes en un clúster de Ubuntu de dos nodos.
Los comandos y procedimientos mencionados en este artículo se han ejecutado en un sistema Ubuntu 18.04 LTS. Dado que usaremos la línea de comandos de Ubuntu, la Terminal, para ejecutar todos los comandos, puede abrirla a través del tablero del sistema o el atajo Ctrl + Alt + T.
Instalación de Kubernetes
El clúster de dos nodos que formaremos en este artículo constará de un nodo Maestro y un nodo Esclavo. Ambos nodos deben tener Kubernetes instalado. Por lo tanto, siga los pasos que se describen a continuación para instalar Kubernetes en ambos nodos de Ubuntu.
Paso 1: instale Docker en ambos nodos
Instale la utilidad Docker en ambos nodos ejecutando el siguiente comando como sudo en la Terminal de cada nodo:
$ sudo apt install docker.io
Se le pedirá una opción Y / n para continuar con la instalación. Ingrese Y y luego presione enter para continuar. Luego, Docker se instalará en su sistema. Puede verificar la instalación y también verificar el número de versión de Docker a través del siguiente comando:
$ docker --version
Paso 2: habilite Docker en ambos nodos
Habilite la utilidad Docker en ambos nodos ejecutando el siguiente comando en cada uno:
$ sudo systemctl enable docker
Paso 3: agregue la clave de firma de Kubernetes en ambos nodos
Ejecute el siguiente comando para obtener la clave de firma de Kubernetes:
$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
Si Curl no está instalado en su sistema, puede instalarlo a través del siguiente comando como root:
$ sudo apt install curl
Se le pedirá una opción Y / n para continuar con la instalación. Ingrese Y y luego presione enter para continuar. La utilidad Curl se instalará en su sistema.
Paso 4: agregue el repositorio de Xenial Kubernetes en ambos nodos
Ejecute el siguiente comando en ambos nodos para agregar el repositorio de Xenial Kubernetes:
$ sudo apt-add-repository "deb https://apt.kubernetes.io/ kubernetes-xenial main"
Paso 5: Instale Kubeadm
El último paso del proceso de instalación es instalar Kubeadm en ambos nodos mediante el siguiente comando:
$ sudo apt install kubeadm
Se le pedirá una opción Y / n para continuar con la instalación. Ingrese Y y luego presione enter para continuar. Luego, Kubeadm se instalará en su sistema.
Puede verificar el número de versión de Kubeadm y también verificar la instalación a través del siguiente comando:
$ kubeadm version
Implementación de Kubernetes
Paso 1: deshabilite la memoria de intercambio (si se está ejecutando) en ambos nodos
Debe deshabilitar la memoria de intercambio en ambos nodos, ya que Kubernetes no funciona correctamente en un sistema que utiliza memoria de intercambio. Ejecute el siguiente comando en ambos nodos para deshabilitar la memoria de intercambio
$ sudo swapoff -a
Paso 2: asigne nombres de host únicos a cada nodo
Ejecute el siguiente comando en el nodo principal para darle un nombre de host único:
$ sudo hostnamectl set-hostname master-node
Ejecute el siguiente comando en el nodo esclavo para darle un nombre de host único:
$ hostnamectl set-hostname slave-node
Paso 3: inicializar Kubernetes en el nodo principal
Ejecute el siguiente comando como sudo en el nodo maestro:
$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16
El proceso puede tardar un minuto o más dependiendo de su conexión a Internet. El resultado de este comando es muy importante:
Anote la siguiente información del resultado:
Para comenzar a usar su clúster, debe ejecutar lo siguiente como usuario habitual:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Ahora puede unirse a cualquier número de máquinas ejecutando lo siguiente en cada nodo
como root:
kubeadm join 192.168.100.6:6443 --token 06tl4c.oqn35jzecidg0r0m --discovery-token-ca-cert-hash sha256:c40f5fa0aba6ba311efcdb0e8cb637ae0eb8ce27b7a03d47be6d966142f2204c
Ahora ejecute los comandos sugeridos en la salida para comenzar a usar el clúster:
Puede verificar el estado del nodo maestro ejecutando el siguiente comando:
$ kubectl get nodes
Verá que el estado del nodo maestro es “no listo” todavía. Esto se debe a que aún no se ha implementado ningún pod en el nodo principal y, por lo tanto, la interfaz de red de contenedores está vacía.
Paso 4: implementar una red de pod a través del nodo principal
Una red de pod es un medio de comunicación entre los nodos de una red. En este tutorial, estamos implementando una red de pod de Flannel en nuestro clúster a través del siguiente comando:
$ sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Utilice el siguiente comando para ver el estado de la red:
$ kubectl get pods --all-namespaces
Ahora, cuando vea el estado de los nodos, verá que el nodo maestro está listo:
$ sudo kubectl get nodes
Paso 5: agregue el nodo esclavo a la red para formar un clúster
En el nodo esclavo, ejecute el siguiente comando que generó al inicializar Kubernetes en el nodo maestro:
$ sudo kubeadm join 192.168.100.6:6443 --token 06tl4c.oqn35jzecidg0r0m --discovery-token-ca-cert-hash sha256:c40f5fa0aba6ba311efcdb0e8cb637ae0eb8ce27b7a03d47be6d966142f2204c
Ahora, cuando ejecute el siguiente comando en el nodo maestro, confirmará que dos nodos, el nodo maestro y los nodos del servidor se están ejecutando en su sistema.
$ sudo kubectl get nodes
Esto muestra que el clúster de dos nodos ahora está en funcionamiento a través del sistema de administración de contenedores de Kubernetes.
En este artículo, hemos explicado la instalación del sistema de gestión de contenedores de Kubernetes en dos nodos de Ubuntu. Luego, hemos formado un clúster simple de dos nodos y hemos implementado Kubernetes en él. Ahora puede implementar y utilizar cualquier servicio como el servidor Nginx o el Apache contenedor para hacer uso de esta red agrupada.