docker ping unknown主机异常

时间:2018-04-11 17:01:29

标签: docker kubernetes docker-compose dockerfile kubectl

docker容器在

时给出unknowHost异常
ping "private Network hostname" 
  

ping:未知主机

但是当我通过IP ping它时会得到结果

  

传输8个数据包,接收8个数据包,0%丢包

解决方法似乎是在正在运行的docker容器中添加/etc/hosts文件的主机条目,但我在K8平台中使用docker动态创建新容器,因此我无法手动添加主机条目。我想知道为什么它无法解析主机名。任何帮助表示赞赏:)

1 个答案:

答案 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。