Docker kube dns无法解析';kubernetes.default.svc.cluster.local';
使用kargo部署kubernetes集群后,我发现kubedns吊舱工作不正常: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
$ 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
根据您发布的错误,
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系统
secret并重新创建default token xxxx
部署kube dns