Reputation: 221
I need to set a static hostname in a Kubernetes replication controller. Docker supports it with some runtime flags, however, Kubernetes replication controllers don't appear to support it. The environment: OS - CentOS 6.6 Approach to use sysctl to change the variable kernel.hostname does not work for a K8s replication controller. The host name is not changed. Use: sysctl kernel.hostname to read the current hostname, and sysctl kernel.hostname=NEW_HOSTNAME
Is it possible to set a hostname in a Kubernetes replication controller?
Upvotes: 22
Views: 46797
Reputation: 1861
In 1.7 you can set the hostname directly in the Deployment spec
spec:
replicas: 1
template:
spec:
hostname: myhostname
containers:
...
Old Answer
Now that 1.2 has landed, you can set a static hostname in a Replication Controller or Deployment spec
using the pod.beta.kubernetes.io/hostname
annotation.
spec:
replicas: 1
template:
metadata:
annotations:
pod.beta.kubernetes.io/hostname: myhostname
labels:
...
Upvotes: 38
Reputation: 7287
Kubernetes (currently) treats pods as cattle, not pets, so it's undesirable to specify hostnames of the individual pods. There is a lengthy discussion in the github issue on the needs of (re-)using hostnames and how to solve that. It seems that the nominal services (a.k.a. PetSets), which is yet to be implemented, may help resolve this issue.
Upvotes: 6