Mi aplicación se comunica con algunos servicios a través de nombres de host. Cuando ejecutaba mi aplicación como un contenedor docker, solía agregar nombres de host a /etc/hosts de la máquina host y ejecutar el contenedor usando --net=host .
Ahora estoy ejecutando mis contenedores en el clúster de kubernetes. Me gustaría saber cómo puedo agregar las entradas de /etc/hosts al pod a través de yaml .
Estoy usando kubernetes v1.5.3.
Desde k8s 1.7 puede agregar hostAliases . Ejemplo de los documentos :
apiVersion: v1 kind: Pod metadata: name: hostaliases-pod spec: restartPolicy: Never hostAliases: - ip: "127.0.0.1" hostnames: - "foo.local" - "bar.local" - ip: "10.1.2.3" hostnames: - "foo.remote" - "bar.remote"Los archivos de host le darán problemas, pero si realmente los necesita, puede usar un mapa de configuración.
Agregue un mapa de configuración así
apiVersion: v1 kind: ConfigMap metadata: name: my-app-hosts-file-configmap data: hosts: |- 192.168.0.1 gateway 127.0.0.1 localhostLuego móntelo dentro de su cápsula, así:
volumeMounts: - name: my-app-hosts-file mountPath: /etc/ volumes: - name: my-app-hosts-file configMap: name: my-app-hosts-file-configmapEsto funciona y también parece más simple:
kind: Service apiVersion: v1 metadata: name: {HOST_NAME} spec: ports: - protocol: TCP port: {PORT} targetPort: {PORT} type: ExternalName externalName: {EXTERNAL_IP} Ahora puede usar HOST_NAME desde el pod directamente para acceder a la máquina externa.