我使用带有kubeadm的weave网络在裸机ubuntu 16.04群集上安装了k8n群集。我遇到了各种各样的小问题,最近的一次是我发现kube-dns无法解析外部地址(例如google.com)。有什么想法吗?使用kube-adm并没有让我对这部分设置的细节有很多了解。
答案 0 :(得分:0)
问题是,节点级防火墙干扰了群集网络。所以DNS设置没有问题。
答案 1 :(得分:0)
I had the same issue on kubernetes v1.6 and it was not a firewall issue in my case.
The problem was that I have configured the DNS manually on the /etc/docker/daemon.json
, and these parameters are not used by kube-dns. Instead it is needed to create a configmap
for kubedns (pull request here和文档here),如下所示:
<强>解决方案强>
为configmap创建yaml
,例如kubedns-configmap.yml
apiVersion: v1
kind: ConfigMap
metadata:
name: kube-dns
namespace: kube-system
data:
upstreamNameservers: |
["<own-dns-ip>"]
简单地说,用
将它应用于kuberneteskubectl apply -f kubedns-configmap.yml
测试1
在您的kubernetes主机节点上:
dig @10.96.0.10 google.com
测试2
要测试它,我使用具有以下资源配置(busybox.yml
)的busybox映像:
apiVersion: v1
kind: Pod
metadata:
name: busybox
spec:
containers:
# for arm
#- image: hypriot/armhf-busybox
- image: busybox
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
name: busybox
restartPolicy: Always
使用
应用资源kubectl apply -f busybox.yml
用以下方法测试:
kubectl exec -it busybox -- ping google.com