如您所知,在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"
有可能吗?以及如何?
答案 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