Kube-dns无法解析kubeadm裸机群集上的外部主机

时间:2017-01-03 16:34:58

标签: kubernetes

我使用带有kubeadm的weave网络在裸机ubuntu 16.04群集上安装了k8n群集。我遇到了各种各样的小问题,最近的一次是我发现kube-dns无法解析外部地址(例如google.com)。有什么想法吗?使用kube-adm并没有让我对这部分设置的细节有很多了解。

2 个答案:

答案 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>"]

简单地说,用

将它应用于kubernetes
kubectl 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