【问题标题】:docker ping unknown Host exceptiondocker ping 未知主机异常
【发布时间】:2018-09-21 16:11:44
【问题描述】:

docker 容器在何时给出 unknowHost 异常

ping "private Network hostname" 

ping:未知主机

但是当我通过 IP ping 时它会给出结果

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

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

【问题讨论】:

    标签: docker kubernetes docker-compose dockerfile kubectl


    【解决方案1】:

    您可以在 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。

    【讨论】:

    • 太棒了,感谢您提供的信息。我将非常感谢您的意见。我会测试它并接受答案。
    猜你喜欢
    • 1970-01-01
    • 2013-04-06
    • 2011-05-24
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 2012-07-21
    相关资源
    最近更新 更多