docker容器在
时给出unknowHost异常ping "private Network hostname"
ping:未知主机
但是当我通过IP ping它时会得到结果
传输8个数据包,接收8个数据包,0%丢包
解决方法似乎是在正在运行的docker容器中添加/etc/hosts
文件的主机条目,但我在K8平台中使用docker动态创建新容器,因此我无法手动添加主机条目。我想知道为什么它无法解析主机名。任何帮助表示赞赏:)
答案 0 :(得分:0)
您可以在Pod Spec中添加hostAliases
。有关详细信息,请see the official doc。
以下是Pod
使用hostAliases
的示例:
apiVersion: v1
kind: Pod
metadata:
name: hostaliases-pod
spec:
restartPolicy: Never
hostAliases:
- ip: "8.8.8.8"
hostnames:
- "foo.local"
- "bar.local"
containers:
- name: cat-hosts
image: busybox
command:
- ping
args:
- "foo.local"
如果我们看到pod的日志:
$ kubectl logs po/hostaliases-pod
PING foo.local (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=61 time=51.333 ms
64 bytes from 8.8.8.8: seq=1 ttl=61 time=59.600 ms
....
正如官方文档中所述,有一些limitations:
HostAlias仅支持1.7 +。
1.7中的HostAlias支持仅限于非hostNetwork Pod,因为kubelet仅管理非hostNetwork Pod的hosts文件。
在1.8中,无论网络配置如何,所有Pod都支持HostAlias。