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:
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.