将POD自己的IP设置为hostaliases

时间:2018-05-22 12:39:48

标签: kubernetes

如您所知,在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分配一个主机名。 e.g。

  hostAliases:
  - ip: "$POD_IP"
    hostnames:
    - "myname"

有可能吗?以及如何?

1 个答案:

答案 0 :(得分:1)

我认为这不可能。 Kubectl的条件是hostAliases [] .ip必须是有效的IP。除了IP之外,没有办法插入任何东西。

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

  • 默认情况下,kubernetes会为/ etc / hosts添加POD_IP和POD_NAME的条目,所以也许你可以使用它。

  • 您始终可以修改容器的入口点以在/ etc / hosts中写入该条目。以下是使用向下API的示例:

apiVersion: v1 kind: Pod metadata: name: test spec: 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