Cómo instalar Kubernetes con Minikube en Ubuntu 20.04

Minikube es una herramienta de código abierto que te ayuda a configurar un clúster Kubernetes de un solo nodo en tu máquina local. Facilita la ejecución de un clúster Kubernetes de un solo nodo en tu ordenador personal para el trabajo diario de desarrollo. Es multiplataforma y puede instalarse en macOS, Linux y Windows.

En este tutorial, te mostraremos cómo instalar Minikube en un servidor Ubuntu 20.04.

Requisitos previos

  • Escritorio Ubuntu 20.04 instalado en tu sistema.
  • Mínimo 4 GB de RAM y 2 o más núcleos de CPU.
  • La virtualización de hardware debe estar activada en tu sistema local.
  • El servidor debe tener configurada una contraseña de root.

Cómo empezar

Antes de empezar, se recomienda actualizar los paquetes de tu sistema a la última versión. Puedes actualizarlos ejecutando el siguiente comando:

apt-get update -y

Una vez actualizados todos los paquetes, instala otras dependencias ejecutando el siguiente comando:

apt-get install curl wget apt-transport-https virtualbox virtualbox-ext-pack -y

Cuando hayas terminado, puedes pasar al siguiente paso.

Instalar Docker

A continuación, tendrás que instalar Docker en tu sistema. Puedes instalarlo ejecutando el siguiente comando:

apt-get install docker.io -y

Una vez instalado Docker, inicia el servicio Docker y habilítalo para que se inicie al reiniciar el sistema:

systemctl start docker
systemctl enable docker

Ahora puedes verificar la versión de Docker mediante el siguiente comando:

docker --version

Deberías ver la versión de Docker en la siguiente salida:

Docker version 19.03.8, build afacb8b7f0

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar Minikube

Por defecto, Minikube no está disponible en el repositorio por defecto de Ubuntu. Así que tendrás que descargar el paquete binario de Minikube desde su sitio web oficial. Puedes descargarlo con el siguiente comando:

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

Una vez finalizada la descarga, copia el binario descargado a la ruta del sistema con el siguiente comando:

cp minikube-linux-amd64 /usr/local/bin/minikube

A continuación, proporciona permiso de ejecución con el siguiente comando:

chmod 755 /usr/local/bin/minikube

Ahora puedes verificar la versión de Minikube con el siguiente comando:

minikube version

Deberías obtener la siguiente salida:

minikube version: v1.16.0
commit: 9f1e482427589ff8451c4723b6ba53bb9742fbb1

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar Kubectl

A continuación, tendrás que instalar Kubectl y otras herramientas para gestionar aplicaciones en Kubernetes. En primer lugar, añade la clave GPG con el siguiente comando:

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

A continuación, añade el repositorio kubectl con el siguiente comando:

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

Una vez añadido el repositorio, actualiza la caché del repositorio e instala el Kubectl ejecutando el siguiente comando:

apt-get update -y
apt-get install kubectl kubeadm kubectl -y

Una vez instalados todos los paquetes, puedes pasar al siguiente paso.

Iniciar Minikube

Llegados a este punto, todos los paquetes necesarios están instalados. Ahora puedes iniciar Minikube con el siguiente comando:

minikube start

Deberías obtener la siguiente salida:

* minikube v1.16.0 on Ubuntu 20.04 (kvm/amd64)
* Using the none driver based on user configuration
* Starting control plane node minikube in cluster minikube
* Running on localhost (CPUs=2, Memory=3936MB, Disk=100726MB) ...
* OS release is Ubuntu 20.04 LTS
* Preparing Kubernetes v1.20.0 on Docker 19.03.8 ...
  - kubelet.resolv-conf=/run/systemd/resolve/resolv.conf
    > kubectl.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
    > kubeadm.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
    > kubelet.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
    > kubeadm: 37.40 MiB / 37.40 MiB [---------------] 100.00% 27.29 MiB p/s 1s
    > kubectl: 38.37 MiB / 38.37 MiB [---------------] 100.00% 27.60 MiB p/s 1s
    > kubelet: 108.69 MiB / 108.69 MiB [-------------] 100.00% 42.08 MiB p/s 3s
  - Generating certificates and keys ...
  - Booting up control plane ...
  - Configuring RBAC rules ...
* Configuring local host environment ...
* 
! The 'none' driver is designed for experts who need to integrate with an existing VM
* Most users should use the newer 'docker' driver instead, which does not require root!
* For more information, see: https://minikube.sigs.k8s.io/docs/reference/drivers/none/
* 
! kubectl and minikube configuration will be stored in /root
! To use kubectl or minikube commands as your own user, you may need to relocate them. For example, to overwrite your own settings, run:
* 
  - sudo mv /root/.kube /root/.minikube $HOME
  - sudo chown -R $USER $HOME/.kube $HOME/.minikube
