在Kubernetes下是否可以将Pod主机名作为托管节点的主机名?

时间:2019-03-18 15:31:34

标签: docker kubernetes

从Docker迁移到K8s,今天我们使用以下命令运行一些容器: docker run --hostname%H ... 导致容器将主机的主机名作为自己的主机名,我可以在K8s下运行类似的行为吗? (将pod主机名作为Node主机名)

根据我到目前为止所看到的:

  1. spec.hostname似乎不支持来自环境变量的值。

  2. 使用hostAliases似乎使用了硬编码的名称...

顺便说一句,吊舱已部署为DeamonSet

1 个答案:

答案 0 :(得分:0)

如果将hostNetwork: true用于Pod的规格,它将与该节点共享网络。这是一个简单的测试:

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  hostNetwork: true
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "sh", "-c"]
      args:
      - while true; do
          echo -en '\n';
          printenv HOSTNAME
          sleep 10;
        done;
  restartPolicy: Never

这表明Pod的主机名与其​​节点相同。

请注意,尽管此设置是常规的not recommended

  

出于与hostNetwork相同的原因,请避免使用hostPort

但是,就您而言,这不是问题。