【问题标题】:Network issues with docker containers having specific IP具有特定 IP 的 docker 容器的网络问题
【发布时间】:2017-09-12 12:39:35
【问题描述】:

问题

我的 docker 网络中有一个 IP 地址 (172.17.0.11) 有问题。每当容器获得此 IP 时,来自容器的出站连接就会停止工作。当我杀死这个容器时:

  • 仍然可以 ping 此 IP,尽管没有人使用它
  • iptables 中没有与此 IP 关联的规则
  • 我看到 docker-proxy 在 netstat 中为此 IP 建立了很多连接,但同时,此列表中具有悬空连接的其他 IP 没有任何问题

在我看来 IP 冲突 - curl 不起作用,wgetping 工作非常缓慢,可能是因为它们每次都重新建立连接。这不是 DNS 问题,通过 IP 进行 curl 也不能正常工作,使用的 docker 映像没有区别。

基础设施

这是 Debian 8(4.9 内核)上的单服务器设置,带有 kubernetes 1.6.4 和 docker-ce 17.06.1(overlay2)。这个问题是在我从 1.12.6 升级到 17.06.1 之后发生的

请帮我调试这个问题。

码头工人版本:

Client:
 Version:      17.06.1-ce
 API version:  1.30
 Go version:   go1.8.3
 Git commit:   874a737
 Built:        Thu Aug 17 22:53:31 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.06.1-ce
 API version:  1.30 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   874a737
 Built:        Thu Aug 17 22:51:25 2017
 OS/Arch:      linux/amd64
 Experimental: false

码头信息:

Containers: 336
 Running: 336
 Paused: 0
 Stopped: 0
Images: 52
Server Version: 17.06.1-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 6e23458c129b551d5c9871e5174f6b1b7f6d1170
runc version: 810190ceaa507aa2727d7ae6f4790c76ec150bd2
init version: 949e6fa
Kernel Version: 4.9.0-0.bpo.3-amd64
Operating System: Debian GNU/Linux 8 (jessie)
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 28.76GiB
Name: host
ID: QY6I:JI2S:BOPG:FIQP:YEBB:3UYF:N3G2:COCQ:PX7Z:QRCV:GIEN:FGQC
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

【问题讨论】:

    标签: docker networking kubernetes


    【解决方案1】:

    您是否尝试重新启动故障节点?看起来某些命名空间/网桥配置可能被卡住了。

    【讨论】:

    • 有没有办法检查?只要我知道问题是什么以及理论上可能导致它的原因,重启就可以解决。
    • 有时这些情况可能由于边缘情况而发生,并且可能很少发生。因此,如果它仍然存在,那么您应该担心,否则简单的重启应该可以工作很长时间
    • @TarunLalwani 人们如何调试这样的案例?也许我可以启用一些额外的日志来间接证明存在网桥配置问题?
    【解决方案2】:

    此问题是由于 docker 网络(网桥插件)与主机上网络的实际状态不同步引起的。来自 docker 网络的 IP 已释放,但相关的虚拟接口和相关的 tcp 连接保持不变。因此,当这个 IP 附加到一个新容器时,网络异常开始发生。

    这很可能发生在随机 docker 守护进程挂起之后(发生在较旧的 1.12 版本中)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多