我要说的第一件事就是我在 AWS 中使用相同配置文件进行同样的安装{{1} },apiserver
,manager
,scheduler
和kubelet
。
kube-proxy
/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中发生这种情况。
答案 0 :(得分:0)
Kubelet有一个命令行标志cluster-domain
,看起来你错过了。请参阅docs
将--cluster-domain=cluster.local
添加到您的kubelet命令启动中,它应该按预期开始工作。