Кластер Kubernetes через kubeadm — размер буфера CoreDNS слишком мал / проблемы с сетью Pods
Я новичок в развертывании локальных кластеров Kubernetes. Мне удалось развернуть один, используя CNI.
Интернет-соединение внутри Pods несколько медленное/не работает. Я пытаюсь развернуть самостоятельный модуль действий GitHub, который обращается к API GitHub. Например, доступ*.github.com
Полное доменное имя из подов приведет к этой ошибке (журналы подов coredns):[ERROR] plugin/errors: 2 api.github.com. A: dns: buffer size too small
Я также заметил, что модули Pod не подключаются к серверам Ubuntu или Debian, но внутри модуля работает (с использованием модуля из K8s).
Хост-компьютер может получить доступ к каждому сайту, поэтому я предполагаю, что с брандмауэром проблем нет.
ufw
иiptables
отключены.
я приступил к512
,1024
и4096
но все равно та же ошибка. По умолчаниюbufsize
в ConfigMap не определен, но выдал ту же ошибку.
Карта конфигурации CoreDNS ($ kubectl describe configmap coredns -n kube-system
):
Name: coredns
Namespace: kube-system
Labels: <none>
Annotations: <none>
Data
====
Corefile:
----
.:53 {
bufsize 4096
errors
health {
lameduck 5s
}
ready
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
fallthrough in-addr.arpa ip6.arpa
ttl 30
}
prometheus :9153
forward . /etc/resolv.conf {
max_concurrent 1000
}
cache 30
loop
reload
loadbalance
}
BinaryData
====
Events: <none>
Как я развернул кластер:
kubeadm init --pod-network-cidr=172.30.0.0/16 --service-cidr=172.16.0.0/16 --cri-socket=unix:/run/cri-dockerd.sock
kubectl taint nodes --all node-role.kubernetes.io/control-plane-
# Install weave
sudo curl -L git.io/weave -o /usr/local/bin/weave
sudo chmod a+x /usr/local/bin/weave
# Download weave DaemonSet from Github
wget https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml
Изменить:
...
containers:
- name: weave
env:
- name: IPALLOC_RANGE
value: 172.30.0.0/16
...
Окончательно:kubectl apply -f ./weave-daemonset-k8s.yaml
Версии:
$ kubectl version
Client Version: v1.28.2
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.28.2
$ kubectl describe configmap coredns -n kube-system
image: registry.k8s.io/coredns/coredns:v1.10.1
В чем может быть причина?
Пытался:
-
kubeadm
перезагрузить - Разный CIDR для узла и сервиса
- Конфигурация по умолчанию
- Редактировать
weave
конфигурация -IPALLOC_RANGE
для соответствия Node CIDR -
dnsutils
Стручки-
github.com
- & - Успех
-
ping
- Сбой – неизвестный хост – буфер слишком мал. Ошибка.
-
api.github.com
- - буфер слишком мал Ошибка
- - Успех
-
kubernetes.io
-
nslookup
&dig
- Успех
-
-
Ожидания:
- Рабочее сетевое соединение в Pods
- Успешное разрешение DNS
РЕДАКТИРОВАТЬ
Я обновил CoreDNS до версии 1.11.0 , и теперь ошибка «слишком маленький буфер» отсутствует , а вместо этого отображается сообщение « Время ожидания истекло». По крайней мере, я вижу, что он правильно пытается запросить мой основной DNS, который я тестировал несколько раз, и работает как положено.