No tienes acceso a esta clase

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

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?

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

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

Exponiendo un servicio con minikube

  • Primero creamos el deployment.
  • k create deployment <name deployment> —image=nginx
  • Seguido, escalamos el deployment.
  • k scale deployment <name deployment> —replicas=5
  • Una vez escalado procedemos a exponer el servicio, en este caso tipo de clusterip.
  • k expose deployment <name deployment> —type=<type service>—port=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 😦