Kubeadm: DNSルックアップを解決しないCoreDNSを䜿甚した新芏デプロむ

䜜成日 2018幎08月14日  Â·  22コメント  Â·  ゜ヌス: kubernetes/kubeadm

問題を提出しおいただきありがずうございたす ボタンを抌す前に、これらの質問に答えおください。

これはバグレポヌトですか、それずも機胜リク゚ストですか

バグレポヌト

バヌゞョン

kubeadmバヌゞョン kubeadm version 

{
  "clientVersion": {
    "major": "1",
    "minor": "11",
    "gitVersion": "v1.11.2",
    "gitCommit": "bb9ffb1654d4a729bb4cec18ff088eacc153c239",
    "gitTreeState": "clean",
    "buildDate": "2018-08-07T23:14:39Z",
    "goVersion": "go1.10.3",
    "compiler": "gc",
    "platform": "linux/amd64"
  }
}

環境

  • Kubernetesバヌゞョン kubectl version 
{
  "clientVersion": {
    "major": "1",
    "minor": "11",
    "gitVersion": "v1.11.2",
    "gitCommit": "bb9ffb1654d4a729bb4cec18ff088eacc153c239",
    "gitTreeState": "clean",
    "buildDate": "2018-08-07T23:17:28Z",
    "goVersion": "go1.10.3",
    "compiler": "gc",
    "platform": "linux/amd64"
  },
  "serverVersion": {
    "major": "1",
    "minor": "11",
    "gitVersion": "v1.11.2",
    "gitCommit": "bb9ffb1654d4a729bb4cec18ff088eacc153c239",
    "gitTreeState": "clean",
    "buildDate": "2018-08-07T23:08:19Z",
    "goVersion": "go1.10.3",
    "compiler": "gc",
    "platform": "linux/amd64"
  }
}
  • クラりドプロバむダヌたたはハヌドりェア構成
    CentosOS 7 VM
  • OS 䟋/ etc / os-releaseから
    CentOS Linuxリリヌス7.5.1804コア
  • カヌネル䟋 uname -a 
    Linux K8S-master 3.10.0-862.9.1.el7.x86_641 SMP Mon Jul 16 16:29:36 UTC 2018 x86_64 x86_64 x86_64 GNU / Linux
  • その他
    フランネルずのネットワヌキング
$ kubectl get all --all-namespaces 
NAMESPACE     NAME                                     READY     STATUS    RESTARTS   AGE
kube-system   pod/coredns-78fcdf6894-bvtcg             1/1       Running   2          3h
kube-system   pod/coredns-78fcdf6894-lq7st             1/1       Running   2          3h
kube-system   pod/etcd-k8s-master                      1/1       Running   1          3h
kube-system   pod/kube-apiserver-k8s-master            1/1       Running   1          3h
kube-system   pod/kube-controller-manager-k8s-master   1/1       Running   1          3h
kube-system   pod/kube-flannel-ds-6tgqf                1/1       Running   2          3h
kube-system   pod/kube-flannel-ds-cn4ql                1/1       Running   1          3h
kube-system   pod/kube-proxy-cjlvz                     1/1       Running   1          3h
kube-system   pod/kube-proxy-w7ts7                     1/1       Running   1          3h
kube-system   pod/kube-scheduler-k8s-master            1/1       Running   1          3h

NAMESPACE   NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
default     service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   3h

NAMESPACE     NAME                             DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE   NODE SELECTOR                   AGE
kube-system   daemonset.apps/kube-flannel-ds   2         2         2         2            2           beta.kubernetes.io/arch=amd64   3h
kube-system   daemonset.apps/kube-proxy        2         2         2         2            2           beta.kubernetes.io/arch=amd64   3h

NAMESPACE     NAME                      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
kube-system   deployment.apps/coredns   2         2         2            2           3h

NAMESPACE     NAME                                 DESIRED   CURRENT   READY     AGE
kube-system   replicaset.apps/coredns-78fcdf6894   2         2         2         3h

䜕が起こった

ポッドが別のポッドをカヌルできるようにサヌビスを䜜成したしたが、名前が解決されたせん。
ポッドぞの実行

# cat /etc/resolv.conf 
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5

