Отладка разрешений DNS в кубернетах - PullRequest
0 голосов
/ 08 февраля 2019

Я инициализировал кластер kubernetes v1.13.1 на Ubuntu 16.04, используя следующую команду:

sudo kubeadm init --token-ttl=0 --apiserver-advertise-address=192.168.88.142

и установил weave, используя:

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

У меня 10 raspberry piвыступая в качестве рабочих узлов и подключенных к кластеру.Все они отлично работают.Там есть узлы с запущенными модулями, которые пытаются подключиться к iot hub visdwk-azure-devices.net и опубликовать некоторые данные.Из 10 узлов только несколько узлов могут подключиться, и другие ошибки выдают unable to connect to iot hub.Я провел тест ping и обнаружил, что они не могут пинговать Google, пока они пингуют общедоступный IP-адрес Google.

Это заставило меня подумать, что с модулем coredns что-то не так.Я следовал этой документации и сделал тест ниже.

Pod содержит нижнее содержимое в /etc/resolv.conf

nameserver 10.96.0.10
search visdwk.svc.cluster.local svc.cluster.local cluster.local
options ndots:5

, что выглядит нормально для меня.Все модули Corens работают нормально.

coredns-86c58d9df4-42xqc               1/1     Running   8         1d11h
coredns-86c58d9df4-p6d98               1/1     Running   7         1d6h

Я также сделал nslookup kubernetes.default из контейнера busybox и получил правильный ответ.Ниже приведены журналы coredns-86c58d9df4-42xqc

.:53
2019-02-08T08:40:10.038Z [INFO] CoreDNS-1.2.6
2019-02-08T08:40:10.039Z [INFO] linux/amd64, go1.11.2, 756749c
CoreDNS-1.2.6
linux/amd64, go1.11.2, 756749c
 [INFO] plugin/reload: Running configuration MD5 = 
f65c4821c8a9b7b5eb30fa4fbc167769
t

Выше журналы также выглядят нормально.

Я также не могу сказать, что модуль не может разрешить концентратор iot из-за какой-либо ошибки изткать, потому что, если ткать вызывает ошибку, то я считаю, что модуль никогда не запустится и всегда будет в неисправном состоянии, но в действительности модуль остается в рабочем состоянии.Пожалуйста, исправьте меня здесь, если я ошибаюсь.

Служба DNS также, кажется, находится в рабочем состоянии:

NAME                   TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)         AGE
kube-dns               ClusterIP   10.96.0.10     <none>        53/UDP,53/TCP   1d6h

Но все же я не могу понять, почему мало узлов вкластер не может разрешить Iot Hub.Может кто-нибудь, пожалуйста, дайте мне несколько предложений здесь.Пожалуйста помоги.Спасибо.

Журналы из вышедшего из строя модуля:

 1550138544: New connection from 127.0.0.1 on port 1883.
1550138544: New client connected from 127.0.0.1 as 6f1e2c4f-c44d-4c27-b9a9-0fb91f816504 (c1, k60).
1550138544: Sending CONNACK to 6f1e2c4f-c44d-4c27-b9a9-0fb91f816504 (0, 0)
1550138544: Received PUBLISH from 6f1e2c4f-c44d-4c27-b9a9-0fb91f816504 (d0, q0, r0, m0, 'devices/machine6/messages/events/', ... (1211 bytes))
1550138544: Received DISCONNECT from 6f1e2c4f-c44d-4c27-b9a9-0fb91f816504
1550138544: Client 6f1e2c4f-c44d-4c27-b9a9-0fb91f816504 disconnected.
1550138547: Saving in-memory database to /mqtt/data/mosquitto.db.
1550138547: Bridge local.machine6 doing local SUBSCRIBE on topic devices/machine6/messages/events/#
1550138547: Connecting bridge iothub-bridge (visdwk.azure-devices.net:8883)
1550138552: Error creating bridge: Try again.
1550138566: New connection from 127.0.0.1 on port 1883.
1550138566: New client connected from 127.0.0.1 as afb6cc2a-ee78-482e-aff0-fc595e06f86a (c1, k60).
1550138566: Sending CONNACK to afb6cc2a-ee78-482e-aff0-fc595e06f86a (0, 0)
1550138566: Received PUBLISH from afb6cc2a-ee78-482e-aff0-fc595e06f86a (d0, q0, r0, m0, 'devices/machine6/messages/events/', ... (1211 bytes))
1550138566: Received DISCONNECT from afb6cc2a-ee78-482e-aff0-fc595e06f86a
1550138566: Client afb6cc2a-ee78-482e-aff0-fc595e06f86a disconnected.
1550138567: New connection from 127.0.0.1 on port 1883.
1550138567: New client connected from 127.0.0.1 as 01b9e135-fbc8-4d67-9962-356e8cf9f080 (c1, k60).
1550138567: Sending CONNACK to 01b9e135-fbc8-4d67-9962-356e8cf9f080 (0, 0)
1550138567: Received PUBLISH from 01b9e135-fbc8-4d67-9962-356e8cf9f080 (d0, q0, r0, m0, 'devices/machine6/messages/events/', ... (755 bytes))
1550138567: Received DISCONNECT from 01b9e135-fbc8-4d67-9962-356e8cf9f080
1550138567: Client 01b9e135-fbc8-4d67-9962-356e8cf9f080 disconnected.
1550138578: Saving in-memory database to /mqtt/data/mosquitto.db.
1550138583: Bridge local.machine6 doing local SUBSCRIBE on topic devices/machine6/messages/events/#
1550138583: Connecting bridge iothub-bridge (visdwk.azure-devices.net:8883)
1550138588: Error creating bridge: Try again.

Модуль запускает контейнер от комаров, который пытается подключиться к visdwk.azure-devices.net и выдает ошибку.

Connecting bridge iothub-bridge (visdwk.azure-devices.net:8883)
Error creating bridge: Try again.

1 Ответ

0 голосов
/ 18 февраля 2019

Может показаться, что один из ваших модулей DNS не предоставляет службы DNS.

Доказательством является утверждение, что «только несколько узлов могут подключиться, а другие ошибки выброса не могут подключиться к iot-хабу»

Это классический признак балансировки нагрузки сотказавший узел в цикле.

Попробуйте:

  1. Удалите модуль DNS-сервера, который выдал сообщение: visdwk.azure-devices.net.visdwknamespace.svc.cluster.local. udp 82 false 512" NXDOMAIN qr,aa,rd,ra 175 0.000651078s where visdwk.azure-devices.net
  2. Подождите, пока изменения не распространятся черезкластер.
  3. Проверьте соединения.

Если это правильно, все они должны подключиться.

Для подтверждения добавьте модуль обратно и удалите другой.Повторите попытку, все они не смогут подключиться.

...