无法让kube-dns从Kubernetes开始

时间:2017-02-03 14:38:58

标签: dns kubernetes coreos

希望有人可以提供帮助。 我有一个运行Kubernetes的3x节点CoreOS集群。节点如下: 192.168.1.201 - 控制器 192.168.1.202 - 工作节点 192.168.1.203 - 工作节点

群集已启动并正在运行,我可以运行以下命令:

> kubectl get nodes

NAME            STATUS                     AGE
192.168.1.201   Ready,SchedulingDisabled   1d
192.168.1.202   Ready                      21h
192.168.1.203   Ready                      21h

> kubectl get pods --namespace=kube-system

NAME                                    READY     STATUS             RESTARTS   AGE
kube-apiserver-192.168.1.201            1/1       Running            2          1d
kube-controller-manager-192.168.1.201   1/1       Running            4          1d
kube-dns-v20-h4w7m                      2/3       CrashLoopBackOff   15         23m
kube-proxy-192.168.1.201                1/1       Running            2          1d
kube-proxy-192.168.1.202                1/1       Running            1          21h
kube-proxy-192.168.1.203                1/1       Running            1          21h
kube-scheduler-192.168.1.201            1/1       Running            4          1d

如您所见,kube-dns服务未正确运行。它不断重启,我正在努力理解为什么。任何有关调试的帮助都会非常感激(或者在哪里阅读有关调试的信息。运行kubectl日志不能带回任何东西......不确定插件的功能是否与标准pod不同。

运行kubectl描述pods,我可以看到容器因不健康而被杀死:

16m           16m             1       {kubelet 192.168.1.203} spec.containers{kubedns}        Normal          Created         Created container with docker id 189afaa1eb0d; Security:[seccomp=unconfined]
16m           16m             1       {kubelet 192.168.1.203} spec.containers{kubedns}        Normal          Started         Started container with docker id 189afaa1eb0d
14m           14m             1       {kubelet 192.168.1.203} spec.containers{kubedns}        Normal          Killing         Killing container with docker id 189afaa1eb0d: pod "kube-dns-v20-h4w7m_kube-system(3a545c95-ea19-11e6-aa7c-52540021bfab)" container "kubedns" is unhealthy, it will be killed and re-created

请在此处找到此命令的完整输出:https://gist.github.com/mehstg/0b8016f5398a8781c3ade8cf49c02680

提前致谢!

3 个答案:

答案 0 :(得分:1)

如果您使用kubeadm安装了群集,则应在安装后添加pod网络。

如果您选择法兰绒作为您的pod网络,您应该在init命令kubeadm init --pod-network-cidr 10.244.0.0/16中使用此参数。

法兰绒YAML文件可在coreOS flannel repo中找到。

如果您的群集已正确初始化(上面已阅读),您需要做的就是运行kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

一旦启动并运行(它将在每个节点上创建pod),您的kube-dns pod就会出现。

如果您需要重置安装(例如将参数添加到kubeadm init),则可以在所有节点上使用kubeadm reset

通常,您将在主服务器上运行init命令,然后添加一个pod网络,然后添加其他节点。

有关pod网络的Getting started guide,第3/4步中对此进行了更详细的描述。

答案 1 :(得分:0)

正如你的要点所说,您的pod网络似乎已被打破。您正在使用10.10.10.X的一些自定义podnetwork。您应该将此IP传递给所有组件。

请检查,与其他现有网络没有冲突。

我建议您使用Calico进行设置,因为这是我提升CoreOS k8s工作的解决方案

答案 2 :(得分:0)

在使用法兰绒网络官方kubeadm文档中的步骤之后,我遇到了类似的问题

http://janetkuo.github.io/docs/getting-started-guides/kubeadm/

当网络容器陷入错误状态时会出现:

kube-dns-xxxxxxxx-xxxvn(rpc错误)

kube-flannel-ds-xxxxx(CrashLoopBackOff)

kube-flannel-ds-xxxxx(CrashLoopBackOff)

kube-flannel-ds-xxxxx(CrashLoopBackOff)

在我的情况下,它与rbac权限错误有关,并通过运行

解决

kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml

之后,所有kube-system pod都进入了运行状态。上游问题在github https://github.com/kubernetes/kubernetes/issues/44029

上讨论