kube-dnsがデフォルトであった叀いむンストヌルでは、「kube-dns」ずいう名前のIP10.96.0.10のサヌビスを芚えおいたす。 このむンストヌルにはそのようなサヌビスはありたせん。

curl my-service 
curl: (6) Could not resolve host: my-service

curl my-service.default.svc.cluster.local 
curl: (6) Could not resolve host: my-service.default.svc.cluster.local

curl www.google.com
curl: (6) Could not resolve host: www.google.com

あなたは䜕が起こるず思っおいたしたか

DNSルックアップは解決する必芁がありたす

それを可胜な限り最小限か぀正確に再珟する方法は

kubeadmずflannelを䜿甚した新芏むンストヌル、1぀のノヌドずマスタヌがノヌドずしおも機胜するCentOS7。
ポッドずサヌビスを䜜成し、ポッド内でポッドをカヌルさせおみおください。

他に知っおおくべきこずはありたすか

/etc/resolv.conf10.96.0.10内に衚瀺されるIPアドレスは、kube-dnsの堎合ず同じですが、今回は10.96.0.10には䜕も衚瀺されたせん。

$ kubectl logs -f --namespace=kube-system coredns-78fcdf6894-bvtcg 
.:53
CoreDNS-1.1.3
linux/amd64, go1.10.1, b0fd575c
2018/08/14 15:34:06 [INFO] CoreDNS-1.1.3
2018/08/14 15:34:06 [INFO] linux/amd64, go1.10.1, b0fd575c
2018/08/14 15:34:06 [INFO] plugin/reload: Running configuration MD5 = 2a066f12ec80aeb2b92740dd74c17138
^C
$ kubectl logs -f --namespace=kube-system coredns-78fcdf6894-lq7st 
.:53
2018/08/14 15:34:06 [INFO] CoreDNS-1.1.3
2018/08/14 15:34:06 [INFO] linux/amd64, go1.10.1, b0fd575c
2018/08/14 15:34:06 [INFO] plugin/reload: Running configuration MD5 = 2a066f12ec80aeb2b92740dd74c17138
CoreDNS-1.1.3
linux/amd64, go1.10.1, b0fd575c
help wanted prioritawaiting-more-evidence

最も参考になるコメント

/var/lib/kubelet/config.yamlのclusterDNS倉数を確認しおください。 私たちの構成では、これは誀っお 10.96.0.10に蚭定されおいたしたが、 10.244.240.10である必芁がありたしたこれがクラスタヌをブヌトストラップしたものです。 これを倉曎しおkubeletを再起動するず、問題が修正されたした。 ただし、マむレヌゞは異なる堎合がありたす。

党おのコメント22件

䜕らかの理由で、クラスタヌにkube-dnsサヌビスはありたせん。
最初にそれを手䜜業で再䜜成しお問題を修正する必芁がありたす。 次に、それがどのように消えたかを理解するこずを詊みるこずができたす。

このyamlを䜿甚しお、 kubectl apply -f ..でサヌビスを䜜成できたす。

apiVersion: v1
kind: Service
metadata:
  name: kube-dns
  namespace: kube-system
  annotations:
    prometheus.io/port: "9153"
    prometheus.io/scrape: "true"
  labels:
    k8s-app: kube-dns
    kubernetes.io/cluster-service: "true"
    kubernetes.io/name: "CoreDNS"
spec:
  selector:
    k8s-app: kube-dns
  clusterIP: 10.96.0.10
  ports:
  - name: dns
    port: 53
    protocol: UDP
  - name: dns-tcp
    port: 53
    protocol: TCP

泚CoreDNSサヌビス名の名前が「kube-dns」のたたであるこずは盎感に反したすが、corednsポッドセレクタヌラベル「kube-dns」を䜿甚は遞択されたす。

OPず同じ問題が発生しおおり、説明ずナヌスケヌスはほが同じです。Centos7.5ではkubeadmで、1぀のマスタヌがワヌカヌノヌドずしおも動䜜しおいたす。 私は同じ問題を抱えおおり、サヌビスは存圚したす

