首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为K8s多站点配置Wireguard?

如何为K8s多站点配置Wireguard?
EN

Server Fault用户
提问于 2022-05-01 10:13:13
回答 1查看 814关注 0票数 0

我试图为K3s多站点集群配置Wireguard,我的问题是路由问题。至少有4个节点,其中2个位于一个位置+1个位于其他位置,+1位于其他位置。

假设:

  • 10.50.0.0/16网络用于物理节点
  • 10.42.0.0/16网络用于豆荚
  • 10.43.0.0/16网络用于服务
  • 每个物理节点都可以创建一个Pod,它在10.42.0.0/16范围内分配了一个唯一的IP地址
  • 每个物理节点上的每个Pod都应该能够互相平接。

部署的配置只在最后两个节点之间工作,其余的节点甚至不能相互切换。我想这可能是与路由有关,但我没有足够的知识来检查这一点。

两个节点的示例配置:

10.50.54.100:

代码语言:javascript
复制
[Interface]
# primary-1
Address = 10.50.54.100/24
PrivateKey = pr111111111111111111111111111111111111111111
ListenPort = 443
MTU = 1500
PostUp = sysctl -w net.ipv4.ip_forward=1
PostUp = echo 1 > /proc/sys/net/ipv4/ip_forward
PostUp = ufw allow 443/udp || true
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
PostDown = sysctl -w -q net.ipv4.ip_forward=0
PostDown = echo 0 > /proc/sys/net/ipv4/ip_forward

[Peer]
# infra-1
PublicKey = pub11111111111111111111111111111111111111111
AllowedIPs = 10.50.54.0/16, 10.42.0.0/16, 10.43.0.0/16
PersistentKeepalive = 15
Endpoint = xxxxxxxxxx:443

[Peer]
# compute-2
PublicKey = pub2222222222222222222222222222222222222222
AllowedIPs = 10.50.54.0/16, 10.42.0.0/16, 10.43.0.0/16
PersistentKeepalive = 15
Endpoint = yyyyyyyyyy:443

[Peer]
# storage-1
PublicKey = pub3333333333333333333333333333333333333333
AllowedIPs = 10.50.54.0/16, 10.42.0.0/16, 10.43.0.0/16
PersistentKeepalive = 15
Endpoint = zzzzzzzzzzz:443

10.50.54.2:

代码语言:javascript
复制
[Interface]
# infra-1
Address = 10.50.54.2/24
PrivateKey = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
ListenPort = 443
MTU = 1500
PostUp = sysctl -w net.ipv4.ip_forward=1
PostUp = echo 1 > /proc/sys/net/ipv4/ip_forward
PostUp = ufw allow 51820/udp || true
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
PostDown = sysctl -w -q net.ipv4.ip_forward=0
PostDown = echo 0 > /proc/sys/net/ipv4/ip_forward

[Peer]
# primary-1
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AllowedIPs = 10.50.54.0/16, 10.42.0.0/16, 10.43.0.0/16
PersistentKeepalive = 15
Endpoint = xxxxxxxxxxxx:443

[Peer]
# compute-2
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AllowedIPs = 10.50.54.0/16, 10.42.0.0/16, 10.43.0.0/16
PersistentKeepalive = 15
Endpoint = yyyyyyyyyyy:443

[Peer]
# storage-1
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AllowedIPs = 10.50.54.0/16, 10.42.0.0/16, 10.43.0.0/16
PersistentKeepalive = 15
Endpoint = zzzzzzzzzzzz:443

你有什么线索吗?这应该如何与Wireguard一起设计?为什么这个配置不能工作?

谢谢!

EN

回答 1

Server Fault用户

发布于 2022-06-06 03:56:29

(抱歉,这可能是一个评论,因为我不能百分之百确定它是否正确,但我在这个网站上还没有足够的代表来使用评论。)

我认为每个AllowedIPs[Peer]必须是唯一的(即不重叠的范围),因为这是WireGuard知道将给定的出站包路由到哪个对等点的方式。如果是这样的话,您将需要为每个站点设置单独的IP范围(对于豆荚和服务--节点不重要)。

实际上,我从未尝试过使用重叠范围来查看它会做什么,而且文档上的内容也不太清楚,但这似乎意味着它不受支持。(如果支持它,则必须将每个数据包广播到所有AllowedIPs包含该数据包的目的地地址的对等点,或者使用类似于ARP的方法动态地确定路由。)

我不太熟悉k3s,所以不确定它的多站点集群是如何工作的--这基本上只是集中管理的多个单独的Kubernetes集群吗?

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1099893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档