Kubernetes之调试DNS解析
                    
                
                
                    Kubernetes之调试DNS解析
创建一个简单的 Pod 来用作测试环境
使用以下内容创建一个名为 busybox.yaml 的文件:
1  | apiVersion: v1  | 
然后使用此文件创建一个 pod 并验证其状态:
1  | kubectl create -f busybox.yaml  | 
一旦该 pod 运行,您就可以在环境中执行 nslookup。如果您看到如下所示的内容,则 DNS 工作正常。
1  | kubectl exec -ti busybox -- nslookup kubernetes.default  | 
如果 nslookup 命令失败,请检查以下内容:
首先检查本地 DNS 配置
看一看 resolv.conf 文件
1  | kubectl exec busybox cat /etc/resolv.conf  | 
验证搜索路径和名称服务器是否设置如下(请注意,搜索路径可能因不同的云提供商而异):
1  | search default.svc.cluster.local svc.cluster.local cluster.local google.internal c.gce_project_id.internal  | 
以下错误表明 kube-dns 附加组件或相关服务存在问题:
1  | kubectl exec -ti busybox -- nslookup kubernetes.default  | 
或者
1  | kubectl exec -ti busybox -- nslookup kubernetes.default  | 
检查 DNS pod 是否正在运行中
使用 kubectl get pods 命令验证 DNS pod 是否正在运行中。
1  | kubectl get pods --namespace=kube-system -l k8s-app=kube-dns  | 
如果您看到没有 pod 正在运行中,或者 pod 已失败/已完成,那么在当前环境中,默认情况下可能不会部署 DNS 插件,您将不得不手动部署它。
检查 DNS pod 中的错误
使用 kubectl logs 命令查看 DNS 守护程序的日志。
1  | kubectl logs --namespace=kube-system $(kubectl get pods --namespace=kube-system -l k8s-app=kube-dns -o name) -c kubedns  | 
看看有没有可疑的日志。字母 ‘W‘、’E‘、’F’ 表示警告、错误和失败。
DNS服务起来了吗?
通过使用 kubectl get service 命令验证 DNS 服务已启动。
1  | kubectl get svc --namespace=kube-system  | 
如果您已经创建了该服务,或者应该在默认情况下创建它,但它没有出现。
DNS endpoints 是否暴露?
您可以使用 kubectl get endpoints 命令验证是否暴露了了 DNS endpoints。
1  | kubectl get ep kube-dns --namespace=kube-system  | 
             评论
        
        
    评论插件加载失败
    
    
    正在加载评论插件