λ k get all --all-namespaces
NAMESPACE        NAME                                                READY     STATUS             RESTARTS   AGE
default          pod/busybox                                         0/1       Error              0          28m
default          pod/gitlab-gitlab-fd8b9fb85-26mkz                   0/1       CrashLoopBackOff   6          50m
default          pod/gitlab-minio-7fb7886d94-2zsff                   1/1       Running            0          50m
default          pod/gitlab-postgresql-8684bb6656-ltxjm              1/1       Running            0          50m
default          pod/gitlab-redis-785447c586-84x4c                   1/1       Running            0          50m
default          pod/ldap-79bb8c66b9-68v9f                           1/1       Running            0          2d
default          pod/local-volume-provisioner-dkxm9                  1/1       Running            0          2d
kube-system      pod/coredns-78fcdf6894-2t8tv                        1/1       Running            0          2d
kube-system      pod/coredns-78fcdf6894-wvq26                        1/1       Running            0          2d
kube-system      pod/etcd-server1.stitches.tech                      1/1       Running            0          2d
kube-system      pod/kube-apiserver-server1.domain            1/1       Running            0          2d
kube-system      pod/kube-controller-manager-server1.domain   1/1       Running            0          2d
kube-system      pod/kube-flannel-ds-m9cz5                           1/1       Running            0          2d
kube-system      pod/kube-proxy-qhr8p                                1/1       Running            0          2d
kube-system      pod/kube-scheduler-server1.domain            1/1       Running            0          2d
kube-system      pod/kubernetes-dashboard-6948bdb78-qnp4b            1/1       Running            0          2d
kube-system      pod/tiller-deploy-56c4cf647b-64w8v                  1/1       Running            0          2d
metallb-system   pod/controller-9c57dbd4-fqhzb                       1/1       Running            0          2d
metallb-system   pod/speaker-tngv7                                   1/1       Running            0          2d

NAMESPACE     NAME                           TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                                   AGE
default       service/gitlab-gitlab          LoadBalancer   10.102.204.34   192.168.1.201   22:32208/TCP,80:32194/TCP,443:31370/TCP   50m
default       service/gitlab-minio           ClusterIP      None            <none>          9000/TCP                                  50m
default       service/gitlab-postgresql      ClusterIP      10.108.66.88    <none>          5432/TCP                                  50m
default       service/gitlab-redis           ClusterIP      10.97.59.57     <none>          6379/TCP                                  50m
default       service/kubernetes             ClusterIP      10.96.0.1       <none>          443/TCP                                   2d
default       service/ldap-service           LoadBalancer   10.101.250.10   192.168.1.200   389:32231/TCP                             2d
kube-system   service/kube-dns               ClusterIP      10.96.0.10      <none>          53/UDP,53/TCP                             2d
kube-system   service/kubernetes-dashboard   NodePort       10.104.132.52   <none>          443:30924/TCP                             2d
kube-system   service/tiller-deploy          ClusterIP      10.96.67.163    <none>          44134/TCP                                 2d

NAMESPACE        NAME                                      DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE   NODE SELECTOR                   AGE
default          daemonset.apps/local-volume-provisioner   1         1         1         1            1           <none>                          2d
kube-system      daemonset.apps/kube-flannel-ds            1         1         1         1            1           beta.kubernetes.io/arch=amd64   2d
kube-system      daemonset.apps/kube-proxy                 1         1         1         1            1           beta.kubernetes.io/arch=amd64   2d
metallb-system   daemonset.apps/speaker                    1         1         1         1            1           <none>                          2d

NAMESPACE        NAME                                   DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
default          deployment.apps/gitlab-gitlab          1         1         1            0           50m
default          deployment.apps/gitlab-minio           1         1         1            1           50m
default          deployment.apps/gitlab-postgresql      1         1         1            1           50m
default          deployment.apps/gitlab-redis           1         1         1            1           50m
default          deployment.apps/ldap                   1         1         1            1           2d
kube-system      deployment.apps/coredns                2         2         2            2           2d
kube-system      deployment.apps/kubernetes-dashboard   1         1         1            1           2d
kube-system      deployment.apps/tiller-deploy          1         1         1            1           2d
metallb-system   deployment.apps/controller             1         1         1            1           2d

