【问题标题】:Is it possible to have under Kubernetes the Pod hostname be the hosting Node hostname?是否可以在 Kubernetes 下将 Pod 主机名作为托管节点主机名?
【发布时间】:2019-08-09 00:38:58
【问题描述】:

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

就我目前所见:

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

  2. 使用 hostAliases 好像放了一个硬编码的名字...

顺便说一句,pod 部署为 DeamonSet

【问题讨论】:

  • 我鼓励您阅读有关 statefulsets 的内容,您可以在其中指定您希望 pod 应该具有的前缀。当然,这将在机器分配的序数之前。
  • @RaunakJhawar 谢谢!但这现在作为 DeamonSet 运行(因为我需要它一直运行并且每个节点一个实例),如果可以与 DeamonSet 保持一致,那就最好了。

标签: docker kubernetes


【解决方案1】:

如果您使用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相同

但是,在您的情况下,这可能不是问题。

【讨论】:

    猜你喜欢
    • 2019-01-27
    • 1970-01-01
    • 2012-09-02
    • 2020-02-13
    • 2021-09-18
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 2020-06-21
    相关资源
    最近更新 更多