Docker kube dns无法解析';kubernetes.default.svc.cluster.local';

Docker kube dns无法解析';kubernetes.default.svc.cluster.local';,docker,kubernetes,kube-dns,Docker,Kubernetes,Kube Dns,使用kargo部署kubernetes集群后,我发现kubedns吊舱工作不正常: $ kcsys get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE dnsmasq-alv8k 1/1 Running 2 1d 10.233.86.2 kubemaster dnsmasq-c9y52 1/1 Running 2

使用kargo部署kubernetes集群后,我发现kubedns吊舱工作不正常:

$ kcsys get pods -o wide

NAME          READY STATUS           RESTARTS AGE  IP           NODE
dnsmasq-alv8k 1/1   Running          2        1d   10.233.86.2  kubemaster
dnsmasq-c9y52 1/1   Running          2        1d   10.233.82.2  kubeminion1
dnsmasq-sjouh 1/1   Running          2        1d   10.233.76.6  kubeminion2
kubedns-hxaj7 2/3   CrashLoopBackOff 339      22h  10.233.76.3  kubeminion2
PS:
kcsys
kubectl--namespace=kube系统的别名

每个容器(kubedns,dnsmasq)的日志似乎正常,但healthz容器除外,如下所示:

2017/03/01 07:24:32 Healthz probe error: Result of last exec: nslookup: can't resolve 'kubernetes.default.svc.cluster.local' error exit status 1
更新

kubedns rc说明

apiVersion:v1 种类:复制控制器 元数据: creationTimestamp:2017-02-28T08:31:57Z 世代:1 标签: k8s应用程序:kubedns kubernetes.io/cluster-service:“true” 版本:v19 姓名:kubedns 名称空间:kube系统 资源版本:“130982” selfLink:/api/v1/namespace/kube系统/replicationcontroller/kubedns uid:5dc9f9f2-fd90-11e6-850d-005056a020b4 规格: 副本:1份 选择器: k8s应用程序:kubedns 版本:v19 模板: 元数据: creationTimestamp:空 标签: k8s应用程序:kubedns kubernetes.io/cluster-service:“true” 版本:v19 规格: 容器: -args: ---域=cluster.local。 ---dns端口=10053 ---v=2 图片:gcr.io/google_containers/kubedns-amd64:1.9 imagePullPolicy:如果不存在 livenessProbe: 故障保持:5 httpGet: 路径:/healthz 端口:8080 方案:HTTP 初始延迟秒数:60 秒:10 成功阈值:1 timeoutSeconds:5 姓名:kubedns 端口: -集装箱港口:10053 名称:dns本地 协议:UDP -集装箱港口:10053 名称:dns tcp本地 协议:TCP readinessProbe: 故障保持:3 httpGet: 路径:/准备就绪 端口:8081 方案:HTTP 初始延迟秒数:30 秒:10 成功阈值:1 timeoutSeconds:5 资源: 限制: 中央处理器:100米 内存:170英里 请求: cpu:70m 内存:70英里 terminationMessagePath:/dev/终止日志 -args: ---伐木设施=- ---缓存大小=1000 ---没有决议 ---服务器=127.0.0.1#10053 图片:gcr.io/google_containers/kube-dnsmasq-amd64:1.3 imagePullPolicy:如果不存在 姓名:dnsmasq 端口: -集装箱港口:53 名称:dns 协议:UDP -集装箱港口:53 名称:dns tcp 协议:TCP 资源: 限制: 中央处理器:100米 内存:170英里 请求: cpu:70m 内存:70英里 terminationMessagePath:/dev/终止日志 -args: --cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1>/dev/null &&nslookup kubernetes.default.svc.cluster.local 127.0.0.1:10053>/dev/null --端口=8080 --安静 图片:gcr.io/google_containers/exechealthz-amd64:1.1 imagePullPolicy:如果不存在 姓名:healthz 端口: -集装箱港口:8080 协议:TCP 资源: 限制: 中央处理器:10米 内存:50Mi 请求: 中央处理器:10米 内存:50Mi terminationMessagePath:/dev/终止日志 dnsPolicy:默认值 restartPolicy:始终 securityContext:{} 终止时间:30秒 地位: 全标号:1 观测生成:1 副本:1份` kubedns svc说明:

apiVersion:v1 种类:服务 元数据: creationTimestamp:2017-02-28T08:31:58Z 标签: k8s应用程序:kubedns kubernetes.io/cluster-service:“true” kubernetes.io/name:kubedns 姓名:kubedns 名称空间:kube系统 资源版本:“10736” selfLink:/api/v1/namespace/kube-system/services/kubedns uid:5ed4dd78-fd90-11e6-850d-005056a020b4 规格: 集群:10.233.0.3 端口: -名称:dns 港口:53 协议:UDP 目标港:53 -名称:dns tcp 港口:53 协议:TCP 目标港:53 选择器: k8s应用程序:kubedns 会话相关性:无 类型:集群 地位: 负载平衡器:{} 我在kubedns容器中发现了一些错误:

1 reflector.go:199] pkg/dns/dns.go:145: Failed to list *api.Endpoints: Get https://10.233.0.1:443/api/v1/endpoints?resourceVersion=0: dial tcp 10.233.0.1:443: i/o timeout
1 reflector.go:199] pkg/dns/dns.go:148: Failed to list *api.Service: Get https://10.233.0.1:443/api/v1/services?resourceVersion=0: dial tcp 10.233.0.1:443: i/o timeout
更新2
  • 创建具有3个POD的主机名服务时,kube代理创建的iptables规则:
  • 控制器管理器吊舱的标志:

  • 豆荚状态


  • 根据您发布的错误,
    kubedns
    无法与API服务器通信:

    dial tcp 10.233.0.1:443: i/o timeout
    
    这意味着三件事:


    您的容器网络结构配置不正确

    • 在正在使用的网络解决方案的日志中查找错误
    • 确保每个Docker deamon都使用自己的IP范围
    • 验证容器网络是否与主机网络重叠

    您的
    kube代理出现问题,使用
    kubernetes
    内部服务(10.233.0.1)
    时,网络流量未转发到API服务器

    • 检查节点(kubeminion{1,2})上的
      kube代理
      日志,并用您可能发现的任何错误更新您的问题

    如果您还看到身份验证错误:

    kube控制器管理器
    未生成有效的服务帐户令牌

    • 检查
      kube控制器管理器
      --服务帐户私钥文件
      --根ca文件
      标志是否设置为有效的密钥/证书,然后重新启动服务

    • 删除
      kube系统
      命名空间中的
      default token xxxx
      secret并重新创建
      kube dns
      部署

    你能看看t吗