NAMESPACE        NAME                                             DESIRED   CURRENT   READY     AGE
default          replicaset.apps/gitlab-gitlab-fd8b9fb85          1         1         0         50m
default          replicaset.apps/gitlab-minio-7fb7886d94          1         1         1         50m
default          replicaset.apps/gitlab-postgresql-8684bb6656     1         1         1         50m
default          replicaset.apps/gitlab-redis-785447c586          1         1         1         50m
default          replicaset.apps/ldap-79bb8c66b9                  1         1         1         2d
kube-system      replicaset.apps/coredns-78fcdf6894               2         2         2         2d
kube-system      replicaset.apps/kubernetes-dashboard-6948bdb78   1         1         1         2d
kube-system      replicaset.apps/tiller-deploy-56c4cf647b         1         1         1         2d
kube-system      replicaset.apps/tiller-deploy-64c9d747bd         0         0         0         2d
metallb-system   replicaset.apps/controller-9c57dbd4              1         1         1         2d

CoreDNSポッドからは、倖の䞖界を怜玢できないようです。これは奇劙に思えたす。

root on server1 at 11:45:48 AM in /internal/gitlab
λ k exec -it coredns-78fcdf6894-2t8tv /bin/sh -n kube-system
/ # cat /etc/resolv.conf
nameserver 192.168.1.254
nameserver 2600:1700:c540:64c0::1
search attlocal.net domain
/ # host gitlab
;; connection timed out; no servers could be reached
/ # host google.com
;; connection timed out; no servers could be reached

私にずっお、これはCoreDNSポッドがアップストリヌムネヌムサヌバヌホストネットワヌクのIPである192.168.1.254を認識できないこずを意味したす。 私は正しい方向に進んでいたすか

しかし、さらに奇劙なこずに、そのマスタヌノヌドで実行されおいるポッドはそのIPアドレスに問題なく到達できたす。

λ kubectl run -it --rm --restart=Never --image=infoblox/dnstools:latest dnstools
If you don't see a command prompt, try pressing enter.
dnstools# ping 192.168.1.254
PING 192.168.1.254 (192.168.1.254): 56 data bytes
64 bytes from 192.168.1.254: seq=0 ttl=63 time=1.102 ms

dig詊しおみたせんか

dig google.com @192.168.1.254

たた、通垞、有効なipv6構成を持぀システムは、最初にそのipv6リゟルバヌで解決を詊みたす。 それが倱敗した堎合、これらのシステムはそれを倱敗ず呌びたす。 それが機胜する堎合は、最初にdigコマンドを確認しおください。システムがデュアルスタックipv4ipv6で構成されおいるかどうかを確認したす。

今日、この問題の蚺断に倚くの時間を費やしおくれた@mauilionに改めお感謝したす。

私の解決策は今のずころかなりひどいですが、ホストOSでfirewalldサヌビスを無効にするこず

sudo systemctl stop firewalld
sudo systemctl disable firewalld

そのコマンドが実際に䜕をしおいるのかを芚えおおいおください。 ご自身の責任で行っおください。

iptablesを䜿甚するように構成されたkube-proxyを䜿甚しおkubeadmを介しおCentOS7VMにデプロむされたkubernetes1.11.2ずflannel0.10.0で同じ問題が発生したした。 私が気付いたのは、最初の展開埌、ポッド間たたはポッド間通信がなかったこずです。 iptablesのFORWARDチェヌンを芋るず、kube-proxyは、最初のルヌルずしおKUBE-FORWARDチェヌンを蚭定したす。これは、怜査時に、䞊蚘のすべおのトラフィックを凊理する必芁がありたす。 Flannelは、CentOS 7FORWARDチェヌンのデフォルトであるDROPルヌルずREJECTルヌルの埌に2぀のルヌルを远加したした。 REJECTルヌルを削陀するず、Flannelによっお远加されたルヌルがトラフィックを凊理し、ポッドが他のポッドやサヌビスIPず通信できるこずに気付きたした。

kube-proxyはKUBE-FORWARDの倉曎を監芖し、倉曎を防ぐため、NEWのctstateを远加したKUBE-FORWARDルヌルの埌に2぀のルヌルを远加したした。 これらのルヌルを远加するず、内郚トラフィックは期埅どおりに凊理されたす。

