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