No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Reg铆strate

Comienza en:

3D
16H
16M
51S
Curso de Kubernetes

Curso de Kubernetes

Marcos Lilljedahl

Marcos Lilljedahl

Accediendo a nuestros PODS a trav茅s de servicios

16/33
Recursos

El tipo de servicio en Kubernetes pueden ser de cuatro formas diferentes:

  • Cluster IP: Una IP virtual es asignada para el servicio
  • NodePort: Un puerto es asignado para el servicio en todos los nodos
  • Load Balancer: Un balanceador externo es provisionado para el servicio. Solo disponible cuando se usa un servicio con un balanceador
  • ExternalName: Una entrada de DNS manejado por CoreDNS

Aportes 15

Preguntas 4

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Para quienes estemos utilizando minikube y no nos d茅 el comando curl desde nuestro host, debemos ingresar a nuestro cluster, as铆:

minikube ssh -p cluster_name

Una vez dentro del cluster, podemos probar el comando curl hacia la ip del pod.

curl http://pod_id:pod_port

Parra no tener que copiar o revisar el nombre del POD, podemos tambien seleccionar con label, el primero de todas las replicas y hacer el CURL:

#Curl al primer POD
curl http://$(kubectl get po -l app=httpenv -o jsonpath="{.items[0].status.podIP}"):8888 | jq ""

#Curl al service
curl http://$(kubectl get service/httpenv -o jsonpath='{.spec.clusterIP}'):8888 | jq ""

#Ciclo para revisar el Curl extrayendo cual sea la IP 
for i in $(seq 10); do curl -s http://$(kubectl get service/httpenv -o jsonpath='{.spec.clusterIP}'):8888 | jq ".HOSTNAME"; done

Curso de tmux 馃槃

Algoritmos implementados en un LoadBalancer:

  • Round-Robin
  • Least Connnection
  • Least Time
  • Hash
  • IP Hash
  • Random with two choices

Un peque帽o resumen de como funcionan los LoadBalancer y los diferentes algoritmos:
https://www.nginx.com/resources/glossary/load-balancing/

Alguien me puede explicar como elimin贸 todos los pods de cada unode los nodos?
Tengo rato intentando y nada porque si utilizo

kubectl delete pods <pod> --grace-period=0 --force

vuelve a crear el pod

Para activar el jq dentro del cluster

sudo apt-get update && \ sudo apt-get install jq
NAVEGANDO A LOS PODS

#Exponer pods a traves de un clusterIP
kubectl expose deployment httpenv --port=8888

#Navegar a pods
curl http://cluster-ip:cluster-port

#Ciclo para revisar todos los hostname
for i in $(seq 10); do curl -s http://$(kubectl get service/httpenv -o jsonpath='{.spec.clusterIP}'):8888 | jq ".HOSTNAME"; done

dejo un aporte de un blog detallado de los servicios con graficas https://www.josedomingo.org/pledin/2018/11/recursos-de-kubernetes-services/

Si alguno no logr贸 formatear la salida del curl con los comandos:

curl http://clusterip:port | jq ""
for i in $(seq 10); do curl -s http://clusterip:port | jq .HOSTNAME; done

En el caso de ubuntu, debemos instalar jq:

apt update
apt install jq

Entendido y funcional

kubectl get pods
kubectl describe pod idpod
kubectl get all
kubectl delete deploy/httpenv 
kubectl create deployment httpenv --image jpetazzo/httpenv
kubectl get pods
kubectl get all
kubectl scale deployment httpenv --replicas=5
kubectl get pods
kubectl get pods -o wide
curl http://10.44.0.5:8888
curl http://10.44.0.5:8888 |jq ""   // formatea resultado hayq ye revisar ela version  de linux
kubectl expose deployment httpenv --port=8888
kubectl get svc
for i in $(seq 10); do curl -s http://10.110.57.28:8888 |jq .HOSTNAME; done

Para un cluster configurado de manera diferente con minikube, tomen nota de la IP del pod (ejemplo 10. 244. 0. 227) , prueben entrar al pod (ejemplo httpenv-858f759c7-bbvm8)

kubectl exec -it httpenv-858f759c7-bbvm8 鈥 sh

los pods usan alpine linux, que no contienen curl, necesitan instalarlo
apk add curl jq

finalmente ejecutar el comando
curl http 馃槙/ 10.244.0.227 : 8888

Cabe aclarar que en caso de que se elimine el pod, la herramienta curl ya no existir谩, necesitan instalarlo de nuevo en pod

Exponiendo un servicio con minikube

  • Primero creamos el deployment.
  • k create deployment <name deployment> 鈥攊mage=nginx
  • Seguido, escalamos el deployment.
  • k scale deployment <name deployment> 鈥攔eplicas=5
  • Una vez escalado procedemos a exponer el servicio, en este caso tipo de clusterip.
  • k expose deployment <name deployment> 鈥攖ype=<type service>鈥攑ort=8888
  • Seguido, exponemos el servicio a traves de minikube.
  • minikube service <name service> -p <profile cluster minikube>
  • De esta manera podemos acceder localhost:36809

ImagePullBackOff: el pod no se pudo crear porque la imagen no existe.

repasando 馃槂

Por alguna razon no me resulta el curl, me da timeout.
el servicio esta ready, el pod running con la imagen correcta, al ver el log del pod esta escuchando en el puerto 8888. La vdd no se donde analizar 馃槮