No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Instalando nuestro primer cluster con Minikube, Kubeadm

9/33
Recursos

Minikube es una herramienta para desplegar un cluster en tu máquina local.

kubeadm es un boostrap, un utilitario que permite realizar todo lo mostrado en el repositorio de Kelsey.

Aportes 59

Preguntas 9

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Para los que no tienen kubectl instalado, aqui les dejo como hacerlo

Ubuntu/Debian o Hypriot OS

  1. sudo apt-get update && sudo apt-get install -y apt-transport-https
  2. curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
  3. echo “deb https://apt.kubernetes.io/ kubernetes-xenial main” | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
  4. sudo apt-get update
  5. sudo apt-get install -y kubectl

Para ejecutar el minikube seria:

  1. minikube start --drive=virtualbox ( no viene por default, para hacer default es, minikube config set driver virtualbox, y podras ejecutar minikube start con virtualbox )

  2. kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4

  3. kubectl expose deployment hello-minikube --port=8080 --type=NodePort

  4. minikube service hello-minikube

Algunos comandos que te puede ayudar

  1. kubectl get service (listar servicios)

  2. kubectl get pod (lilstar pod)

  3. kubectl get all (listar todo)

  • El comando kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.4 --port=8080 ya está deprecated y no me sirvió para crear un deployment sino que me creó un pod.

  • En la documentación oficial de minikube encontré los comandos actualizados: https://minikube.sigs.k8s.io/docs/start/

  • Estos fueron los comandos que me sirvieron para hacer un deployment:

  • Deploy applications

  1. Create a sample deployment and expose it on port 8080:
    - kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4
    - kubectl expose deployment hello-minikube --type=NodePort --port=8080

  2. It may take a moment, but your deployment will soon show up when you run:
    - kubectl get services hello-minikube

  3. The easiest way to access this service is to let minikube launch a web browser for you:
    - minikube service hello-minikube

  4. Alternatively, use kubectl to forward the port:
    -kubectl port-forward service/hello-minikube 7080:8080

COMANDOS

kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.10
kubectl expose deployment hello-minikube --type=NodePort --port=8080
kubectl get pod
minikube ip
minikube service hello-minikube --url
kubectl get service
minikube dashboard
kubectl delete services hello-minikube
kubectl delete deployment hello-minikube
minikube stop
minikube delete

Hay una versión mínima de kubernetes para equipos de pocos recursos o incluso ARM (Raspberry PI, Odroid, etc…)
https://k3s.io/

Así puedes controlar desde tu PC lo nodos que levantes en otros equipos como un cluster real, en lugar de montar minikube.

Al final no pude entender cómo desplegó el “hello-minikube”… tampoco vi una forma clara para validar la IP y hacer el despliegue… . Estimado Marcos Lilljedahl, al minuto 09:20, quedaste en explicar cómo se configura la IP del minikube… pero no lo hiciste. En los logs de minikube existe la línea.

