Проблемы со случайным DNS в Kubernetes
Недавно я задал аналогичный вопрос, но понял, что сформулировал его неправильно, поэтому я просто хочу задать здесь более четкий вопрос.
Недавно я установил кластер Kubernetes на небольшой виртуальной машине Azure Linux (одноузловой кластер). Большую часть дня все работает хорошо. Однако в случайный момент все запросы DNS начинают давать сбой и время ожидания истекает. Поды не могут разрешать IP-адреса служб. После этих запусков кластер не восстанавливается. Все запросы DNS продолжают терпеть неудачу, пока я не перезапущу Calico. Перезапуск модуля ситцевого узла надежно решает эту проблему в течение определенного периода времени.
Я пробовал пройти отладку DNS на сайте Kubernetes, но безуспешно.
nslookup kubernetes.default
;; connection timed out; no servers could be reached
cat /etc/resolv.conf
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
Раньше я видел следующие ошибки:[ERROR] plugin/errors: 2 1699910358767628111.9001703618875455268. HINFO: read udp 10.244.0.69:35222->10.234.44.20:53: i/o timeout
Но они не появляются с тех пор, как я начал использовать Node Local DNS.
В логах кубелет я вижу следующее:
Nov 29 17:52:18 kubelet[4026]: "name": "k8s-pod-network",
Nov 29 17:52:18 kubelet[4026]: "cniVersion": "0.3.1",
Nov 29 17:52:18 kubelet[4026]: "plugins": [
Nov 29 17:52:18 kubelet[4026]: {
Nov 29 17:52:18 kubelet[4026]: "type": "calico",
Nov 29 17:52:18 kubelet[4026]: "log_level": "info",
Nov 29 17:52:18 kubelet[4026]: "log_file_path": "/var/log/calico/cni/cni.log",
Nov 29 17:52:18 kubelet[4026]: "datastore_type": "kubernetes",
Nov 29 17:52:18 kubelet[4026]: "nodename": "",
Nov 29 17:52:18 kubelet[4026]: "mtu": 0,
Nov 29 17:52:18 kubelet[4026]: "ipam": {
Nov 29 17:52:18 kubelet[4026]: "type": "calico-ipam"
Nov 29 17:52:18 kubelet[4026]: },
Nov 29 17:52:18 kubelet[4026]: "policy": {
Nov 29 17:52:18 kubelet[4026]: "type": "k8s"
Nov 29 17:52:18 kubelet[4026]: },
Nov 29 17:52:18 kubelet[4026]: "kubernetes": {
Nov 29 17:52:18 kubelet[4026]: "kubeconfig": "/etc/cni/net.d/calico-kubeconfig"
Nov 29 17:52:18 kubelet[4026]: }
Nov 29 17:52:18 kubelet[4026]: },
Nov 29 17:52:18 kubelet[4026]: {
Nov 29 17:52:18 kubelet[4026]: "type": "portmap",
Nov 29 17:52:18 kubelet[4026]: "snat": true,
Nov 29 17:52:18 kubelet[4026]: "capabilities": {"portMappings": true}
Nov 29 17:52:18 kubelet[4026]: },
Nov 29 17:52:18 kubelet[4026]: {
Nov 29 17:52:18 kubelet[4026]: "type": "bandwidth",
Nov 29 17:52:18 kubelet[4026]: "capabilities": {"bandwidth": true}
Nov 29 17:52:18 kubelet[4026]: }
Nov 29 17:52:18 kubelet[4026]: ]
Nov 29 17:52:18 kubelet[4026]: }: [failed to find plugin "calico" in path [/opt/cni/bin]]
Сначала я начал видеть это с Flannel, поэтому я попытался переключиться на Calico, но безуспешно. Я попытался добавить Node Local DNS и настроить
--resolv-conf=/run/systemd/resolve/resolv.conf
для моего кублета, поскольку я работаю на Ubuntu 18.04. Однако это тоже не помогло.
Я работаю над средой с ограниченным ЦП, поэтому мне интересно, может ли это быть причиной этого.
Вот моя среда: ОС: Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-1031-azure x86_64)
ВМ: 2 ядра, 16 ГБ Kubernetes: 1.19.3
- Брандмауэр не включен
kubectl nodes describe
Resource Requests Limits
-------- -------- ------
cpu 1625m (81%) 1400m (70%)
memory 7553Mi (47%) 8020Mi (50%)
ephemeral-storage 0 (0%) 0 (0%)
hugepages-1Gi 0 (0%) 0 (0%)
hugepages-2Mi 0 (0%) 0 (0%)
Дайте мне знать, какую еще информацию было бы полезно предоставить.