A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Curso de Kubernetes

Curso de Kubernetes

Marcos Lilljedahl

Marcos Lilljedahl

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 52

Preguntas 8

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

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 鈥渄eb 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

Creo que a esta clase le falto bastante explicaci贸n, hizo varios comandos y varias cosas que al final no termino mostrando鈥 me hubiese gustado muchas mas explicaci贸n de los componentes de minikube, como se comunica kubectl con minikube, como termino configurando la ip que le daba problema, y como descubri贸 que era la ip lo que le daba problema

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.

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/

馃槃

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!

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.

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

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.

Al final no pude entender c贸mo despleg贸 el 鈥渉ello-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鈥




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

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

kubelet es el agente que corre en nuestros nodos.

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

Para los que usen MAC con procesador ARM64 (M1) hello-minikube falla siempre con error 鈥渃onection 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

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 馃槂

Interesante lo de empezar a trabajar antes con docker y docker-compose.

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

Instalar kubectl con snap:

`sudo snap install kubectl --classic`

A帽ado, para ubuntu 20.04 hay que ejecutar las instrucciones que pone: aqu铆

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/

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 鈥渘ombre 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

vaa 鈥 tuve que seguir otros tutoriales para q me funcione 鈥 aqui falta informacion 鈥 馃槙

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 鈥渄eja鈥 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?

2陋
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?

3陋
驴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

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