Esta cuestión se puede tratar de diversas formas, sin embargo te damos la que para nosotros es la resolución más completa.
Solución:
La respuesta más sencilla es asegurarse de que los archivos yaml/json del pod o del controlador de replicación agreguen la IP del pod como una variable de entorno agregando el bloque de configuración que se define a continuación. (el bloque a continuación también hace que el nombre y el espacio de nombres estén disponibles para el pod)
env:
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
Vuelva a crear el pod/rc y luego intente
echo $MY_POD_IP
también corre env
para ver qué más te ofrece kubernetes.
Salud
Algunas aclaraciones (no es realmente una respuesta)
En kubernetes, a cada pod se le asigna una dirección IP y a cada contenedor del pod se le asigna la misma dirección IP. Por lo tanto, como dijo Alex Robinson en su respuesta, solo puede usar hostname -i
dentro de su contenedor para obtener la dirección IP del pod.
Probé con un pod que ejecutaba dos contenedores tontos y, de hecho, hostname -i
estaba generando la misma dirección IP dentro de ambos contenedores. Además, esa IP era equivalente a la obtenida usando kubectl describe pod
desde el exterior, lo que valida todo el asunto de la OMI.
Sin embargo, la respuesta de PiersyP me parece más clara.
Fuentes
De los documentos de Kubernetes:
Todas las aplicaciones en un pod usan el mismo espacio de nombres de red (misma IP y espacio de puerto) y, por lo tanto, pueden “encontrarse” entre sí y comunicarse usando localhost. Debido a esto, las aplicaciones en un pod deben coordinar su uso de puertos. Cada pod tiene una dirección IP en un espacio de red plano compartido que tiene comunicación completa con otras computadoras físicas y pods a través de la red.
Otra pieza de los documentos de Kubernetes:
Hasta ahora este documento ha hablado de contenedores. En realidad, Kubernetes aplica direcciones IP en el ámbito del Pod: los contenedores dentro de un Pod comparten sus espacios de nombres de red, incluida su dirección IP. Esto significa que todos los contenedores dentro de un pod pueden llegar a los puertos de los demás en localhost.
kubectl describe pods
le dará alguna información incluyendo la IP
Si tienes alguna duda o forma de progresar nuestro sección te mencionamos realizar una acotación y con mucho gusto lo estudiaremos.