CoreDNS не работает в кластере Kubernetes

Я пытаюсь настроить кластер Kubernetes, но не могу запустить CoreDNS. Я запустил следующее, чтобы запустить кластер:

sudo swapoff -a
sudo sysctl net.bridge.bridge-nf-call-iptables=1
sudo kubeadm init

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s- version=$(kubectl version | base64 | tr -d '\n')"
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

Чтобы проверить POD с kubectl get pods --all-namespaces, Я получил

NAMESPACE     NAME                                    READY   STATUS             RESTARTS   AGE
kube-system   coredns-68fb79bcf6-6s5bp                0/1     CrashLoopBackOff   6          10m
kube-system   coredns-68fb79bcf6-hckxq                0/1     CrashLoopBackOff   6          10m
kube-system   etcd-myserver                           1/1     Running            0          79m
kube-system   kube-apiserver-myserver                 1/1     Running            0          79m
kube-system   kube-controller-manager-myserver        1/1     Running            0          79m
kube-system   kube-proxy-9ls64                        1/1     Running            0          80m
kube-system   kube-scheduler-myserver                 1/1     Running            0          79m
kube-system   kubernetes-dashboard-77fd78f978-tqt8m   1/1     Running            0          80m
kube-system   weave-net-zmhwg                         2/2     Running            0          80m

Так что CoreDNS продолжает падать. Единственные сообщения об ошибках, которые я мог найти, были от/var/log/syslog:

Oct  4 18:06:44 myserver kubelet[16397]: E1004 18:06:44.961409   16397 pod_workers.go:186] Error syncing pod c456a48b-c7c3-11e8-bf23-02426706c77f ("coredns-68fb79bcf6-6s5bp_kube-system(c456a48b-c7c3-11e8-bf23-02426706c77f)"), skipping: failed to "StartContainer" for "coredns" with CrashLoopBackOff: "Back-off 5m0s restarting failed container=coredns pod=coredns-68fb79bcf6-6s5bp_kube-system(c456a48b-c7c3-11e8-bf23-02426706c77f)"

и из kubectl logs coredns-68fb79bcf6-6s5bp -n kube-system:

.:53
2018/10/04 11:04:55 [INFO] CoreDNS-1.2.2
2018/10/04 11:04:55 [INFO] linux/amd64, go1.11, eb51e8b
CoreDNS-1.2.2
linux/amd64, go1.11, eb51e8b
2018/10/04 11:04:55 [INFO] plugin/reload: Running configuration MD5 = f65c4821c8a9b7b5eb30fa4fbc167769
2018/10/04 11:04:55 [FATAL] plugin/loop: Seen "HINFO IN 3256902131464476443.1309143030470211725." more than twice, loop detected

Некоторые решения, которые я нашел, должны выпустить

kubectl -n kube-system get deployment coredns -o yaml | \
sed 's/allowPrivilegeEscalation: false/allowPrivilegeEscalation: true/g' | \
kubectl apply -f -

и изменить /etc/resolv.conf указывать на реальный DNS, а не на localhost, который я тоже пробовал.

Проблема описана в https://kubernetes.io/docs/setup/independent/troubleshooting-kubeadm/, и я пробовал много разных сетей Pod, но без помощи.

Я бегал sudo kubeadm reset && rm -rf ~/.kube/ && sudo kubeadm init несколько раз.

Я использую Ubuntu 16.04, Kubernetes 1.12 и Docker 17.03. Есть идеи?

4 ответа

У меня тоже есть такая же проблема.

Я решил эту проблему, удалив плагин "петли" в см coredns. но я не знаю, будет ли это облако причиной других проблем.

1 edit kubectl edit cm coredns -n kube-system

2 、 удалить "цикл", сохранить и выйти

3、 перезапустите стручки cornns: "kubctel удалить стручки cornns.... -n kube-system"

В некоторой степени решается с помощью этого способа:

  1. откройте и отредактируйте конфигурационную карту сердечников.

    kubectl edit cm coredns -n kube-system

  2. msgstr "замена прокси. /etc/resolv.conf на ip-адрес вашего вышестоящего DNS, например прокси. 8.8.8.8." По ссылке в выводе журнала coredns (в конце страницы)
  3. Сохранить и выйти.
  4. kubectl get pods -n kube-system -oname | grep coredns | xargs kubectl удалить -n kube-system

Причина проблемы объяснена в ссылке. Вы можете найти эту ссылку в выходных данных этого cmd

kubectl logs coredns-7d9cd4f75b-cpwxp -n kube-system