rules

/var/lib/kubelet/config.yamlのclusterDNS倉数を確認しおください。 私たちの構成では、これは誀っお 10.96.0.10に蚭定されおいたしたが、 10.244.240.10である必芁がありたしたこれがクラスタヌをブヌトストラップしたものです。 これを倉曎しおkubeletを再起動するず、問題が修正されたした。 ただし、マむレヌゞは異なる堎合がありたす。

@ pkeuter 、10.244.0.0 / 16は、フランネルのデフォルトの_pod_cidrです。 その堎合、 10.244.240.10はポッドIPになりたす。これは、cluster-dns ip蚭定ずしお䜿甚しないでください倉曎される可胜性があり、負荷分散は行われたせん。

そうではない
image

クラスタヌを--pod-network-cidr=10.244.0.0/16 --service-cidr=10.244.240.0/20でブヌトストラップしたしたが、今のずころいく぀かの重耇があり、ずにかく倉曎する必芁がありたす:-)それで、@ chrisohaverに感謝したす

/var/lib/kubelet/config.yamlのclusterDNS倉数を確認しおください。 私たちの構成では、これは誀っお 10.96.0.10に蚭定されおいたしたが、 10.244.240.10である必芁がありたしたこれがクラスタヌをブヌトストラップしたものです。 これを倉曎しおkubeletを再起動するず、問題が修正されたした。 ただし、マむレヌゞは異なる堎合がありたす。

これに感謝したす-それは私の内郚DNS芁求が解決されなかった理由を远跡するのに圹立ちたした。

参考たでに、-service-cidr = 192.168.0.0 / 16でkubeadmを初期化し、kube-dnsサヌビスが倖郚IPずしおそれを持っおいるため、clusterDNS倀を192.168.0.10に蚭定する必芁がありたした。

たた、kubeletを再起動するだけでは䞍十分でした。ポッドを再起動する必芁があったため、/ etc /resolv.confが曎新されたした。 リク゚ストが行われたものは、期埅どおりに解決されおいたす。

coreDNSには、その埌解決された倚くの玛らわしい問題がありたした。 オヌバヌロヌドされた䞀連の問題を考慮しお、これを閉じたす。

1.12+に特定の再珟がある堎合は、お気軜に開いおください。できるだけ早く察応したす。

/var/lib/kubelet/config.yamlのclusterDNS倉数を確認しおください。 私たちの構成では、これは誀っお 10.96.0.10に蚭定されおいたしたが、 10.244.240.10である必芁がありたしたこれがクラスタヌをブヌトストラップしたものです。 これを倉曎しおkubeletを再起動するず、問題が修正されたした。 ただし、マむレヌゞは異なる堎合がありたす。

玠晎らしいです、そしお私はどのclusterDNSアドレスを蚭定すべきかcalicoを䜿甚したすか

私は同じこずをしたしたが、同じ゚ラヌに盎面したした私のcorednsポッドぱラヌ状態を䞎え始めたせん

私は私のClusterDNSが、それでも無圱響@justlooksを倉曎したした

+1 CentOS7ずkubeadm1.11で同じ問題に盎面

@timothysc

iptables -p FORWARD ACCEPT远加するず、問題が修正されたした

+1 CentOS7ずkubeadm1.12で同じ問題に盎面

問題の解決策が芋぀かりたした。
CPU制限に達しおいたため、コアDNSデヌモンコントロヌラヌのリ゜ヌス制限を削陀したした。 それを再起動させおいたした。

フランネルの問題かもしれたせんが、私の堎合、vagrantにはmutilネットワヌクむンタヌフェむスがあるため、フランネルをデプロむするずきにむンタヌフェむスを指定する必芁がありたす - --iface=eth1 、そうでない堎合、同じDNS問題が発生したす...

https://github.com/kubernetes/kubernetes/issues/39701

vim https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlは次のように倉曎されたした

......
containers:
      - name: kube-flannel
        image: quay.io/coreos/flannel:v0.11.0-amd64
        command:
        - /opt/bin/flanneld
        args:
        - --ip-masq
        - --kube-subnet-mgr
        - --iface=eth1
......

@pkeuterに感謝し

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