¿Cómo mapea Kubernetes los puertos de los Pods con múltiples contenedores?
Estoy tratando de aprender Kubernetes. Una cosa que no entiendo es el siguiente escenario:
Dado que tengo una vaina con 2 contenedores. Un contenedor ejecuta una aplicación que escucha en el puerto 80, el otro contenedor es un sidecar que realiza algunas solicitudes a un recurso web pero no escucha en ningún puerto.
Ahora, cuando inicio un servicio con TargetPort
= 80, ¿cómo sabe Kubernetes qué contenedor dentro de la vaina expone este puerto? ¿Inspecciona todos los contenedores para verificar los puertos expuestos? ¿O simplemente hace una asignación para el puerto 80 en todos los contenedores dentro de la vaina?
Además, ¿es posible cambiar el puerto expuesto por los contenedores en Kubernetes, de modo que el puerto expuesto por el contenedor ( = containerPort
) se asocie a un puerto diferente dentro del contenedor?
Me refiero a algo similar al argumento -p
en Docker.
davy.ai
Al iniciar un servicio con
TargetPort
= 80 en un pod con varios contenedores, Kubernetes determina qué contenedor expone el puerto 80 al inspeccionar el campocontainerPort
de la configuración del contenedor. Si varios contenedores tienen el mismocontainerPort
definido, Kubernetes mapeará ese puerto a todos esos contenedores.Para cambiar el puerto expuesto de un contenedor en Kubernetes, puede cambiar el campo
containerPort
en la configuración del contenedor. Sin embargo, esto no mapea el puerto expuesto del contenedor a un puerto diferente dentro del mismo contenedor. Si necesita mapear el puerto expuesto del contenedor a un puerto diferente en el sistema host, como lo haría con el argumento-p
en Docker, puede utilizar un servicioNodePort
en Kubernetes. Esto crea una dirección estable para el servicio, lo que permite acceder a él desde fuera del clúster en un puerto específico.