* 
* This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true
* Verifying Kubernetes components...
* Enabled addons: storage-provisioner, default-storageclass
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

Puedes comprobar la información del cluster con el siguiente comando:

kubectl cluster-info

Deberías obtener la siguiente salida:

Kubernetes control plane is running at https://45.58.38.77:8443
KubeDNS is running at https://45.58.38.77:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

Puedes comprobar la configuración por defecto de Kubectl con el siguiente comando:

kubectl config view

Deberías obtener la salida siguiente:

apiVersion: v1
clusters:
- cluster:
    certificate-authority: /root/.minikube/ca.crt
    server: https://45.58.38.77:8443
  name: minikube
contexts:
- context:
    cluster: minikube
    namespace: default
    user: minikube
  name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
  user:
    client-certificate: /root/.minikube/profiles/minikube/client.crt
    client-key: /root/.minikube/profiles/minikube/client.key

Puedes comprobar todos los nodos en ejecución con el comando siguiente:

kubectl get nodes

Deberías obtener la siguiente salida:

NAME         STATUS   ROLES                  AGE     VERSION
ubuntu2004   Ready    control-plane,master   2m24s   v1.20.0

Para comprobar el estado de Minikube, ejecuta el siguiente comando:

minikube status

Deberías obtener la siguiente salida:

minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
timeToStop: Nonexistent

Una vez que hayas terminado, puedes pasar al siguiente paso.

Acceder al panel de control de Kubernetes

Minikube viene con un montón de complementos que puedes activar o desactivar según tus necesidades. Puedes listar todos los complementos con el siguiente comando:

minikube addons list

Deberías obtener la siguiente salida:

|-----------------------------|----------|--------------|
|         ADDON NAME          | PROFILE  |    STATUS    |
|-----------------------------|----------|--------------|
| ambassador                  | minikube | disabled     |
| csi-hostpath-driver         | minikube | disabled     |
| dashboard                   | minikube | disabled     |
| default-storageclass        | minikube | enabled ?   |
| efk                         | minikube | disabled     |
| freshpod                    | minikube | disabled     |
| gcp-auth                    | minikube | disabled     |
| gvisor                      | minikube | disabled     |
| helm-tiller                 | minikube | disabled     |
| ingress                     | minikube | disabled     |
| ingress-dns                 | minikube | disabled     |
| istio                       | minikube | disabled     |
| istio-provisioner           | minikube | disabled     |
| kubevirt                    | minikube | disabled     |
| logviewer                   | minikube | disabled     |
| metallb                     | minikube | disabled     |
| metrics-server              | minikube | disabled     |
| nvidia-driver-installer     | minikube | disabled     |
| nvidia-gpu-device-plugin    | minikube | disabled     |
| olm                         | minikube | disabled     |
| pod-security-policy         | minikube | disabled     |
| registry                    | minikube | disabled     |
| registry-aliases            | minikube | disabled     |
| registry-creds              | minikube | disabled     |
| storage-provisioner         | minikube | enabled ?   |
| storage-provisioner-gluster | minikube | disabled     |
| volumesnapshots             | minikube | disabled     |
|-----------------------------|----------|--------------|

A continuación, lista todas las imágenes contenedoras que se ejecutan en el clúster con el siguiente comando:

kubectl get pods --all-namespaces

Deberías obtener el siguiente resultado:

NAMESPACE     NAME                                 READY   STATUS    RESTARTS   AGE
kube-system   coredns-74ff55c5b-skf9d              1/1     Running   0          3m45s
kube-system   etcd-ubuntu2004                      1/1     Running   0          3m54s
kube-system   kube-apiserver-ubuntu2004            1/1     Running   0          3m54s
kube-system   kube-controller-manager-ubuntu2004   1/1     Running   0          3m54s
kube-system   kube-proxy-w8q6d                     1/1     Running   0          3m45s
kube-system   kube-scheduler-ubuntu2004            1/1     Running   0          3m54s
kube-system   storage-provisioner                  1/1     Running   0          3m59s

A continuación, activa el panel de control de Kubernetes y obtén la URL del panel de control con el siguiente comando:

minikube dashboard --url

Deberías obtener el siguiente resultado:

* Enabling dashboard ...
* Verifying dashboard health ...
* Launching proxy ...
* Verifying proxy health ...
http://127.0.0.1:36499/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

You can now access and manage the Kubernetes cluster using the URL http://127.0.0.1:36499/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

Conclusión

En la guía anterior, has aprendido a instalar Minikube y a utilizarlo para configurar un clúster Kubernetes en Ubuntu 20.04. Ahora puedes utilizar Minikube para configurar un clúster Kubernetes localmente y gestionarlo desde el navegador web. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...