Instalación y pruebas de Kubernetes en Ubuntu 18.04

En este paso guiaremos la instalación de kubernetes en Ubuntu 18.04 para pruebas, esto es, no una instalación en cluster, por lo que debemos instalar Minikube, el kubernetes para single node. Es un software que cada vez implantamos más para las soluciones de software médico y sanitario.

Instalación de virtual minikube

Primero de todo, debemos instalar un hypervisor de máquinas virtuales. En mi caso he optado por la instalación de virtualbox, simplemente con el comando:

sudo apt-get install virtualbox

Una vez hecho esto, procedo a instalar el controlador de kubernetes, el kubectl. Para ello, ya que no me gusta nada snap, utilizo apt-get con las siguientes instrucciones:

sudo apt-get update && sudo apt-get install -y apt-transport-https

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list

sudo apt-get update

sudo apt-get install -y kubectl

Con esto ya tenemos kubectl instalado. Como he comentado, para una instalación  ‘single node’ necesitaremos instalar minikube. Esto lo conseguimos descargando el binario de minikube:

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
  && chmod +x minikube

Lo descargará directamente y tendremos (más o menos) la siguiente información:

 % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 38.2M 100 38.2M 0 0 9.7M 0 0:00:03 0:00:03 --:--:-- 9.7M

Ahora tenemos minikube en el directorio local, lo desplazaremos a nuestro directorio de binarios:

sudo cp minikube /usr/local/bin

Ahora ya podemos arrancar el kubernetes cluster (que se genera a través de virtualbox)

minikube start

Con esto crearemos un cluster.

Debería aparecer un log similar al siguiente:

?  minikube v0.35.0 on linux (amd64)
?  Creating virtualbox VM (CPUs=2, Memory=2048MB, Disk=20000MB) ...
?  "minikube" IP address is 192.168.99.100
?  Configuring Docker as the container runtime ...
✨  Preparing Kubernetes environment ...
?  Pulling images required by Kubernetes v1.13.4 ...
?  Launching Kubernetes v1.13.4 using kubeadm ... 
⌛  Waiting for pods: apiserver proxy etcd scheduler controller addon-manager dns
?  Configuring cluster permissions ...
?  Verifying component health .....
?  kubectl is now configured to use "minikube"
?  Done! Thank you for using minikube!

Vamos a ejecutar un contenedor de prueba en el cluster:

kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.10 --port=8080

Obviaremos por el momento una alerta de deprecated…  Exponemos este contenedor recién creado:

$ kubectl expose deployment hello-minikube --type=NodePort

service/hello-minikube exposed
Comprobaremos que efectivamente el servicio está activo:
$ kubectl get pod

NAME                           READY STATUS  RESTARTS AGE
hello-minikube-6fd785d459-h4qgj 1/1  Running    0     9m41s

Ahora vamos a ver qué URL tiene asignada el servicio. Para ello se ejecuta el siguiente comando:

$ minikube service hello-minikube --url
http://192.168.99.100:31497

También podemos hacer esta consulta con service list:

$ minikube service list
|-------------|----------------|-----------------------------|
| NAMESPACE   |    NAME        |            URL              |
|-------------|----------------|-----------------------------|
| default     | hello-minikube | http://192.168.99.100:31497 |
| default     | kubernetes     | No node port                |
| kube-system | kube-dns       | No node port                |
|-------------|----------------|-----------------------------|

Si accedemos a esta url por ejemplo desde un navegador tendremos:

kubernetes1

Que es el comportamiento esperado del servicio.

Si queremos parar el servicio, bastará con poner :

$ minikube stop

✋ Stopping "minikube" in virtualbox ...
? "minikube" stopped.

Seguiremos con kubernetes en próximos posts.