具有特定IP的docker容器的网络问题

时间:2017-09-12 12:39:35

标签: docker networking kubernetes

问题

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

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

看起来IP冲突对我来说 - curl不起作用,wgetping工作得非常慢,可能是因为他们每次都重新建立连接。这是不是DNS问题,由于curl不能正常工作,所使用的docker镜像没有区别。

基础设施

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

之后

请帮我调试这个问题。

docker version:

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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