具有3个以上节点的docker swarm
服务在swarm中运行,副本数= 1,并且重新启动=总是
swarm主机具有多个接口-每个接口一个具有相同名称的vlan
服务被部署为堆栈
我想用运行docker的同一个替换在静态IP上的VM中运行的服务。在ETH_SERVER接口上使用相同的SERVICE_IP。
对于具有静态ip的一个或多个服务,我有什么选择?
A。在docker stack yml中添加了ipv4_address-似乎尚未在docker中实现(至少尚未实现)
B。将具有反向代理的新主机添加到Docker堆栈服务
C。在docker主机上使用keepalived并映射SERVICE_IP-这样,如果主机出现故障,浮动IP将被重新分配-但不确定是否可以使用FLOATING_SERVICE_IP :: ...
D公开端口。 ...?
是否有“更好”的方法?
我尝试这样做:
每个docker host:
docker network create --config-only --subnet="<CIDR>" --ip-range="<CIDR>" -o parent="INTERFACE" "vlan_name_intermediate"
,然后是整个群的全局网络网络“ vlan_name”的服务,我可以从该vlan内部对其执行ping操作,但是IP是随机分配的,不是静态的。我尝试将其添加到组合yaml文件中:
docker network create -d macvlan --scope swarm --config-from "vlan_name_intermediate" "vlan_name"
其中ip在CIDR ip-range内,但设置被忽略
#1 楼
在2016年6月30日,此问题在GitHub上创建,要求在docker-swarm服务上实现静态IP。此后,添加了多个带有上下大拇指的答复。
在撰写本文时(2019年12月20日),此问题尚未解决,尚未实现。
讨论IP将永远在docker-swarm中实现。另一方面,不清楚为什么这个问题还没有解决。如果人们希望看到此功能已实现,则可以创建一个Pull请求或添加一个大拇指以增强意识。
评论
为什么需要静态IP?这是第一个要解决的问题,如果没有迫切需要静态ip的问题,剩下的就是解决XY问题。多个原因:(1)需要通过许可文件与设置为特定ip + port的其他旧版软件进行对话的旧版软件(并且我需要一次启用服务,以及(2)像dhcp / dns这样的全网服务网络中通过ip + port连接的其他服务通过api使用api(无主机名选项)。
然后,C是您唯一的选择(B只是在实际位置上添加另一台机器),但是您当然不应该首先尝试将这些服务转换为容器,而是朝着一条充满痛苦的技术之路前进它们不是为构建而来的,只是在主机和应用之间添加了一层而根本没有好处。
我的情况也一样,您找到了一个好的解决方案吗?
@eval不,我将一些服务移至了proxmox主机