我想要实现的是:不同的团队使用不同的子网, 每个团队负责人设置一个etcd,指定一个子网。
例如
team1 use 10.1..
team2 use 10.2..
所有团队成员在他的工作站上设置法兰绒,并指向团队负责人的etcd。
当然,团队可以访问其他团队。例如10.2..
可以访问10.1..
。我认为这将需要对etcd进行集群。
考虑一个简单的场景:
用户A和用户B在自己的笔记本电脑上安装了法兰绒。网络设置可能不同。用户A使用10.****
,用户B使用9.***
。
如何让他们的法兰绒彼此交谈
这是我所做的:
我在同一硬件盒上的2个VM上部署了两个flanneld
。
当我使用以下网络设置时,它可以正常工作
etcdctl set /coreos.com/network/config '{ "Network": "10.1.0.0/16", "Backend": { "Type": "vxlan", "VNI": 1} }'
flanneld
正在运行自己的etcd。但是两个etcd是集群的。
现在我要进行测试:
我想在两个flanneld
上设置不同的网络设置:
etcdctl set /coreossub2.com/network/config '{ "Network": "10.2.0.0/16", "Backend": { "Type": "vxlan", "VNI": 2} }' - on VM flanneld2. the flannel.1's ip is10.2.35.0/32
etcdctl set /coreos.com/network/config '{ "Network": "10.1.0.0/16", "Backend": { "Type": "vxlan", "VNI": 1} }' - on VM flanneld1. the flannel.1's ip is10.1.58.0/32
还编辑了/etc/sysconfig/flanneld
以使用新的网络前缀。
我希望看到flanneld1
可以ping flanneld2
。换句话说,ip 10.1..
可以ping 10.2..
etcd的查询结果:
http://192.168.31.5:2379/v2/keys/**coreossub2.com**/network/subnets:
{"action":"get","node":{"key":"/coreossub2.com/network/subnets","dir":true,"nodes":[{"key":"/coreossub2.com/network/subnets/10.2.35.0-24","value":"{"PublicIP":"192.168.31.5","BackendType":"vxlan","BackendData":{"VtepMAC":"5a:da:1e:82:b4:47"}}","expiration":"2019-06-20T01:11:04.53312Z","ttl":85681,"modifiedIndex":15,"createdIndex":15}],"modifiedIndex":13,"createdIndex":13}}
http://192.168.31.5:2379/v2/keys/**coreos.com**/network/subnets
{"action":"get","node":{"key":"/coreos.com/network/subnets","dir":true,"nodes":[{"key":"/coreos.com/network/subnets/10.1.58.0-24","value":"{"PublicIP":"192.168.31.253","BackendType":"vxlan","BackendData":{"VtepMAC":"12:11:b8:cf:ba:7e"}}","expiration":"2019-06-20T01:23:31.4882784Z","ttl":84531,"modifiedIndex":18,"createdIndex":18}],"modifiedIndex":8,"createdIndex":8}}
他们正在使用其他密钥(这是我所期望的)。 vtepmac
是flannel.1
。
Flannel version: 0.7.1
Backend used :vxlan
Etcd version: 3.3.11-2
Operating System and version: centos 7
我想原因是: 法兰绒不能仅使使用相同密钥(网络前缀)的vtep彼此连接。因为它们在同一节点列表中。 当我使用不同的网络前缀时。 vtep在不同的节点列表中。因此绒布不能让他们彼此接触。