kube-dns получает неверный адрес конечной точки с фланелевыми причинами. Сбой службы POD DNS - PullRequest
0 голосов
/ 03 июня 2018

Я установил кластер 3 узлов kubernetes (v1.9.3) в Ubuntu 16.04.

Перед установкой Я очистил правила iptables и следую документам k8s для фланели с помощью следующей команды для инициализации кластера:

# kubeadm init --apiserver-advertise-address 192.168.56.20 --pod-network-cidr=10.244.0.0/16 --kubernetes-version 1.9.3
# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml

Предыдущая команда выглядела успешной:

# kubectl -n kube-system -n kube-system get pods
NAME                             READY     STATUS    RESTARTS   AGE
etcd-master                      1/1       Running   0          3m
kube-apiserver-master            1/1       Running   0          2m
kube-controller-manager-master   1/1       Running   0          2m
kube-dns-6f4fd4bdf-4c76v         3/3       Running   0          3m
kube-flannel-ds-wbx97            1/1       Running   0          1m
kube-proxy-x65lv                 1/1       Running   0          3m
kube-scheduler-master            1/1       Running   0          2m 

Но проблема в том, что kube-dns кажется, что получен неправильный адрес конечной точки службы, это можно увидеть с помощью следующих команд:

# kubectl get ep kube-dns --namespace=kube-system            
NAME       ENDPOINTS                     AGE
kube-dns   172.17.0.2:53,172.17.0.2:53   3m
root@master:~# kubectl describe service kube-dns -n kube-system           
Name:              kube-dns
Namespace:         kube-system
Labels:            k8s-app=kube-dns
                   kubernetes.io/cluster-service=true
                   kubernetes.io/name=KubeDNS
Annotations:       <none>
Selector:          k8s-app=kube-dns
Type:              ClusterIP
IP:                10.96.0.10
Port:              dns  53/UDP
TargetPort:        53/UDP
Endpoints:         172.17.0.2:53
Port:              dns-tcp  53/TCP
TargetPort:        53/TCP
Endpoints:         172.17.0.2:53
Session Affinity:  None
Events:            <none>

172.17.0.2 - это IP-адрес, назначенный док-мостом (docker0)для kube-dns контейнера.При работающей настройке сети k8s kube-dns должен иметь конечные точки с адресом от podSubnet (10.244.0.0/16).

Эффект текущей настройки заключается в том, что все модули не будут работать с DNS, пока IP-связь нормальная.

Я попытался удалить модуль kube-dns, чтобы увидеть, что новые контейнеры kube-dns могут получить конечные точки из podSubnet, но это не так.

Из журналов запуска контейнеров 3 kube-dns ЛЮБЫХ сообщений об ошибках нет.

1 Ответ

0 голосов
/ 12 июня 2018

Я думаю, что выяснил причину этого.Это предыдущий kubeadm reset не удалял оба интерфейса cni и flannel.1.Таким образом, следующий kubeadm init заставит kube-dns полагать, что сетевой плагин Kubernetes уже существует до того, как я применю фланелевый yaml.

После того, как я проверю и удалю любые виртуальные сетевые карты, созданные фланелевым плагином при разрушении кластера kubernetes,следующий kubeadm init может преуспеть без этой проблемы больше.

То же самое относится к Weave Net , который требует запуска weave reset для удаления оставшихся виртуальных сетевых карт.

...