如您所知,在k8s中,我们可以在Deployment.yaml中使用hostAliases在/ etc / hosts中设置其他条目,例如:

apiVersion: v1
kind: Pod
metadata:
  name: hostaliases-pod
spec:
  restartPolicy: Never
  hostAliases:
  - ip: "127.0.0.1"
    hostnames:
    - "foo.local"

但是我想ip是POD自己的IP,然后为POD分配一个主机名。例如
  hostAliases:
  - ip: "$POD_IP"
    hostnames:
    - "myname"

有可能吗?以及如何?

最佳答案

我认为不可能这样。 Kubectl的条件是hostAliases []。ip必须是有效的IP。除了IP,没有其他方法可以插入。

也就是说,还有其他解决方案:

  • 默认情况下,kubernetes将POD_IP和POD_NAME的条目添加到/ etc / hosts,因此也许您可以使用它。
  • 您始终可以修改容器的入口点,以将该入口写入/ etc / hosts中。这是使用向下API的示例:
  • apiVersion: v1kind: Podmetadata: name: testspec: containers: - name: test-container image: k8s.gcr.io/busybox:1.24 command: [ "sh", "-c"] args: - echo $MY_POD_IP myname >> /etc/hosts; <INSERT YOU ENTRYPOINT HERE> env: - name: MY_POD_IP valueFrom: fieldRef: fieldPath: status.podIP restartPolicy: Never

    10-06 07:13