Instalación y configuración de minikube y kubectl

Minikube

  • Minikube permite desplegar localmente un clúster de Kubernetes de un solo nodo.
  • Es un proyecto oficial de Kubernetes, lo que garantiza:
    • Mantenimiento activo.
    • Compatibilidad con versiones actuales de k8s.
  • Es una de las mejores opciones para aprender Kubernetes, porque:
    • Es un proyecto maduro.
    • Su instalación y uso son sencillos.
  • Requisitos mínimos del sistema para instalar Minikube:
    • 2 CPUs.
    • 2 GiB de memoria RAM.
    • 20 GiB de espacio libre en disco.
  • Es necesario disponer de un sistema de virtualización o de contenedores, en nuestro caso usaremos KVM.
  • El clúster de Kubernetes que se usará en el curso será de un solo nodo.
  • Ese único nodo asumirá doble rol:
    • Master (control plane): ejecutando los componentes principales de Kubernetes.
    • Worker: ejecutando las cargas de trabajo en contenedores.
  • Minikube es una herramienta que se instala como un programa en la máquina anfitriona.
  • Al ejecutarse, Minikube crea una máquina virtual Linux con:
    • Kubernetes completamente configurado.
    • Un clúster funcional y listo para usar.
  • Minikube puede instalarse en Linux, Windows y macOS.
  • Es compatible con varios sistemas de virtualización, aunque no todos ofrecen la misma funcionalidad.
  • Utilizaremos Minikube sobre KVM, aprovechando:
    • Virtualización nativa en Linux.
    • Mejor rendimiento y mayor integración con el sistema anfitrión.

Instalación de minikube en linux con KVM

Accedemos a https://minikube.sigs.k8s.io/docs/start/ y seleccionamos el método que prefiramos para instalar, eligiendo nuestro sistema operativo, arquitectura, etc.

Minikube se instala, como otras aplicaciones de Go, como un binario enlazado estáticamente (autoconsistente), que no tiene dependencias de nada y que tenemos que ubicar en algún directorio del PATH de nuestro sistema. Veamos en particular la instalación directa del binario en un sistema linux:

Paso 1: Descargamos como usuario normal y con ayuda de la aplicación curl, la última versión del binario de minikube (en este caso para arquitectura x86-64):

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

Paso 2: Movemos el binario a un directorio del PATH (lo recomendable en este caso sería /usr/local/bin/) y establecemos permisos de ejecución. Todo esto puede hacerse con los comandos mv y chmod, o de forma más sencilla con install

sudo install minikube-linux-amd64 /usr/local/bin/minikube

Comprobamos que se ha instalado correctamente con:

minikube version
minikube version: v1.35.0

Creación del clúster de k8s

El siguiente paso consiste en lanzar minikube para que cree el cluster de Kubernetes de un solo nodo (master+worker). Minikube puede crear este cluster en diversos sistemas de virtualización o sobre docker, lo recomendable es visitar la página de “drivers” y seleccionar el método más adecuado para nuestro sistema.

De forma general, se creará el clúster de Kubernetes a través de minikube, mediante la instrucción:

minikube start --driver=kvm2

Esto creará de forma automática una máquina virtual o un contenedor en el sistema escogido e instalará Kubernetes en ella. Por último, se configura kubectl si está instalado (el cliente de línea de comandos de k8s) para que utilice el cluster recién instalado. Podemos ver una salida típica de la instalación del cluster a continuación:

Podemos comprobar en cualquier momento el estado de minikube con la instrucción:

minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

Parada y reinicio de minikube

Podemos parar y volver a arrancar minikube cuando sea preciso, ya que no se trata de un clúster de k8s en producción, sino de uno instalado en un equipo convencional. Esto se realiza mediante las instrucciones:

minikube stop
✋  Stopping node "minikube"  ...
🛑  1 nodes stopped.
minikube start
...

Vídeo

https://www.youtube.com/watch?v=0l_NICnY7AI

Instalación de kubectl en linux

kubectl es la herramienta de línea de comandos utilizada para interactuar con la API de Kubernetes. Es por tanto la herramienta fundamental que vamos a utilizar durante todo el curso para gestionar nuestros objetos en el clúster recién creado con minikube.

Las instrucciones para su instalación están disponibles en la documentación de k8s. PAra nosotros la forma más fácil:

sudo apt install kubernetes-client

El fichero donde se configura el clúster de kubernetes al que vamos a acceder lo encontramos en el fichero ~/.kube/config.

Comprobamos que ya aparece la versión del servidor y por tanto se ha podido conectar con el clúster que gestiona minikube. Además podemos ejecutar nuestro primer comando propiamente de kubectl:

kubectl get nodes
NAME       STATUS   ROLES                  AGE   VERSION
minikube   Ready    control-plane,master   21m   v1.32.0

Si queremos utilizar el autocompletado, podemos generarlo e incorporarlo a nuestro entorno con:

echo 'source <(kubectl completion bash)' >> ~/.bashrc

# Para los usuarios de zsh:
kubectl completion zsh > ~/.kubectl-completion

Y para poder usarlo en esta misma sesión (no será necesario más adelante, ya que el fichero .bashrc se lee cada vez que se inicia una sesión):

source ~/.bashrc

# Para los usuarios de zsh:
source ~/.kubectl-completion
source ~/.zshrc

Vídeo

https://www.youtube.com/watch?v=0p_JGucaSco

Ejercicio

Instala y configura minikube y kubectl para poder realizar el resto del curso.

Para comprobar que el ejercicio es correcto comprueba la salida de las siguientes instrucciones:

  • La salida de minikube status.
  • La salida de kubectl get nodes -o wide.