docker - 当我的堆栈上的内存少于256个限制时,为什么会发生Docker IP耗尽?

标签 docker docker-swarm

我有一个群集,目前在我的堆栈上运行着135个容器,这已经从156个减少了,因为IP耗尽一直存在问题,但是由于子网配置为/ 24,理论上应该有100个IP可用使用。进行docker系统修剪-所有docker节点上的所有对象都没有收回要使用的任何可用IP。

在一个实例中,一个Docker节点之一由于内存问题和IP耗尽而关闭,某些服务的容器无法恢复在线。必须将节点从群集中删除,并且我必须删除/ var / lib / docker / swarm的内容才能将节点重新加入群集。在完成此应用程序之后,我便可以将IP分配给该节点。

IP分配如何与docker堆栈一起使用,是否有办法检查分配给容器的IP,以及IP耗尽的距离有多远?当我将节点重新添加到群集后,我没想到它会解决IP耗尽问题。

docker 版本:

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


Ubuntu版本:
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.4 LTS
Release:    16.04
Codename:   xenial

最佳答案

我可以提供一种解决方法:

创建更大的网络:

docker network create --driver overlay --subnet=192.168.0.0/16 new_net

更新您的stack:
docker service update MYSERVICE --network-rm old_net --network-add new_net

如果您确实不喜欢IPs,那么应该在daemon日志中看到类似以下内容:

level=error msg="task allocation failure" error="failed to allocate network IP for task taskid network networkid : could not find an available IP" module=node level=error msg="Failed to allocate network resources for node nodeid" error="could not find an available IP" module=node node.id=nodeid



我认为docker需要一些时间来租用未使用的IPs,因此使用较大的网络将对此有所帮助。

关于docker - 当我的堆栈上的内存少于256个限制时,为什么会发生Docker IP耗尽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57992086/

相关文章:

linux - 如何通过ftp部署nginx?

python - 在 Conda UnsatisfiableError 消息中找不到冲突

docker 群 : how to publish a service only on a specific node that runs a task

docker - Gitlab : build docker container, 然后用它来编译

linux - NGINX docker 容器无法在网络浏览器中访问

laravel - 减少 Laravel 5.8 的 Docker 镜像大小

docker - 如何正确存储和共享Docker主机访问权限?

ssl - Docker 群 TLS 无法验证挂起的节点

azure - 如何在Azure容器服务中获取Swarm代理负载均衡器的URL

docker - 在 shell 脚本上使用 docker-compose 文件版本 3 的优势?