Эта ссылка находится в выходных данных CoreDNS-1.2.4.

Я обновляю CoreDNS, используя этот cmd

Развертывание исправления kubectl -n=kube-system coredns -p '{"spec": {"template": {"spec":{"Containers":[{"image":"k8s.gcr.io/coredns:1.2.4", "name":"coredns","resources":{"limit ":{"memory":"1Gi"}," questions":{"cpu":"100m","memory":"70Mi"}}}]}}}}"

Я думаю просто удали loop Функция от Kubernetes не является чистым подходом. CoreDNS Github предоставляет некоторые рекомендации по устранению неполадок в этой проблеме.

Они предлагают в своем руководстве около 3 подходов

  • Добавьте следующее в kubelet: --resolv-conf . Ваш "настоящий" resolv.conf - это тот, который содержит фактические IP-адреса ваших вышестоящих серверов, а не локальный адрес / адрес обратной связи. Этот флаг указывает kubelet передавать альтернативный resolv.conf в Pods. Для систем, использующих systemd-resolved, /run/systemd/resolve/resolv.conf обычно является местоположением "реального" resolv.conf, хотя это может отличаться в зависимости от вашего дистрибутива.
  • Отключите локальный кэш DNS на узлах узла и восстановите /etc/resolv.conf в исходное состояние.
  • Быстрое и грязное решение - отредактировать ваш Corefile, заменив прокси. /etc/resolv.conf с IP-адресом вышестоящего DNS, например прокси. 8.8.8.8. Но это только устраняет проблему для CoreDNS, kubelet продолжит пересылать недопустимый resolv.conf всем модулям dnsPolicy по умолчанию, оставляя их неспособными разрешить DNS.

Мое решение было удалить --network-plugin=cni в /var/lib/kubelet/kubeadm-flags.env

Да ты прав. Проблема была описана здесь и на GitHub. И разрешение заключается в том, чтобы обновить Docker, отключить SElinux или изменить allowPrivilegeEscalation в true, Однако сегодня я попытался воспроизвести вашу проблему и не смог этого сделать. Предоставляя вам команды и вывод, возможно, это поможет вам создать рабочую версию с самого начала.

Docker версии 17.03.2-ce, Kubernetes v1.12.0, Ubuntu 16.04, CoreDNS-1.2.2, экземпляр, созданный в GCP.

#apt-get update && apt-get install -y mc ebtables ethtool docker.io apt-transport-https curl
#curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

#cat <<EOF >/etc/apt/sources.list.d/kubernetes.list \
deb http://apt.kubernetes.io/ kubernetes-xenial main \
EOF

#apt-get update && apt-get install -y kubelet kubeadm kubectl

#kubeadm init
$mkdir -p $HOME/.kube
$sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$sudo chown $(id -u):$(id -g) $HOME/.kube/config
$kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

serviceaccount / weave-net создан

clusterrole.rbac.authorization.k8s.io/weave-net создан

clusterrolebinding.rbac.authorization.k8s.io/weave-net создан

role.rbac.authorization.k8s.io/weave-net создан

rolebinding.rbac.authorization.k8s.io/weave-net создан

daemonset.extensions/weave-net создан

$kubectl get pods --all-namespaces
NAMESPACE     NAME                                              READY   STATUS              RESTARTS   AGE
kube-system   pod/coredns-576cbf47c7-6qbtq                      0/1     Pending             0          79s
kube-system   pod/coredns-576cbf47c7-jr6hb                      0/1     Pending             0          79s
kube-system   pod/etcd-kube-weave-master-1                      1/1     Running             0          38s
kube-system   pod/kube-apiserver-kube-weave-master-1            1/1     Running             0          28s
kube-system   pod/kube-controller-manager-kube-weave-master-1   1/1     Running             0          30s
kube-system   pod/kube-proxy-4p9l5                              1/1     Running             0          79s
kube-system   pod/kube-scheduler-kube-weave-master-1            1/1     Running             0          34s
kube-system   pod/weave-net-z6mhw                               0/2     ContainerCreating   0          8s

И снова через минуту:

$kubectl get pods --all-namespaces
NAMESPACE     NAME                                              READY   STATUS    RESTARTS   AGE
kube-system   pod/coredns-576cbf47c7-6qbtq                      1/1     Running   0          98s
kube-system   pod/coredns-576cbf47c7-jr6hb                      1/1     Running   0          98s
kube-system   pod/etcd-kube-weave-master-1                      1/1     Running   0          57s
kube-system   pod/kube-apiserver-kube-weave-master-1            1/1     Running   0          47s
kube-system   pod/kube-controller-manager-kube-weave-master-1   1/1     Running   0          49s
kube-system   pod/kube-proxy-4p9l5                              1/1     Running   0          98s
kube-system   pod/kube-scheduler-kube-weave-master-1            1/1     Running   0          53s
kube-system   pod/weave-net-z6mhw                               2/2     Running   0          27s

