Kubernetes: Empezando con buen pie en local con Rancher y Microk8s en Ubuntu 20.04

Dentro de esta serie de tutoriales vamos a intentar explicar cómo funcionar con Kubernetes (k8s para los amigos) en local de una manera sencilla, pero potente. Para el primer artículo vamos a realizar una instalación de Microk8s  en Ubuntu 20.04.

Nota Aclaratoria: k8s es la denominación corta de Kubernetes

Microk8s es una instalación de un cluster de kubernetes con algunas cosillas interesantes, como su listado de addons, entre los que vamos a destacar:

  • dashboard: el interfaz web ui por defecto de k8s
  • helm y helm3: el sistema de paquetes de k8s
  • dns: para manejar los registros dns externos
  • ingress: para manejar los servicios de k8s
  • istio: service mesh para k8s
  • registry: repositorio privado de imágenes docker
  • storage: deifne una storage class para guardar volúmes en el cluster en hostpath

Instalación

La instalación en Ubuntu 20.04 es super sencilla ya que existe un snap que lo instala:

 $ sudo snap install microk8s --classic --channel=1.18/stable

Mientras debermos esperar a que termine de instalar

 $ microk8s status --wait-ready 

Activación de addons

Para activar los addons ejecutaremos

 $ microk8s enable dashboard dns registry helm storage ingress 

Así tendremos todos estos addons instalados en el cluster de una manera sencilla

Acceso al dashboard

Para acceder al dashboard podremos realizar un port-forward muy sencillo:

 $ microk8s dashboard-proxy 

Este comando puedes ejecutarlo cuando quieras volver a entrar al dashboard las veces que quieras, mientras que no esté ya activo, claro.

Después accederemos a la url, desde Firefox, Chrome está últimamente pijo con el tema de los certificados

https://127.0.0.1:10443

No te asustes, como no tenemos el certificado tendremos que saltarnos esta protección.

También nos habrá generado un token que deberemos de introducir para poder acceder al webui de k8s,

Copia el token y pégalo en la página de autorización del dashboard:

 

Pulsa el botón de SignIn y ya estaŕas dentro de la consola de admind el cluster k8s.

Cuando quieras cortar la conexión con el dashboard simplemente haz Control+C en la terminar donde hiciste el proxy y se liberaŕa el puerto local.

Para la siguiente vez que quieraas entrar puedes acceder al token con

 $ token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
$ microk8s kubectl -n kube-system describe secret $token 

Arranque y parada

Como no queremos que esto esté arrancado todo el rato podemos pararlo con:

 $ microk8s stop 

y arrancarlo con

 $ microk8s start 

Ejecución de comandos con el cluster

Para ejcutar comandos en el cluster debemos usar el comando microk8s kubectl como substituto de kubectl, como hacer esto todo el rato no mola nos crearemos un alias

 alias mkctl="microk8s kubectl" 

Mételo por ejemplo al final del .bashrc

y para poder usarlo a partir de ahora en esa terminal haz un

 $ source .bashrc 

Prueba que funciona correctamente ejecutando

 $ mkctl get ns 

Así que ya podemos trabajar con e lcluster tranquilamente ahora bien, si queremos hacerlo con clase, debemos de gestionarlo con Rancher

Instalación de Rancher

Lo primero que necesitamos es poder ejecutar los pods en modo privilegiado, no es recomendable hacer esto en producción pero en una instalación en local es algo totalmente tolerable, para que el agente del nodo de rancher se pueda ejecutar sin problemas.

 $ sudo sh -c 'echo "--allow-privileged=true" >> /var/snap/microk8s/current/args/kube-apiserver'

Después deberemos reiniciar el servidor para aplicar este modo

 $ sudo systemctl restart snap.microk8s.daemon-apiserver.service 

Para que funcione correctamente helm v2 necesitaremos que esté instalado tiller en el cluster

 $ sudo microk8s.kubectl create serviceaccount tiller --namespace kube-system

$ sudo microk8s.kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller

$ sudo microk8s.helm init --service-account=tiller 

Después instalaremos cert-manager para que se encargue de l gestión de los certificados ssl

$ sudo microk8s.helm repo add jetstack https://charts.jetstack.io

$ sudo microk8s.kubectl apply -f https://raw.githubusercontent.com/jetstack/cert-manager/release-0.9/deploy/manifests/00-crds.yaml

$ sudo microk8s.kubectl create namespace cert-manager

$ sudo microk8s.kubectl label namespace cert-manager certmanager.k8s.io/disable-validation=true 

$ sudo microk8s.helm install --name cert-manager --namespace cert-manager --version v0.9.1 jetstack/cert-manager 

Verificamos que todo está instalado correctamente con

$ mkctl get all -n cert-manager

Ahora ya podemos instalar el chart de helm de rancher

$ sudo microk8s.helm repo add rancher-stable https://releases.rancher.com/server-charts/stable

$ sudo microk8s.helm install rancher-stable/rancher –name rancher –namespace cattle-system –set replicas=1 –set hostname=${HOSTNAME}.home

Esperamos a ver que está todo activo:

code> $  watch microk8s.kubectl get all -n cattle-system

Cuando termina el despliegue te ha generado un certificado para ${HOSTNAME}.home

Deberemos introducir en el /etc/hosts a entrada para decir que 127.0.0.1 es ${HOSTNAME}.home en mi caso sauron.home

 $ sudo echo "127.0.0.1 ${HOSTNAME}.home" >>  /etc/hosts

revisa que está todo correcto con

 $ cat /etc/hosts

Ahora ya podrán entrar a https://${HOSTNAME}.home en mi caso https://sauron.home

Ya sabemos que este sevridor tiene un certificado autogenerado, así que aceptamos y pasamos a configurar Rancher

En esta pantalla de configuración de Rancher meteremos nuestra contraseña de acceso, aceptamos los términos y condiciones y pulsamos en continue.

Ahora nos mostrará la url de acceso y simplemente la salvamos pulsando en Save URL

Ya tenemos instalado Rancher dentro del cluster de Kubernetes pero éste no está importado correctamente dentro de Rancher por lo que aparecerá con color rojo.

Es algo normal hasta que esté completamente configurado, esto tardará dependiendo de lo rápida que sea tu máquina.

Una vez que termine de aprovisionar lo que necesita en el cluster, verás el cluster correctamente conectado.

Si pulsas en el nombre del cluster podemos ver sus métricas y configuraciones

A partir de este momento ya podemos realizar todas las gestiones que nos permite tanto kubernetes por sí solo como teniendo rancher configurado, lo veremos en siguientes entregas de esta serie.

Referencias:

  • https://microk8s.io/
  • https://suda.pl/5-minute-home-server-with/

Comments

Leave a Reply

*

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Si estás interesado en seguir formándote tenemos una serie de cursos gratuitos: http://cursosdedesarrollo.com/cursos/

También disponemos de algunos cursos de pago por si son de tu interés: https://cursosdedesarrollo.com/tienda/

Curso de Angular: https://cursosdedesarrollo.com/tienda/angular/

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies