Para trabajar con ambientes de Kubernetes normalmente es más sencillo poder instalar un cluster local en nuestro equipo que nos permita probar de una forma más expedita sin tener que interactuar con un servidor externo. Una de las herramientas que nos sirve para esta tarea es Minikube.

Prerequisitos

Para instalar el Minikube se debe validar los siguientes requisitos:

Validar que la virtualización está soportada en el Linux

Se puede validar si soporta virtualización con el siguiente comando, si obtiene alguno de esos dos valores es porque si lo soporta.

1
grep -E --color 'vmx|svm' /proc/cpuinfo
VMX/SVM CPU Info

VMX/SVM CPU Info

Tener instalado Kubectl

Se requiere tener instalado el paquete kubectl, para validarlo se puede ejecutar el siguiente comando:

1
kubectl version --client
Kubectl version client

Kubectl version client

En caso de no tenerlo instalado, en una sección más adelante se explica como instalarlo.

Tener instalado un hipervisor

Se requiere tener instalado un hipervisor, el Minikube soporta varios pero en este caso vamos a instalar KVM. Para revisar si lo tenemos instalado podemos validar si está habilitado el módulo en el Kernel ejecutando el comando:

1
lsmod | grep kvm
Módulo KVM del Kernel

Módulo KVM del Kernel

En caso de no tenerlo instalado, en una sección más adelante se explica como instalarlo.

Instalación de Kubectl

Para instalar el Kubectl vamos a habilitar un YUM repo de Google e instalar el paquete kubectl.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
sudo tee /etc/yum.repos.d/kubernetes.repo<<EOF
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

sudo dnf makecache

sudo dnf install kubectl

Instalación del KVM/QEMU

Para instalar el KVM vamos a instalar los siguientes paquetes:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# Instala el KVM
sudo dnf install bridge-utils libvirt virt-install qemu-kvm

# Otras herramientas útiles para el KVM
sudo dnf install virt-top libguestfs-tools

# Habilita el servicio
sudo systemctl enable --now libvirtd

# Instala un administrador gráfico
sudo dnf install virt-manager

# Agrega nuestro usuario al grupo del KVM
sudo usermod -a -G libvirt $(whoami)

Instalación de Minikube

Para instalar el Minikube estaba buscando algún YUM repo pero no encontré nada, parece que el proceso es descargar directamente el binario entonces esto es lo que haremos.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# Descarga el binario y le asigna permisos de ejecución
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
  && chmod +x minikube

# Intenta crear esta ruta en caso de que no exista
sudo mkdir -p /usr/local/bin/

# Instala el binario del minikube en la ruta
sudo install minikube /usr/local/bin/

# Elimina el binario descargado
rm minikube

Para probar si todo se instaló bien, podemos crear un cluster de Minikube usando el KVM con los siguientes comandos:

1
2
3
4
5
6
7
8
# Crear un cluster de minikube (default)
minikube start --driver=kvm2

# Pregunta por el estado
minikube status

# Elimina el minikube que se creó para probar
minikube delete

Este por defecto va a crear un cluster de un nodo con la última versión disponible del Kubernetes, el nodo se le asignaran los recursos:

  • vCPU = 2
  • Memoria = 6000MB
  • Disco = 20000MB
Minikube start

Minikube start

Minikube status

Minikube status

TIP: Cluster minikube personalizado

Para mi caso no me sirve el cluster que crea por defecto el Minikube, necesito crear uno personalizado que sea lo más parecido al que voy a utilizar en producción, sería para instalar en AWS EKS. Al momento de escribir este artículo la última versión de Kubernetes soportada por AWS EKS sería 1.17.6.

Le voy a asignar también más vCPU, memoria RAM y disco ya que voy a trabajar con un ambiente un poco grande, siempre se debe recordar que hay que validar que tenga los recursos disponibles para poder asignarlos al KVM.

Con el siguiente comando podemos crear un cluster personalizado con 8 vCPUs, 16 GB de memoria RAM y 40GB de disco duro, usando la versión 1.17.6 de Kubernetes.

1
2
3
4
5
6
7
8
9
# Muestra información de los parámetros disponibles para el start
minikube help start

# Crea minikube personalizado
minikube start --driver=kvm2 \
  --cpus=8 \
  --memory=16384 \
  --disk-size=40000mb \
  --kubernetes-version=1.17.6
Minikube start personalizado

Minikube start personalizado

Luego de iniciado el cluster de Minikube podemos ejecutar comandos normalmente con el kubectl:

Kubectl pruebas

Kubectl pruebas