K8s 다중 사이트에 대해 Wireguard를 어떻게 구성합니까?

K8s 다중 사이트에 대해 Wireguard를 어떻게 구성합니까?

K3s 다중 사이트 클러스터에 대해 Wireguard를 구성하려고 시도했는데 라우팅 관련 문제가 있습니다. 한 위치에 2개 + 다른 위치에 1개, 다른 위치에 + 1개 등 최소 4개의 노드가 있습니다.

가정:

  • 10.50.0.0/16 네트워크는 물리적 노드용입니다.
  • 10.42.0.0/16 네트워크는 포드용입니다.
  • 10.43.0.0/16 네트워크는 서비스용입니다.
  • 각 물리적 노드는 10.42.0.0/16 범위의 고유 IP 주소가 할당된 Pod를 생성할 수 있습니다.
  • 각 물리적 노드의 각 포드는 서로 핑할 수 있어야 합니다.

배포된 구성은 마지막 두 노드 사이에서만 작동했으며 나머지 노드는 서로 핑할 수도 없습니다. 라우팅에 문제가 있는 것 같은데, 이를 확인할 만큼 지식이 부족합니다.

두 노드의 구성 예:

10.50.54.100:

[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:

[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를 사용하여 어떻게 설계해야 합니까? 이 구성이 작동하지 않는 이유는 무엇입니까?

감사해요!

답변1

(죄송합니다. 이 내용이 맞는지 100% 확신할 수는 없지만 아직 이 사이트에 댓글을 사용할 수 있는 담당자가 충분하지 않기 때문에 이 내용은 댓글이어야 합니다.)

나는 WireGuard가 주어진 아웃바운드 패킷을 라우팅할 피어를 아는 방법이기 때문에 AllowedIPs각각에 대해 고유해야 한다고 생각합니다 (즉, 겹치지 않는 범위). [Peer]그렇다면 각 사이트에 대해 별도의 IP 범위(포드 및 서비스의 경우 노드는 중요하지 않음)를 설정해야 합니다.

나는 그것이 무엇을 할 것인지 보기 위해 겹치는 범위로 실제로 시도한 적이 없으며 문서에는 이에 대한 정확한 내용이 없지만 이것이 지원되지 않음을 암시하는 것 같습니다. (지원된다면 AllowedIPs패킷의 대상 주소를 포함하는 모든 피어에게 각 패킷을 브로드캐스트하거나 ARP와 같은 것을 사용하여 라우팅을 동적으로 파악해야 합니다.)

저는 에 익숙하지 않아서 k3s다중 사이트 클러스터가 어떻게 작동하는지 잘 모르겠습니다. 기본적으로 중앙에서 관리되는 여러 개의 별도 Kubernetes 클러스터입니까?

관련 정보