Описание стручка Coredns:

kubectl describe pod/coredns-576cbf47c7-6qbtq -n kube-system
Name:               coredns-576cbf47c7-6qbtq
Namespace:          kube-system
Priority:           0
PriorityClassName:  <none>
Node:               kube-weave-master-1/10.154.0.8
Start Time:         Fri, 05 Oct 2018 11:06:54 +0000
Labels:             k8s-app=kube-dns
                    pod-template-hash=576cbf47c7
Annotations:        <none>
Status:             Running
IP:                 10.32.0.3
Controlled By:      ReplicaSet/coredns-576cbf47c7
Containers:
  coredns:
    Container ID:  docker://db1712600b4c927b99063fa41bc36c3346c55572bd63730fc993f03379fa457b
    Image:         k8s.gcr.io/coredns:1.2.2
    Image ID:      docker-pullable://k8s.gcr.io/coredns@sha256:3e2be1cec87aca0b74b7668bbe8c02964a95a402e45ceb51b2252629d608d03a
    Ports:         53/UDP, 53/TCP, 9153/TCP
    Host Ports:    0/UDP, 0/TCP, 0/TCP
    Args:
      -conf
      /etc/coredns/Corefile
    State:          Running
      Started:      Fri, 05 Oct 2018 11:06:57 +0000
    Ready:          True
    Restart Count:  0
    Limits:
      memory:  170Mi
    Requests:
      cpu:        100m
      memory:     70Mi
    Liveness:     http-get http://:8080/health delay=60s timeout=5s period=10s #success=1 #failure=5
    Environment:  <none>
    Mounts:
      /etc/coredns from config-volume (ro)
      /var/run/secrets/kubernetes.io/serviceaccount from coredns-token-wp7tm (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  config-volume:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      coredns
    Optional:  false
  coredns-token-wp7tm:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  coredns-token-wp7tm
    Optional:    false
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     CriticalAddonsOnly
                 node-role.kubernetes.io/master:NoSchedule
                 node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason            Age                 From                          Message
  ----     ------            ----                ----                          -------
  Warning  FailedScheduling  23m (x12 over 24m)  default-scheduler             0/1 nodes are available: 1 node(s) had taints that the pod didn't tolerate.
  Normal   Scheduled         23m                 default-scheduler             Successfully assigned kube-system/coredns-576cbf47c7-6qbtq to kube-weave-master-1
  Normal   Pulled            23m                 kubelet, kube-weave-master-1  Container image "k8s.gcr.io/coredns:1.2.2" already present on machine
  Normal   Created           23m                 kubelet, kube-weave-master-1  Created container
  Normal   Started           23m                 kubelet, kube-weave-master-1  Started container

Также предоставьте config.yaml что используется kubeadm init --config config.yaml чтобы лучше понять вашу проблему с указанием расположения файла конфигурации.

Мое решение заключалось в том, чтобы удалить --network-plugin=cni в /var/lib/kubelet/kubeadmflags.env, а затем перезапустить компьютер, COredns будет запущен. Удачи

У меня тоже есть такая же проблема.

**Running**:
1 master + 2 nodes (all on Red Hat Enterprise Linux Server release 7.5 (Maipo))
**Docker**: 18.06.1-ce
**Kubernete**s-
 Client Version: v1.12.0
 Server Version: v1.12.0
**Core DNS**: CoreDNS-1.2.2
**Errors**:
[root@kubemast ~]# kubectl logs coredns-68fb79bcf6-2lk8k -n=kube-system
.:53
2018/10/05 15:14:30 [INFO] CoreDNS-1.2.2
2018/10/05 15:14:30 [INFO] linux/amd64, go1.11, eb51e8b
CoreDNS-1.2.2
linux/amd64, go1.11, eb51e8b
2018/10/05 15:14:30 [INFO] plugin/reload: Running configuration MD5 = f65c4821c8a9b7b5eb30fa4fbc167769
2018/10/05 15:14:36 [FATAL] plugin/loop: Seen "HINFO IN 5745769668098465527.4020143478923175228." more than twice, loop detected
[root@kubemast ~]#
Другие вопросы по тегам