Is it possible to set a hostname in a Kubernetes r

2020-07-03 04:02发布

问题:

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?

回答1:

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:
        ...


回答2:

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.



回答3:

This feature (hostnames) is coming in kubernetes v1.2



标签: kubernetes