KubeDNS名称空间查找失败

时间:2017-04-06 15:01:02

标签: kubernetes

堆栈

  • 环境:Azure
  • 安装类型:自定义
  • 基本操作系统:Centos 7.3
  • Docker:1.12.5

我要说的第一件事就是我在 AWS 中使用相同配置文件进行同样的安装{{1} },apiservermanagerschedulerkubelet

这是kubelet配置:

kube-proxy

Kube-proxy config:

/usr/bin/kubelet \
  --require-kubeconfig \
  --allow-privileged=true \
  --cluster-dns=10.32.0.10 \
  --container-runtime=docker \
  --docker=unix:///var/run/docker.sock \
  --network-plugin=kubenet \
  --kubeconfig=/var/lib/kubelet/kubeconfig \
  --serialize-image-pulls=true \
  --cgroup-root=/ \
  --system-container=/system \
  --node-status-update-frequency=4s \
  --tls-cert-file=/var/lib/kubernetes/kubernetes.pem \
  --tls-private-key-file=/var/lib/kubernetes/kubernetes-key.pem \
  --v=2

行为:

登录任何节点上的任何pod:

/usr/bin/kube-proxy \
  --master=https://10.240.0.6:6443 \
  --kubeconfig=/var/lib/kubelet/kubeconfig \
  --proxy-mode=iptables \
  --v=2

工作是什么:

nslookup kubernetes 10.32.0.10
Server:    10.32.0.10
Address 1: 10.32.0.10 kube-dns.kube-system.svc.cluster.local

nslookup: can't resolve 'kubernetes': Try again  

所以我发现在azure上, resolv.conf 看起来像这样:

nslookup kubernetes.default.svc.cluster.local. 10.32.0.10
Server:    10.32.0.10
Address 1: 10.32.0.10 kube-dns.kube-system.svc.cluster.local

Name:      kubernetes.default.svc.cluster.local.
Address 1: 10.32.0.1 kubernetes.default.svc.cluster.local

如果我添加了 ; generated by /usr/sbin/dhclient-script search ssnci0siiuyebf1tqq5j1a1cyd.bx.internal.cloudapp.net 10.32.0.10 options ndots:5 default.svc.cluster.local 的搜索域。

一切都开始有效,我理解为什么。

然而,这是有问题的,因为对于我创建的每个命名空间,我都需要管理 resolv.conf

当我在亚马逊部署时,这种情况不会发生,所以我很难理解为什么会在Azure中发生这种情况。

1 个答案:

答案 0 :(得分:0)

Kubelet有一个命令行标志cluster-domain,看起来你错过了。请参阅docs

--cluster-domain=cluster.local添加到您的kubelet命令启动中,它应该按预期开始工作。