How to add custom host entries to kubernetes Pods?
Solution 1
This works and also looks simpler:
kind: Service
apiVersion: v1
metadata:
name: {HOST_NAME}
spec:
ports:
- protocol: TCP
port: {PORT}
targetPort: {PORT}
type: ExternalName
externalName: {EXTERNAL_IP}
Now you can use the HOST_NAME
from the pod directly to access the external machine.
Solution 2
From k8s 1.7 you can add hostAliases
. Example from the docs:
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"
Solution 3
Host files are going to give you problems, but if you really need to, you could use a configmap.
Add a configmap like so
apiVersion: v1
kind: ConfigMap
metadata:
name: my-app-hosts-file-configmap
data:
hosts: |-
192.168.0.1 gateway
127.0.0.1 localhost
Then mount that inside your pod, like so:
volumeMounts:
- name: my-app-hosts-file
mountPath: /etc/
volumes:
- name: my-app-hosts-file
configMap:
name: my-app-hosts-file-configmap
Karthik
Passionate about Distributed systems. I have worked on building a service-oriented architecture from scratch of an existing monolith system. Building softwares at startup and enterprise scale. When away from work one can find me meddling with my Rasberry-pi, or trying hands on on some trending projects on Github. Building prototype on blockchain platform. Sometimes you can find me cycling on the countryside or conquering the mountains.
Updated on June 15, 2022Comments
-
Karthik almost 2 years
My application communicates to some services via hostnames. When running my application as a docker container i used to add hostnames to the /etc/hosts of the hostmachine and run the container using
--net=host
.Now I'm running my containers in kubernetes cluster. I would like to know how can i add the /etc/hosts entries to the pod via
yaml
.I'm using kubernetes v1.5.3.