当前位置: 首页 > 知识库问答 >
问题:

无法通过Kubernetes中的skydns服务解析“Kubernetes”

江浩慨
2023-03-14
core@core-1-94 ~ $ kubectl exec -it busybox -- nslookup kubernetes
Server:    10.100.0.10
Address 1: 10.100.0.10

nslookup: can't resolve 'kubernetes'
core@core-1-94 ~ $ kubectl get svc --namespace=kube-system
NAME       LABELS                                                                           SELECTOR           IP(S)            PORT(S)
kube-dns   k8s-app=kube-dns,kubernetes.io/cluster-service=true,kubernetes.io/name=KubeDNS   k8s-app=kube-dns   10.100.0.10      53/UDP
                                                                                                                                53/TCP
kube-ui    k8s-app=kube-ui,kubernetes.io/cluster-service=true,kubernetes.io/name=KubeUI     k8s-app=kube-ui    10.100.110.236   80/TCP
core@core-1-94 ~ $ kubectl exec -it busybox -- nslookup kubernetes 10.100.0.10:53
Server:    10.100.0.10
Address 1: 10.100.0.10

nslookup: can't resolve 'kubernetes'
core@core-1-94 ~ $ kubectl get endpoints --namespace=kube-system
NAME       ENDPOINTS
kube-dns   10.244.31.16:53,10.244.31.16:53
kube-ui    10.244.3.2:8080
core@core-1-94 ~ $ kubectl exec -it busybox -- nslookup kubernetes 10.244.31.16:53
Server:    10.244.31.16
Address 1: 10.244.31.16

Name:      kubernetes
Address 1: 10.100.0.1

我认为kube-dns的服务不可用。

SkyDNS-svc.yaml:

apiVersion: v1
kind: Service
metadata:
  name: kube-dns
  namespace: kube-system
  labels:
    k8s-app: kube-dns
    kubernetes.io/cluster-service: "true"
    kubernetes.io/name: "KubeDNS"
spec:
  selector:
    k8s-app: kube-dns
  clusterIP: 10.100.0.10
  ports:
  - name: dns
    port: 53
    protocol: UDP
  - name: dns-tcp
    port: 53
    protocol: TCP

谁能帮忙?

共有1个答案

邰宇
2023-03-14

要使DNS工作,需要在启动时向kubelet传递标志--cluster_dns=和--cluster_domain=cluster.local。此标志不包括在传递给kubelet的一组标志中,因此kubelet不会尝试联系您为名称解析服务创建的DNS pod。要解决这个问题,您可以修改脚本,将这两个标志添加到kubelet中,然后在创建DNS服务时,您需要确保将传递给--cluster_dns标志的ip地址设置为服务规范的portalIP字段,如下所示。任何其他信息,你可以看看。

 类似资料:
  • 我找不到让nginx pod解析另一个kubernetes服务url的方法。 我没有使用库贝-dns,我们只使用kube2sky,我们还没有实现库贝-dns,所以我需要修复这个场景。 例如,我希望nginx解析服务URL,但如果我对该URL运行ping,它将成功解析。 我的nginx配置部分是: 我需要在变量中指定目标上游,因为我希望nginx启动,即使目标不可用,如果我没有在变量中指定nginx

  • 我使用此处的说明在 VirtualBox 上创建了一个 3 节点 kubernetes 集群(1 个主 2 个工作线程)。我正在使用法兰绒作为覆盖网络。 我在安装过程中在主服务器上设置了< code > sysctl-w net . bridge . bridge-nf-call-iptables = 1 和< code > sysctl-w net . bridge . bridge-nf-ca

  • 什么起作用了? 使用Helm(启用RBAC)部署入口控制器 集群IP服务部署 什么不起作用? null K8S入口 注释中最后应用的配置(入口描述输出)显示入口资源清单。但是,我贴在下面作为参考 附加信息 null 任何关于我可能做错了什么的建议或见解将非常感谢。

  • 我正在尝试使用三个虚拟机(Master–10.x.x.4、Node1–10.x.x.150、Node2–10.x.x.160)创建Kubernetes集群。 我能够通过此链接成功创建留言簿应用程序:http://kubernetes.io/v1.0/examples/guestbook/.我只对frontend-service.yaml做了一个更改:使用NodePort。我可以使用节点IP和端口号

  • 我正在尝试使用入口公开部署,其中DeamonSet具有hostNetwork=true,这将允许我跳过额外的负载平衡器层,并直接在Kubernetes外部节点IP上公开我的服务。很遗憾,我无法从外部网络访问入口控制器。 我在GCP上运行库伯内特斯版本1.11.16-gke.2。 我将刷新群集设置为: 我运行部署: 然后我创建服务: 和入口资源: 我获取节点外部IP: 检查入口是否正在运行: 然后尝

  • 名称:示例-服务 命名空间:默认 标签:run=load-balancer-example 注释: 选择器:run=load-balancer-example 类型:nodeport IP:10.108.214.162 端口:9090/tcp 目标端口:9090/tcp 节点端口:31105/tcp endpoint:192.168.1.23:9090,192.168.1.24:9090 会话关联