Cómo configurar un clúster Kubernetes usando Minicube en Debian 11

Minikube es una herramienta gratuita y de código abierto que viene con un conjunto de complementos incorporados que te ayudan a configurar un clúster Kubernetes en tu sistema local. El comando «minicube» proporciona varios subcomandos que te permiten gestionar el clúster Kubernetes a través de la interfaz de línea de comandos. Minikube es multiplataforma y admite muchos sistemas operativos, como Linux, macOS y Windows. Puede desplegarse como una VM, un contenedor o sobre metal desnudo.

Este tutorial enseñará cómo instalar Minikube en Debian 11.

Requisitos

  • Se ha instalado una Debian 11 nueva en tu sistema.
  • La contraseña de root está configurada en tu sistema.

Instalar Docker

Antes de instalar Minikube, el paquete Docker debe estar instalado en tu servidor. Si no está instalado, puedes instalarlo utilizando el siguiente comando.

apt install docker.io -y

Después de instalar Docker, puedes verificar la versión de Docker utilizando el siguiente comando.

docker --version

Deberías ver la siguiente salida.

Docker version 20.10.5+dfsg1, build 55c4c88

Instalar Kubectl

Kubectl es una herramienta para desplegar y gestionar aplicaciones en Kubernetes. Por defecto, Kubectl no está disponible en el repositorio por defecto de Debian 11. Por tanto, tendrás que instalarlo utilizando Snap.

En primer lugar, instala el paquete Snap utilizando el siguiente comando.

apt install snapd -y

A continuación, crea un enlace simbólico para el paquete Snap utilizando el siguiente comando.

ln -s /var/lib/snapd/snap /snap

A continuación, añade una ruta de Snap a tu perfil de sistema.

echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | tee -a /etc/profile.d/snap.sh

A continuación, inicia y activa el servicio Snap con el siguiente comando.

systemctl enable --now snapd.service snapd.socket

A continuación, instala el paquete kubectl utilizando el siguiente comando.

snap install kubectl --classic

A continuación, crea un enlace simbólico del paquete kubectl utilizando el siguiente comando.

ln -s /snap/kubectl/current/kubectl /usr/bin/

Ahora, verifica la versión de kubectl utilizando el siguiente comando.

kubectl version -o yaml

Deberías ver la siguiente salida:

clientVersion:
  buildDate: "2022-12-09T16:23:44Z"
  compiler: gc
  gitCommit: b46a3f887ca979b1a5d14fd39cb1af43e7e5d12d
  gitTreeState: clean
  gitVersion: v1.26.0
  goVersion: go1.19.4
  major: "1"
  minor: "26"
  platform: linux/amd64
kustomizeVersion: v4.5.7

Instalar Minikube

Por defecto, el paquete Minikube no está incluido en el repositorio por defecto de Debian. Así que tendrás que descargar el binario de Minikube en tu sistema.

En primer lugar, descarga Minikube con el siguiente comando.

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

A continuación, copia el binario de Minikube a la ruta del sistema.

cp minikube /usr/local/bin/

A continuación, establece el permiso de ejecución con el siguiente comando.

chmod +x /usr/local/bin/minikube

Ahora, verifica la versión de Minikube utilizando el siguiente comando.

minikube version

Obtendrás la siguiente salida.

minikube version: v1.28.0
commit: 986b1ebd987211ed16f8cc10aed7d2c42fc8392f

Cuando hayas terminado, puedes pasar al siguiente paso.

Iniciar Minikube

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

minikube start --force

Esto descargará la imagen docker y configurará el clúster Kubernetes como se muestra a continuación:

????  minikube v1.28.0 on Debian 11.6 (kvm/amd64)
?  minikube skips various validations when --force is supplied; this may lead to unexpected behavior
?  Automatically selected the docker driver. Other choices: none, ssh
????  The "docker" driver should not be used with root privileges. If you wish to continue as root, use --force.
????  If you are running minikube within a VM, consider using --driver=none:
????    https://minikube.sigs.k8s.io/docs/reference/drivers/none/
????  Using Docker driver with root privileges
????  Starting control plane node minikube in cluster minikube
????  Pulling base image ...
????  Downloading Kubernetes v1.25.3 preload ...
    > preloaded-images-k8s-v18-v1...:  385.44 MiB / 385.44 MiB  100.00% 37.08 M
    > gcr.io/k8s-minikube/kicbase:  386.27 MiB / 386.27 MiB  100.00% 27.51 MiB 
    > gcr.io/k8s-minikube/kicbase:  0 B [________________________] ?% ? p/s 10s
????  Creating docker container (CPUs=2, Memory=2200MB) ...
????  Preparing Kubernetes v1.25.3 on Docker 20.10.20 ...
    ? Generating certificates and keys ...
    ? Booting up control plane ...
    ? Configuring RBAC rules ...
????  Verifying Kubernetes components...
    ? Using image gcr.io/k8s-minikube/storage-provisioner:v5
????  Enabled addons: default-storageclass, storage-provisioner
????  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

Ahora puedes comprobar el estado del clúster con el siguiente comando:

kubectl cluster-info

Deberías ver la siguiente salida:

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

Para comprobar los nodos en ejecución, ejecuta el siguiente comando:

kubectl get nodes

Salida:

NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   67s   v1.25.3

También puedes acceder al contenedor Minikube con el siguiente comando:

