Kubernetes es un sistema de administración de contenedores gratuito y de código abierto que proporciona una plataforma para la automatización de la implementación, el escalado y las operaciones de los contenedores de aplicaciones en grupos de equipos host.
Con Kubernetes, pueden hacer uso libremente de la infraestructura de nube híbrida, local y pública para ejecutar las tareas de implementación de su organización.
Para una instalación práctica, vamos a utilizar un clúster de dos nodos que formaremos en este artículo constará de un nodo maestro y un nodo esclavo.
Ambos nodos necesitan tener Kubernetes instalado en ellos. Lo primero que vamos a hacer es instalar docker en ambos, para ello basta que ejecutemos en ellos el siguiente comando:
sudo apt install docker.io
Para verificar que docker está instalado, pueden ejecutar en ambos nodos el siguiente comando:
docker --version
Ahora vamos a proceder a habilitar docker en ambos nodos:
sudo systemctl enable docker
Ahora el siguiente paso es añadir la clave de Kubernetes a ambos nodos, esto lo hacemos con el siguiente comando:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
El siguiente paso es añadir el siguiente repositorio a ambos sistemas:
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
El último paso en el proceso de instalación es instalar Kubeadm en ambos nodos a través del siguiente comando:
sudo apt install kubeadm
Pueden verificar el número de versión de Kubeadm y también verificar la instalación a través del siguiente comando:
kubeadm version
Ahora para implementar el despliegue de Kubernetes en el sistema debemos de deshabilitar la memoria de intercambio (si se está ejecutando) en ambos nodos
Deben de desactivar la memoria de intercambio en ambos nodos, ya que Kubernetes no funciona correctamente en un sistema que utiliza memoria de intercambio.
Para ello basta con ejecutar:
sudo swapoff -a
Ahora el siguiente paso es ejecutar el siguiente comando en el nodo maestro para darle un nombre de host único:
sudo hostnamectl set-hostname master-node
Mientras que para el nodo esclavo debemos de teclear:
sudo hostnamectl set-hostname slave-node
Hecho esto ahora vamos a proceder a inicializar el nodo maestro con el siguiente comando:
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. La salida de este comando es muy importante por lo que deben de anotar la información de la salida, pues contiene la ip, token y demás.
Para comenzar a usar tu clúster, necesitan ejecutar lo siguiente como usuario regular:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
Ahora pueden unirse a cualquier número de máquinas ejecutando lo siguiente en cada nodo como usuarios root:
kubeadm join tuip --token tutoken --discovery-token-ca-cert-hash sha256:tuhash
En donde van a remplazar la información de tutoken, tuip y tu hash por la información que se dijo hace unos momentos que anotaran.
Verá que el estado del nodo maestro aún no está listo. Esto se debe a que aún no se ha implementado ningún pod en el nodo maestro y, por lo tanto, la Interfaz de redes de contenedores está vacía.
Para ver el listado solamente debemos de ejecutar:
kubectl get nodes
Implementando una red de pod a través del nodo maestro
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
Para conocer el estado de la red, basta con teclear:
sudo kubectl get pods --all-namespaces sudo kubectl get nodes
Hecho esto ahora es momento de añadir el nodo esclavo a la red para formar un clúster, de igual forma deben de complementar la información al igual que en el nodo maestro.
sudo kubeadm join tuip --token tutoken --discovery-token-ca-cert-hash sha256:tuhash
Ahora, cuando ejecuten el siguiente comando en el nodo maestro, confirmará que dos nodos, el nodo maestro y los nodos de servidor se están ejecutando en su sistema.
sudo kubectl get nodes
Esto muestra que el clúster de dos nodos ahora está activo y en ejecución a través del sistema de administración de contenedores Kubernetes.