Coredns не может связаться с Host Nameserver - PullRequest
0 голосов
/ 16 октября 2018

Я создал кластер kubernetes с нуля как указания Келси Хайтауэр.Когда я проверил, все работает без ошибок, но после того, как я развернул свое первое приложение, я обнаружил, что мое приложение не может разрешать DNS.

Я проверил свои журналы coredns и увидел записи ниже:

.:53
2018/10/16 12:31:45 [INFO] CoreDNS-1.2.2
2018/10/16 12:31:45 [INFO] linux/amd64, go1.11, eb51e8b
CoreDNS-1.2.2
linux/amd64, go1.11, eb51e8b
2018/10/16 12:31:45 [INFO] plugin/reload: Running configuration MD5 = 06122de1a2d6c43092ab48d05478dc82
2018/10/16 12:44:27 [ERROR] 2 google.com. A: unreachable backend: read udp 192.168.65.142:51219->172.10.0.2:53: i/o timeout
2018/10/16 12:44:29 [ERROR] 2 google.com. A: unreachable backend: read udp 192.168.65.142:39967->172.10.0.2:53: i/o timeout
2018/10/16 12:44:31 [ERROR] 2 google.com. A: unreachable backend: read udp 192.168.65.142:40187->172.10.0.2:53: i/o timeout

Плюс к документации Келси, я установил ситцевую крышку поверх Docker.

Мой подозреваемый:

Я установил ситцевую крышку поверх Docker, но мойСреда выполнения kubelet была настроена для работы с Containerd.Я захожу в ситцевую стручку и, кажется, у нее есть сеть.Но ни один из контейнерных контейнеров.Но я не смог найти способ запуска ситца через Containerd.

Моя конфигурация службы Kubelet:

[Unit]
Description=Kubernetes Kubelet
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=containerd.service
Requires=containerd.service

[Service]
ExecStart=/usr/bin/kubelet \
  --container-runtime=remote \
  --container-runtime-endpoint=unix:///var/run/containerd/containerd.sock \
  --image-pull-progress-deadline=2m \
  --config=/var/lib/kubelet/kubelet-config.yaml \
  --kubeconfig=/var/lib/kubelet/kubeconfig-kubelet \
  --network-plugin=cni \
  --cni-conf-dir=/etc/cni/net.d \
  --cni-bin-dir=/opt/cni/bin \
  --register-node=true \
  --cloud-provider=aws \
  --v=2

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

И мой файл конфигурации kubelet yaml:

kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
authentication:
  anonymous:
    enabled: false
  webhook:
    enabled: true
  x509:
    clientCAFile: "/etc/kubernetes/pki/ca.pem"
authorization:
  mode: Webhook
clusterDomain: "${cluster_domain}"
clusterDNS:
  - "172.10.0.10"
podCIDR: "172.10.0.0/16"
resolvConf: "/run/systemd/resolve/resolv.conf"
runtimeRequestTimeout: "15m"
tlsCertFile: "/etc/kubernetes/pki/worker.pem"
tlsPrivateKeyFile: "/etc/kubernetes/pki/worker-key.pem"

Мой файл resolv.conf на компьютере узла:

nameserver 172.10.0.2

Я вижу, что модули могут подключаться к модулю Coredns, но Cornns не может подключиться к 172.10.0.2 через порт 53. На компьютере хоста я могтелнет к этому порту и получение ответа.

лучше всего,

1 Ответ

0 голосов
/ 18 октября 2018

Это сложный вопрос.Я испытал ту же проблему и решил следующим образом: она должна работать и для вас.Чтобы установить Calico на ваш кластер, вам необходимо установить патч Calico YAML.Полагайтесь на документацию, как установить Calico:

Для достижения вашей цели вам необходимо: Создать RBAC для Calico:

kubectl apply -f \
https://docs.projectcalico.org/v3.2/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml

Скачать YAML с конфигурациейБязь:

curl \
https://docs.projectcalico.org/v3.2/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml -o

Редактировать файл calico.yaml:

- name: CALICO_IPV4POOL_CIDR
   value: "10.200.0.0/16"

Вставить в раздел value 10.200.0.0/16, затем сохранить.и примените его:

kubectl apply -f calico.yaml
...