Breves apuntes de consulta rápida, se irá actualizando poco a poco.
DaemonSet
A DaemonSet ensures that all (or some) Nodes run a copy of a Pod. As nodes are added to the cluster, Pods are added to them. As nodes are removed from the cluster, those Pods are garbage collected. Deleting a DaemonSet will clean up the Pods it created.
Un caso práctico sería, desplegamos daemont Set que genera pod con un container de fluentd que monta los volumnes de /var/lib/docker/containers, fluentd lo envía a un Splunk. Con Daemon Set tendremos un pod en cada nodo.
Servicios
- ClusterIP
- Expone:
- spec.clusterIp:spec.ports[*].port
- Solo puedes acceder este servicio desde dentro del cluster. Accesible desde su spec.clusterIp port. Si hay configurado el spec.ports[*].targetPort enrutará desde el puerto al targetPort. La IP que recibes cuando llamas via kubectl get services es la IP asignada a ese servicio dentro del cluster, internamente.
- Expone:
- NodePort
- Expone:
- <NodeIP>:spec.ports[*].nodePort
- spec.clusterIP:spec.ports[*].port
- Si se accede a este servicio con nodePort, desde la IP externa del nodo, enrutará la petición a spec.clusterIP:spec.ports[*].port, lo cual resultará en enrutarla hacia spec.ports[*].targetPort si está configurado. Este servicio también puede ser accedido en la misma forma que ClusterIP.
- Tu NodeIPS son las direcciones IP externas de los nodos. Tú no puedes acceder al servicio desde ClusterIP:spec.ports[*].nodePort
- Expone:
- LoadBalancer
- Expone
- <spec.loadBalancerIp:spec.ports[*].port
- <NodeIP>:spec.ports[*].nodePort
- spec.clusterIp:spec.ports[*].port
- Puedes acceder al servicio desde la IP de tu balanceador el cual enrutará tu petición al nodePort, el cual enrutará a su vez al puerto del ClusterIP. Puedes acceder a este servicio como harías en un NodePort o un ClusterIP.
- Expone
¿Qué pasa cuando generamos recursos via yaml en AWS?
- Se genera un ALB mediante service tipo node port e ingress
- Se genera ELB mediante service tipo loadbalancer
Mapear puerto de namespace en local
Ejemplo práctico: un despliegue de blackbox exporter dentro del namespace production. Queremos poder acceder via http a ese pod:puerto localmente para consultar métricas. Mapeamos con port-forward como sigue:
kubectl port-forward blackbox-exporter-prometheus-blackbox-exporter-79c8455888-r57kx 9115:9115 -n production
Logs
pod multicontainer
kubectl logs apo-api-analitica-1560416400-7bf2l --all-containers
Ordenar por consumo de ram
kubectl top pod --all-namespaces
, pipe it to sort
:
kubectl top pod --all-namespaces | sort --reverse --key 3 --numeric \ | head -10
kubectl top pod --all-namespace
Muestra la información de top de todos los pods en todos los namespaces.sort --reverse --key 3 --numeric
Ordena el input acorde con los valores numéricos encontrados en la columna 3 y orden descendiente.head -10
Muestra solo las diez primeras líneas.
Herramientas
Links