У меня есть сценарий с множеством разных узлов. У некоторых есть общедоступный IPv4, у некоторых есть IPv6, у некоторых есть двойной стек. Поэтому я создал сеть wireguard (10.11.12.0/24), чтобы любой одноранговый узел мог связаться с любым другим внутри частной сети в отношении IP-стека и местоположения. Я хотел бы построить Kubernetes поверх этих сетей wireguard.
Я построил небольшой тестовый кластер...
общедоступный IP-адрес узла wireguard ip
вм1 192.168.10.10 10.11.12.10
вм2 192.168.10.11 10.11.12.11
вм3 192.168.10.12 10.11.12.12
...
... на моей локальной игровой площадке с kubeadm 1.23.5 на основе docker.io (по умолчанию в Debian):
vm01> kubeadm init --apiserver-advertise-address=10.11.12.10 --pod-network-cidr=10.20.0.0/16
vm01> kubectl применить -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml
vm01> kubectl применить -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
...
все узлы> kubeadm join 10.11.12.10:6443 --token ... --discovery-token-ca-cert-hash sha256:...
...
vm01> helm upgrade --install ingress-nginx ingress-nginx --repo https://kubernetes.github.io/ingress-nginx --namespace ingress-nginx --create-namespace
Когда я смотрю с vm1 на vm2 через tcpdump -n хост 192.168.10.11
, я вижу только трафик через пакеты UDP wireguard. Отлично...
Затем я определил простое развертывание, службу, ClusterIP, Ingress и развернул.
---
apiVersion: приложения/v1
вид: развертывание
метаданные:
имя: kubernetes-tutorial-deployment
спецификация:
реплики: 2
селектор:
метки соответствия:
приложение: kubernetes-tutorial-deployment
шаблон:
метаданные:
этикетки:
приложение: kubernetes-tutorial-deployment
спецификация:
контейнеры:
- имя: kubernetes-tutorial-application
изображение: auth0blog/kubernetes-tutorial
порты:
- контейнерПорт: 3000
---
апиВерсия: v1
вид: сервис
метаданные:
имя: kubernetes-tutorial-cluster-ip
спецификация:
порты:
- порт: 80
протокол: TCP
целевой порт: 3000
селектор:
приложение: kubernetes-tutorial-deployment
тип: КластерIP
---
Версия API: networking.k8s.io/v1
вид: Вход
метаданные:
имя: kubernetes-tutorial-ingress
спецификация:
ingressClassName: nginx
правила:
- хост: test.example.com
http:
пути:
- дорожка: /
тип пути: префикс
серверная часть:
оказание услуг:
имя: kubernetes-tutorial-cluster-ip
порт:
номер: 80
Когда я проверяю браузер, я получаю ответ. Но...
Ответ очень медленный (я могу подтвердить с помощью простого завитка, сервису требуется 10-20 секунд, чтобы ответить на один запрос - это странно медленно для такого простого развертывания.
Когда я смотрю через tcpdump, я вижу трафик вне сети wireguard, что гораздо более странно.
18:39:18.341836 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 128
18:39:18.344382 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 176
18:39:18.344563 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 1452
18:39:18.344571 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 1452
18:39:18.344572 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 1452
18:39:18.344573 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 96
18:39:18.344711 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 96
18:39:18.344711 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 96
18:39:18.344711 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 96
18:39:20.566833 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 128
18:39:20.566833 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 592
18:39:20.567003 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 96
18:39:20.570978 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 128
18:39:20.571309 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 96
18:39:20.572538 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 176
18:39:20.572566 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 592
18:39:20.572764 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 96
18:39:20.572764 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 96
18:39:23.540401 ARP, запрос, у кого есть 192.168.10.11 скажите 192.168.10.10, длина 28
18:39:23.540646 ARP, ответ 192.168.10.11 is-at 7a:1d:d9:fc:fa:eb, длина 28
18:39:23.608703 IP 192.168.10.10.42274 > 192.168.10.11.8472: OTV, флаги [I] (0x08), оверлей 0, экземпляр 1
IP 10.20.0.5.55222 > 10.20.4.2.3000: флаги [S], seq 3011291899, win 64860, параметры [mss 1410,sackOK,TS val 2531657982 ecr 0,nop,wscale 7], длина 0
18:39:23.609071 IP 192.168.10.11.59205 > 192.168.10.10.8472: OTV, флаги [I] (0x08), оверлей 0, экземпляр 1
IP 10.20.4.2.3000 > 10.20.0.5.55222: флаги [S.], seq 1444377380, ack 3011291900, win 64308, параметры [mss 1410,sackOK,TS val 2546470618 ecr 2531657982],nop,w0scale 7
18:39:23.609112 IP 192.168.10.10.42274 > 192.168.10.11.8472: OTV, флаги [I] (0x08), оверлей 0, экземпляр 1
IP 10.20.0.5.55222 > 10.20.4.2.3000: Флаги [.], ack 1, win 507, параметры [nop,nop,TS val 2531657983 ecr 2546470618], длина 0
18:39:23.609140 IP 192.168.10.10.42274 > 192.168.10.11.8472: OTV, флаги [I] (0x08), оверлей 0, экземпляр 1
IP 10.20.0.5.55222 > 10.20.4.2.3000: Флаги [P.], seq 1:749, ack 1, win 507, опции [nop,nop,TS val 2531657983 ecr 2546470618], длина 748
18:39:23.609370 IP 192.168.10.11.59205 > 192.168.10.10.8472: OTV, флаги [I] (0x08), оверлей 0, экземпляр 1
IP 10.20.4.2.3000 > 10.20.0.5.55222: Флаги [.], ack 749, win 501, параметры [nop,nop,TS val 2546470618 ecr 2531657983], длина 0
18:39:23.610441 IP 192.168.10.11.36593 > 192.168.10.10.8472: OTV, флаги [I] (0x08), оверлей 0, экземпляр 1
IP 10.20.4.2.33592 > 10.20.0.2.53: 53349+ А? test.example.com.default.svc.cluster.local. (60)
18:39:23.610713 IP 192.168.10.10.58646 > 192.168.10.11.8472: OTV, флаги [I] (0x08), оверлей 0, экземпляр 1
IP 10.20.0.2.53 > 10.20.4.2.33592: 53349 NXDomain*- 0/1/0 (153)
18:39:23.611018 IP 192.168.10.11.32846 > 192.168.10.10.8472: OTV, флаги [I] (0x08), оверлей 0, экземпляр 1
IP 10.20.4.2.40077 > 10.20.0.2.53: 57710+ А? test.example.com.svc.cluster.local. (52)
18:39:23.611134 IP 192.168.10.10.41066 > 192.168.10.11.8472: OTV, флаги [I] (0x08), оверлей 0, экземпляр 1
IP 10.20.0.2.53 > 10.20.4.2.40077: 57710 NXDomain*- 0/1/0 (145)
18:39:23.611427 IP 192.168.10.11.51546 > 192.168.10.10.8472: OTV, флаги [I] (0x08), оверлей 0, экземпляр 1
IP 10.20.4.2.59046 > 10.20.0.3.53: 18849+ А? test.example.com.cluster.local. (48)
18:39:23.611567 IP 192.168.10.10.39789 > 192.168.10.11.8472: OTV, флаги [I] (0x08), оверлей 0, экземпляр 1
IP 10.20.0.3.53 > 10.20.4.2.59046: 18849 NXDomain*- 0/1/0 (141)
18:39:23.611831 IP 192.168.10.11.50067 > 192.168.10.10.8472: OTV, флаги [I] (0x08), оверлей 0, экземпляр 1
IP 10.20.4.2.34442 > 10.20.0.3.53: 49768+ А? test.example.com.sol.system. (45)
18:39:25.329861 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 208
18:39:25.330138 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 96
18:39:25.613106 IP 192.168.10.10.52981 > 192.168.10.11.8472: OTV, флаги [I] (0x08), оверлей 0, экземпляр 1
IP 10.20.0.3.53 > 10.20.4.2.34442: 49768 ServFail- 0/0/0 (45)
18:39:25.613542 IP 192.168.10.11.33388 > 192.168.10.10.8472: OTV, флаги [I] (0x08), оверлей 0, экземпляр 1
IP 10.20.4.2.59146 > 10.20.0.3.53: 49768+ А? test.example.com.sol.system. (45)
18:39:27.021478 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 224
18:39:27.021876 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 96
18:39:27.614533 IP 192.168.10.10.48157 > 192.168.10.11.8472: OTV, флаги [I] (0x08), оверлей 0, экземпляр 1
IP 10.20.0.3.53 > 10.20.4.2.59146: 49768 ServFail- 0/0/0 (45)
18:39:27.614906 IP 192.168.10.11.52721 > 192.168.10.10.8472: OTV, флаги [I] (0x08), оверлей 0, экземпляр 1
IP 10.20.4.2.33596 > 10.20.0.3.53: 32196+ А? test.example.com. (34)
18:39:28.500696 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 128
18:39:28.503146 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 256
18:39:28.503158 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 1452
18:39:28.503159 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 1452
18:39:28.503161 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 1452
18:39:28.503162 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 96
18:39:28.503453 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 96
18:39:28.503453 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 96
18:39:28.503453 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 96
18:39:28.503453 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 96
18:39:28.503453 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 96
18:39:28.627012 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 128
18:39:28.627292 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 128
18:39:28.627636 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 96
18:39:29.615282 IP 192.168.10.10.52590 > 192.168.10.11.8472: OTV, флаги [I] (0x08), оверлей 0, экземпляр 1
IP 10.20.0.3.53 > 10.20.4.2.33596: 32196 ServFail- 0/0/0 (34)
18:39:29.615672 IP 192.168.10.11.37175 > 192.168.10.10.8472: OTV, флаги [I] (0x08), оверлей 0, экземпляр 1
IP 10.20.4.2.50957 > 10.20.0.3.53: 32196+ А? test.example.com. (34)
18:39:29.877400 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 192
18:39:29.877722 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 96
18:39:30.898243 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 128
18:39:30.898243 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 592
18:39:30.898330 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 96
18:39:30.902126 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 128
18:39:30.902362 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 96
18:39:30.903556 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 176
18:39:30.903696 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 592
18:39:30.904023 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 96
18:39:30.904023 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 96
18:39:31.617136 IP 192.168.10.10.38253 > 192.168.10.11.8472: OTV, флаги [I] (0x08), оверлей 0, экземпляр 1
IP 10.20.0.3.53 > 10.20.4.2.50957: 32196 ServFail- 0/0/0 (34)
18:39:31.619778 IP 192.168.10.11.59205 > 192.168.10.10.8472: OTV, флаги [I] (0x08), оверлей 0, экземпляр 1
IP 10.20.4.2.3000 > 10.20.0.5.55222: флаги [P.], seq 1:114, ack 749, win 501, опции [nop,nop,TS val 2546478629 ecr 2531657983], длина 113
18:39:31.619911 IP 192.168.10.10.42274 > 192.168.10.11.8472: OTV, флаги [I] (0x08), оверлей 0, экземпляр 1
IP 10.20.0.5.55222 > 10.20.4.2.3000: флаги [.], ack 114, win 507, параметры [nop,nop,TS val 2531665993 ecr 2546478629], длина 0
18:39:33.434382 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 128
18:39:33.434488 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 96
18:39:33.434537 IP 192.168.10.10.59120 > 192.168.10.11.59120: UDP, длина 128
18:39:33.434860 IP 192.168.10.11.59120 > 192.168.10.10.59120: UDP, длина 96
Какова возможная причина, почему ответ такой медленный в сети LAN.Это из-за неправильной маршрутизации на «общедоступные» IP-адреса вместо использования IP-адреса wireguard? Можно ли настроить Kubernetes для использования адреса wireguard для порта 8472?