从Docker迁移到K8s,今天我们使用以下命令运行一些容器: docker run --hostname%H ... 导致容器将主机的主机名作为自己的主机名,我可以在K8s下运行类似的行为吗? (将pod主机名作为Node主机名)
根据我到目前为止所看到的:
spec.hostname似乎不支持来自环境变量的值。
使用hostAliases似乎使用了硬编码的名称...
顺便说一句,吊舱已部署为DeamonSet
答案 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
但是,就您而言,这不是问题。