minikube ssh

Salida:

docker@minikube:~$ 

Ahora, sal del shell del contenedor con el siguiente comando:

$exit

Puedes detener y eliminar el clúster Kubernetes en cualquier momento con el siguiente comando:

minikube stop
minikube delete

Puedes comprobar el estado de Minikube con el siguiente comando:

minikube status

Salida:

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

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

Acceder al Panel de Control de Kubernetes de Minikube

Por defecto, Minikube proporciona un panel web que puedes utilizar para gestionar tu clúster.

Puedes listar todos los complementos de minikube con el siguiente comando:

minikube addons list

Deberías ver la siguiente salida:

|-----------------------------|----------|--------------|--------------------------------|
|         ADDON NAME          | PROFILE  |    STATUS    |           MAINTAINER           |
|-----------------------------|----------|--------------|--------------------------------|
| ambassador                  | minikube | disabled     | 3rd party (Ambassador)         |
| auto-pause                  | minikube | disabled     | Google                         |
| cloud-spanner               | minikube | disabled     | Google                         |
| csi-hostpath-driver         | minikube | disabled     | Kubernetes                     |
| dashboard                   | minikube | disabled     | Kubernetes                     |
| default-storageclass        | minikube | enabled ?   | Kubernetes                     |
| efk                         | minikube | disabled     | 3rd party (Elastic)            |
| freshpod                    | minikube | disabled     | Google                         |
| gcp-auth                    | minikube | disabled     | Google                         |
| gvisor                      | minikube | disabled     | Google                         |
| headlamp                    | minikube | disabled     | 3rd party (kinvolk.io)         |
| helm-tiller                 | minikube | disabled     | 3rd party (Helm)               |
| inaccel                     | minikube | disabled     | 3rd party (InAccel             |
|                             |          |              | [[email protected]])            |
| ingress                     | minikube | disabled     | Kubernetes                     |
| ingress-dns                 | minikube | disabled     | Google                         |
| istio                       | minikube | disabled     | 3rd party (Istio)              |
| istio-provisioner           | minikube | disabled     | 3rd party (Istio)              |
| kong                        | minikube | disabled     | 3rd party (Kong HQ)            |
| kubevirt                    | minikube | disabled     | 3rd party (KubeVirt)           |
| logviewer                   | minikube | disabled     | 3rd party (unknown)            |
| metallb                     | minikube | disabled     | 3rd party (MetalLB)            |
| metrics-server              | minikube | disabled     | Kubernetes                     |
| nvidia-driver-installer     | minikube | disabled     | Google                         |
| nvidia-gpu-device-plugin    | minikube | disabled     | 3rd party (Nvidia)             |
| olm                         | minikube | disabled     | 3rd party (Operator Framework) |
| pod-security-policy         | minikube | disabled     | 3rd party (unknown)            |
| portainer                   | minikube | disabled     | 3rd party (Portainer.io)       |
| registry                    | minikube | disabled     | Google                         |
| registry-aliases            | minikube | disabled     | 3rd party (unknown)            |
| registry-creds              | minikube | disabled     | 3rd party (UPMC Enterprises)   |
| storage-provisioner         | minikube | enabled ?   | Google                         |
| storage-provisioner-gluster | minikube | disabled     | 3rd party (Gluster)            |
| volumesnapshots             | minikube | disabled     | Kubernetes                     |
|-----------------------------|----------|--------------|--------------------------------|

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 ver el siguiente resultado:

NAMESPACE     NAME                               READY   STATUS    RESTARTS        AGE
kube-system   coredns-565d847f94-9ttdq           1/1     Running   0               2m47s
kube-system   etcd-minikube                      1/1     Running   0               3m
kube-system   kube-apiserver-minikube            1/1     Running   0               3m1s
kube-system   kube-controller-manager-minikube   1/1     Running   0               3m
kube-system   kube-proxy-mr8sn                   1/1     Running   0               2m47s
kube-system   kube-scheduler-minikube            1/1     Running   0               3m
kube-system   storage-provisioner                1/1     Running   1 (2m16s ago)   2m59s

Ahora, ejecuta el siguiente comando para obtener la URL del panel de control de Kubernetes:

minikube dashboard --url

Deberías ver la siguiente salida:

????  Enabling dashboard ...
    ? Using image docker.io/kubernetesui/metrics-scraper:v1.0.8
    ? Using image docker.io/kubernetesui/dashboard:v2.7.0
????  Some dashboard features require the metrics-server addon. To enable all features please run:

	minikube addons enable metrics-server	


????  Verifying dashboard health ...
????  Launching proxy ...
????  Verifying proxy health ...
http://127.0.0.1:45627/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

En este punto, el panel de control de Minikube está instalado y ejecutándose en localhost en el puerto 45627. Sin embargo, sólo puedes acceder a él desde la máquina local. Si quieres acceder a él desde una máquina externa, ejecuta el siguiente comando.

kubectl proxy --address='0.0.0.0' --disable-filter=true

Ahora, abre tu navegador web y escribe la URL http://your-server-ip:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/. Se te redirigirá al panel de control de Kubernetes, como se muestra en la página siguiente:

Minicubo Kubernetes

Enhorabuena! has instalado con éxito Minikube en Debian 11. Ahora puedes gestionar fácilmente tu clúster de Kubernetes a través de tu navegador web. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...