Cia*_*hue 5 docker docker-swarm
我有一个集群,目前有 135 个容器在 my-stack 堆栈上运行,这已经从 156 个下降了,因为 IP 耗尽问题不断出现,但由于子网配置为 /24,理论上它应该有 100 个可用 IP使用。在所有 docker 节点上执行 docker system prune --all 并没有带回任何可用的 IP 来使用。
在一个实例中,其中一个 docker 节点由于内存问题而停机,并且由于 IP 耗尽,某些服务的容器无法恢复在线状态。该节点必须从 swarm 中删除,并且我必须删除 /var/lib/docker/swarm 的内容才能将该节点重新加入到 swarm 中。在我完成此应用程序后,可以将 IP 分配给该节点。
IP 分配如何与 docker 堆栈配合使用?有没有办法检查分配给容器的 IP 以及距离发生 IP 耗尽还有多远?当我将节点添加回群后,我没想到它会解决 IP 耗尽问题。
码头工人版本:
Client:
Version: 18.03.1-ce
API version: 1.37
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:17:20 2018
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.03.1-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:15:30 2018
OS/Arch: linux/amd64
Experimental: false
Run Code Online (Sandbox Code Playgroud)
乌班图版本:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.4 LTS
Release: 16.04
Codename: xenial
Run Code Online (Sandbox Code Playgroud)
我可以提供一个解决方法:
创建更大的网络:
docker network create --driver overlay --subnet=192.168.0.0/16 new_net
Run Code Online (Sandbox Code Playgroud)
更新你的stack:
docker service update MYSERVICE --network-rm old_net --network-add new_net
Run Code Online (Sandbox Code Playgroud)
如果你真的退出了IPs,你应该在日志中看到类似这样的内容daemon:
level=error msg="任务分配失败" error="无法为任务taskid网络networkid分配网络IP:找不到可用的IP" module=node level=error msg="无法为节点nodeid分配网络资源" 错误="找不到可用的IP" module=node node.id=nodeid
我认为docker需要一段时间来租赁未使用的网络IPs,因此使用更大的网络将在这方面有所帮助。
| 归档时间: |
|
| 查看次数: |
2913 次 |
| 最近记录: |