KubeDNS 命名空间查找失败



Stack

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

我要说的第一件事是,我在 AWS 中使用相同的配置文件在AWS中使用相同的配置文件进行apiservermanagerschedulerkubeletkube-proxy

这是 kubelet 配置:

/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

Kube-proxy 配置:

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

行为:

登录到任何节点上的任何 Pod:

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  

工作是:

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

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

; generated by /usr/sbin/dhclient-script
search ssnci0siiuyebf1tqq5j1a1cyd.bx.internal.cloudapp.net 
10.32.0.10
options ndots:5

如果我添加了default.svc.cluster.localsvc.cluster.local cluster.local的搜索域.

一切都开始工作,我明白为什么。

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

当我在亚马逊中部署时,这不会发生,所以我有点困惑为什么它会在 Azure 中发生。

Kubelet 有一个命令行标志,cluster-domain看起来你缺少它。查看文档

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

最新更新