CRI error: /sys is read-only: cannot modify conntrack limits, problems may arise later (If running Docker, see docker issue #24000)

tal vez alguien tenga alguna idea… En mi experimento use los siguientes comandos para desplegar el cluster:

#----------------------------------------------------------------------
#Creando un Cluster con Minikube:

#1- Desplegar la imagen para el primer deployment: 
 $ kubectl create deployment cluster-1 --image=k8s.gcr.io/echoserver:1.4

#2- Vistazo al deployment:
 $ kubectl get deployments

#3- Vistazo al pod
 $ kubectl get pods

#4- Vistazo a los eventos durante el despliegue de Minikube (minikube start)
 $ kubectl get events

#5- Vistazo a la configuración
 $ kubectl config view

#----------------------------------------------------------------------
#Creando el Servicio: 

#1- Exponiendo el pod a la internet o mundo exterior
 $ kubectl expose deployment cluster-1 --type=LoadBalancer --port=8080

#2- Vistazo al nuevo servicio
 $ kubectl get services

#3- creando el servicio accesible
 $ minikube service cluster-1

https://minikube.sigs.k8s.io/docs/start/
https://minikube.sigs.k8s.io/docs/handbook/deploying/
Puede ser que haga falta alguna configuración en virtualbox, pero en la documentación que leí no había ninguna advertencia, salvo las necesidades del hardware, las cuales están dentro de los parámetros requeridos…




Cantinflea tanto que me estresa escucharlo simplemente. Habla muchísimo y hasta el momento no he aprendido literalmente nada. Me suscribí a Platzi para poder aprender kubernetes, la publicidad que hace dura 4 minutos en promedio por clase y lo demás es la clase que no termino por entender.

Actualización enero 2021

Si tienes instalada la versión minikube 1.10.1 o mayor
ahora tienes la posibilidad de correr un clúster multinodo

minikube start --nodes 2 -p vm-name

donde la bandera --nodes especificas la cantidad de nodos a desplegar
y -p el nombre de la (o las máquinas virtuales) que serán creadas.

kubectl get nodes
NAME                    STATUS   ROLES    AGE   VERSION
multinode-vm-name       Ready    master   72s   v1.18.2
multinode-vm-name-m02   Ready    <none>   33s   v1.18.2

MUcha de esta documentación esta desactualizada para abril 2021, revisen el portal actual para la info de minikube https://minikube.sigs.k8s.io/docs/start/

Para los que tengan mac con M1:

1. brew install minikube
2. kubectl create deployment balanced --image=k8s.gcr.io/echoserver-arm:1.8
3. kubectl expose deployment hello-minikube --type=NodePort --port=8080
4. minikube service hello-minikube

Hay que cambiar el valor de --image a uno arm based y tener esto en cuenta siempre!

Han actualizado el README del repositorio de Minikube. Ahora la documentación oficial de Minikube y las instrucciones de como instalarlo estan aquí:
https://minikube.sigs.k8s.io/docs/start/

😄

Pésimo curso hasta ahora, casi no explicas nada

En el momento en que realicé el tutorial (Septiembre del 2021) muchos de los comandos son obsoletos o no funcionan.

En mi caso seguí los pasos del tutorial oficial y no tuve ningún problema

# Descargar minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# Instalar minikube
minikube start
# Instalar kubectl desde minikube
minikube kubectl -- get po -A
# Agregar alias temporal para facilitar uso
alias kubectl="minikube kubectl --"
# Ver nodos
kubectl get nodes
# Ver estado de minikube
minikube status
# Crear un despliegue nuevo
kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4
# Exponer el despliegue anterior
kubectl expose deployment hello-minikube --type=NodePort --port=8080
# Abrir el servicio anterior en un navegador
minikube service hello-minikube
# Ver servicios
kubectl get services
# Abrir dashboard
minikube dashboard

kubectl es una herramienta de línea de comandos de Kubernetes. Sirve para desplegar aplicaciones, inspeccionar y administrar recursos de los clusters y ver logs.

kubelet es un agente que se ejecuta en cada nodo de un cluster y asegura que los contenedores estén corriendo en un pod.

Instalar Minikube en Mac
Los comandos son los siguientes:

 brew update
 brew cask install virtualbox
 brew install kubernetes-cli
 brew install minikube
 sudo mv minikube /usr/local/bin
 brew cleanup

En caso querer instalar en windows o linux, les dejo el enlace de la documentación oficial de minikube

Hoy (28/02/2022) la instalación se ha facilitado mucho desde esta página (eliges tu sistema operativo, arquitectura… y te indica las instrucciones actualizadas para tu caso:
https://minikube.sigs.k8s.io/docs/start/

Hasta el momento un curso que no recomiendo, en cada clase la mitad del contenido no aporta nada, tenia expectativas altas con este curso, espero lo actualicen.

Para quienes usen minikube 1.20.x y crearon el minikube como el profesor

$ minikube -p platzi2

Todos los comandos que correspondan a minikube deben ir acompañados de la bandera -p

$ minikube -p platzi2 service hello-minikube
$ minikube -p platzi2 dashboard

Si están ejecutándolo de un servidor remoto, entrar con ssh y ejecutar: export DISPLAY=:0 para poder arrancar el dashboard en esa maquina

Es importante mencionar que en caso de tener corriendo doker swarm nos saldra algunos errores al correr el comando minikube start, en caso de que llegue a pasar debemos salirnos de docker swarm y eliminar las networks que crea

kubelet es el agente que corre en nuestros nodos.

RESUMEN

Para realizar la instalación de nuestro primer cluster debemos descargar “Minikube” que será la herramienta utilizada para la administración del cluster.

Para realizar la descarga de la herramienta se debe acceder al siguiente url: https://minikube.sigs.k8s.io/docs/start/

Posteriormente para realizar la primera instalación del primer cluster se debe ejecutar el siguiente comando en la terminal:
MINIKUBE START

Se realizará la descarga de los respectivos componentes y se tendrá disponible el cluster.

Cuando el cluster está disponible se pueden utilizar una serie de comandos para interactuar con el Minikube
kubectl get nodes: Muestra los nodos disponibles.

minikube status: Nos muestra el estado de los

componentes del minikube: host, kubelet y apiserver.

kubectl create deployment hello-minikube: Crea un nuevo deployment con el nombre hello-minikube.

kubectl expose deployment hello-minikube –type=NodePort –port=8080: Expone el deyment con el nombre hello-minikube en el puerto 8080.

**minikube service hello-minikube: **Levanta el servicio con el nombre hello-minikube, muestra una nueva pestaña con el servicio.

minikube dashboard: Muestra el dashboard disponible para k8s.

Para ejecutar los comandos de minikube pueden seguir esta documentación.

https://minikube.sigs.k8s.io/docs/handbook/controls/

En junio 2023 segui este tutorial para la instalacion
https://minikube.sigs.k8s.io/docs/start/

Para los que usen MAC con procesador ARM64 (M1) hello-minikube falla siempre con error “conection refused” con la imagen indicada en la documentación de kubernetes.
Por lo tanto el comando correcto para es:

kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver-arm:1.8

Referencia: https://github.com/kubernetes/minikube/issues/12036

Pueden ver en este blog una versión más actualizada de cómo instalar y usar Minikube

Yo estoy corriendo minikube en una maquina virtual de Ubuntu 20.04 y tuve 2 problemas, los cuales los solucione con:

![](

sudo usermod -aG docker $USER && newgrp docker

y

 minikube start --driver=docker

https://minikube.sigs.k8s.io/docs/drivers/docker/

Pueden ver los contenedores en docker desktop si están en windows

repasando 😃

Por si tienen problemas con el Hyper-V En Windows

https://minikube.sigs.k8s.io/docs/start/windows/

Gracias compañeros por los aportes. Saludos desde Bolivia. 😃

Caso de error en la instalación
En caso de presentar el siguiente error:
Suggestion: Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver

En mi caso, como uso virtualbox como hypervisor, la solución fue la siguiente:

minikube delete
minikube start --vm-driver=virtualbox

Para ver las direcciones IP de las máquinas virtuales en VirtualBox a través de la línea de comando en Ubuntu, puedes ejecutar el siguiente comando en la terminal:
.
.

VBoxManage guestproperty enumerate <nombre-de-tu-maquina-virtual> | grep IP
.
.

Reemplaza <nombre-de-tu-maquina-virtual> con el nombre de la máquina virtual de la que deseas ver las direcciones IP. Este comando mostrará una lista de las direcciones IP asignadas a la máquina virtual, incluidas las direcciones IP internas y externas, si están disponibles.
.
.

Ej:
.
.

VBoxManage guestproperty enumerate minikube | grep IP
.
.

VBoxManage guestproperty enumerate platzi2 | grep IP
.
.

Espero que les sea de utilidad.

Para los que deseen instalar kubectl seguir la guia de https://kubernetes.io/es/docs/tasks/tools/included/install-kubectl-linux/

Minikube Linux

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

Bueno el instalar el minikube, me costo un poco por el video esta un poco desactualizado, me guie con un video paso a paso para mi caso que es sobre Win10, y al final se pudo instalar :
Resultado:
(https://prnt.sc/0pdK_g2mmlNI)

como obtengo la direccion IP de mi cluster si estoy utilizando docker desktop en vez de minicube?

Instalar kubectl con snap:

`sudo snap install kubectl --classic`

Añado, para ubuntu 20.04 hay que ejecutar las instrucciones que pone: aquí

En caso de que alguien este utilizando una VM desde Hyper-V para hacer el curso y tenga problemas al ejecutar minikube por temas de virtualizacion recomiendo:

  1. Apagar la VM, abrir PowerShell y ejecutar el siguiente comando:

Set-VMProcessor -VMName “nombre de tu maquina” -ExposeVirtualizationExtensions $true

  1. Encender la VM e Instalar Virtualbox si la VM tiene Linux, si la VM usa windows puede instalar el servicio de Hyper-V dentro de ella

  2. Iniciar minikube

En mi caso, usando Fedora lo hice con los siguientes comandos:

dnf groupinfo virtualization
sudo dnf install @virtualization
sudo systemctl start libvirtd
sudo systemctl enable libvirtd
sudo usermod --append --groups libvirt $(whoami)
minikube start

¿Necesito mucho espacio libre en la unidad del SO de Windows cuando creo un cluster? En el video eo que crea un virtualbox de 20 gigas de espacio.

Hice una pequeña guia para ejecutar Kubernetes en Windows 10 Pro
espero les sirva

Para facilitar las cosas en Windows, al instalar Docker desktop, este cliente trae la opción de activar Kubernetes y si lo ponen con WSL2 es mucho más rápido.

En mi caso me aparecieron un montón de problemas con minikube (estoy en un linux min). Pero igual pude instalar el minikube, pero con virtualbox omo hypervisor.

Y lo que nunca entendí, como sacar la ip del cluster en el caso que ya estuviese corriendo. Ya que en mi caso no me entregó ninguna ip:

~$ minikube start --vm-driver=virtualbox
😄  minikube v1.7.2 on Linuxmint 19.3Using the virtualbox driver based on user configuration
⌛  Reconfiguring existing host ...
🏃  Using the running virtualbox "minikube" VM ...
🐳  Preparing Kubernetes v1.17.2 on Docker 19.03.5 ...
💾  Downloading kubelet v1.17.2
💾  Downloading kubeadm v1.17.2
💾  Downloading kubectl v1.17.2
🚀  Launching Kubernetes ... 
🌟  Enabling addons: default-storageclass, storage-provisioner
🏄  Done! kubectl is now configured to use "minikube"

Buen el paso a paso para hacerlo

Para poder set un profile en minikube se corre el comando

minikube profile platzi2

Luego si se corre minikube status y da el status actual del cluster

Para usar Minikube en windows se recomienda desactivar hyper-v y es mejor instalar VirtualBox para levantar k8s

tambien pueden utilizar microk8s. se instala desde snap. Tambien es una herramienta para desplegar un cluster en tu máquina local.

sudo snap install microk8s --classic

A parte de minikube y kubeadm, encontré otra herramienta también desarrollada por k8s, kops. ¿Encontré unos ejemplos, pero lo que quiero saber es cuál es la diferencia de kops con kubeadm?

Una herramienta muy interesante

super! pero mi pc no me dio para levantar nodos :_(

Actualizar kubectl
Primero debemos verificar que tanto la version del cliente como del servidor sean las mismas

kubectl version 

En caso no ser iguales aplicar los siguientes pasos:

curl -LO https://storage.googleapis.com/kubernetes-release/release/<version>/bin/darwin/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl $(which kubectl)

Donde <version> se reemplaza por la version que queremos, en mi caso v1.18.0

Lo que no entendi es si con esta herramienta puedo tener varios nodos en local alguin me puede explicar

Para los que quieran usar Windows y Docker, les sugiero revisar la documentación Docker no se “deja” instalar en todas las versiones de Windows Home.

Existen unas opciones muy buenas para Instalar un K8s en su equipo local.

Les comparto las ligas:

microk8s
kind

La documentacion esta muy completa y ambos tiene la opción para crear un cluster.

Y si prefieren hacerlo en un cloud , use el k8s de DigitalOcean, pueden usar los dollares de regalo para hacer sus pruebas.

Saludos!!

Por otro lado

y si no quisiera ocupar minikube, existe otra forma?

Tengo un par de dudas:
1ª:
El comando kubectl get services hello-minikube
devuelve un cluster-ip, ¿Cuál es esa IP?


La información de puertos de ese mismo comando muestra un mapeo de puertos. Por ejemplo: 8080:30647. ¿Entiendo que el puerto 8080 del contenedor se estaría mapenado por el puerto 30647 que sale al exterior, y no al revés?¿Es correcto?


¿Porqué para ver el servicio desde el navegador tenemos que usar la ip proporcionadad por el comando minikube ip (Que entiendo que es la IP del cluster) y no la IP que devuelve el comando kubectl get services hello-minikube (CLUSTER-IP)?

Quizá más adelante en los videos se explique mejor este concepto pero por ahora no lo entiendo.

Saludos

En este pod te explica detalladamente como desplegar un cluster con Vagrant, Ansible y Virtualbox y tener todo el entrono de pruebas locamente y lo mas parecido a uno en el mundo real. https://www.itwonderlab.com/es/cluster-kubernetes-vagrant-ansible/

Si quieren generarlos diferentes objetos de kubernetes apartir de una estrucutra de docker-compose les recomiendo komposer

microk8s para entornos unix y la ventaja ahora es que la instalacion de docker en windows y mac ya vienen kubernetes