Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
某些查询中附加的kubernetes dns搜索域_Kubernetes_Coredns - Fatal编程技术网

某些查询中附加的kubernetes dns搜索域

某些查询中附加的kubernetes dns搜索域,kubernetes,coredns,Kubernetes,Coredns,我运行了一个kubernetes集群,其中有一个主节点和两个工作节点 root@kube-master:~# kubectl get nodes NAME STATUS ROLES AGE VERSION kube-master Ready master 4d19h v1.14.3 kube-node-01 Ready <none> 4d18h v1.14.3 kube-node-02 Ready

我运行了一个kubernetes集群,其中有一个主节点和两个工作节点

root@kube-master:~# kubectl get nodes
NAME           STATUS   ROLES    AGE     VERSION
kube-master    Ready    master   4d19h   v1.14.3
kube-node-01   Ready    <none>   4d18h   v1.14.3
kube-node-02   Ready    <none>   6h3m    v1.14.3
除了
名称空间

因为kubernetes 1.11 coredns是默认的dns解析系统。在第页用coredns调试dns系统时说我应该使用

root@kube-master:~# kubectl get pods --namespace=kube-system -l k8s-app=coredns
No resources found.
但这不会返回任何东西!使用
kube dns
返回
coredns
pods

root@kube-master:~# kubectl get pods --namespace=kube-system -l k8s-app=kube-dns
NAME                      READY   STATUS    RESTARTS   AGE
coredns-fb8b8dccf-jmhdm   1/1     Running   5          4d19h
coredns-fb8b8dccf-tfw7v   1/1     Running   5          4d19h

这是怎么回事?!我的集群中的文档是否有错误或其他内容?

我将使用nginx入口控制器示例向您展示和解释。我相信traefik入口控制器的情况也是如此

首先,关于您描述的
kube dns
coredns
混乱: 这是通过设计实现的。你可以参考阅读更多

在我的集群中,我还有一个名为
kube-dns
coredns
服务,它所指的
coredns
pod具有
k8s-app=kube-dns
标签

kubectl describe service kube-dns -n kube-system
Name:              kube-dns
Namespace:         kube-system
Labels:            k8s-app=kube-dns
                   kubernetes.io/cluster-service=true
                   kubernetes.io/name=KubeDNS
Annotations:       prometheus.io/port: 9153
                   prometheus.io/scrape: true
Selector:          k8s-app=kube-dns
Type:              ClusterIP
IP:                10.96.0.10
Port:              dns  53/UDP
TargetPort:        53/UDP
Endpoints:         10.32.0.2:53,10.32.0.9:53
Port:              dns-tcp  53/TCP
TargetPort:        53/TCP
Endpoints:         10.32.0.2:53,10.32.0.9:53
Port:              metrics  9153/TCP
TargetPort:        9153/TCP
Endpoints:         10.32.0.2:9153,10.32.0.9:9153
Session Affinity:  None
Events:            <none>

kubectl get pods -n kube-system -l k8s-app=kube-dns -o wide
NAME                      READY   STATUS    RESTARTS   AGE     IP          NODE                     NOMINATED NODE   READINESS GATES
coredns-fb8b8dccf-42285   1/1     Running   0          3h26m   10.32.0.9   kubernetessandbox-1-vm   <none>           <none>
coredns-fb8b8dccf-87j5v   1/1     Running   0          3h26m   10.32.0.2   kubernetessandbox-1-vm   <none>           <none>
但同时,我的nginx ingress控制器pod具有
名称服务器169.254.169.254
,甚至无法查找kubernetes.default

cat /etc/resolv.conf
search c.myproj.internal. google.internal.
nameserver 169.254.169.254
不确定traefic pod上的
/etc/resolv.conf
中有什么内容,但问题就在这里。你已经从你的节点中得到了
/etc/resolv.conf

如果ingress使用HostNet而不是dnsPolicy:ClusterFirst设置dnsPolicy:ClusterFirst,则可以解决此问题

发件人:

“ClusterFirstWithHostNet”:对于使用hostNetwork运行的播客,您可以 应明确设置其DNS策略“ClusterFirstWithHostNet”

从中编辑nginx入口控制器部署后

  dnsPolicy: ClusterFirst
  hostNetwork: true

使用所需的/etc/resolv.conf重新创建pod:

cat /etc/resolv.conf
search kube-system.svc.cluster.local svc.cluster.local cluster.local c.myproj.internal. google.internal.
nameserver 10.96.0.10
options ndots:5

nslookup kubernetes.default
Server:         10.96.0.10
Address:        10.96.0.10#53

Name:   kubernetes.default.svc.cluster.local
Address: 10.96.0.1
针对hostNetwork/dnsPolicy相关问题和说明的URL很少。这是正确配置Traefik的重要部分:

(一)

(二)

3) 第条:

此设置很重要。它将配置要使用的Traefik吊舱 Kubernetes群集内部DNS服务器(很可能是KubeDNS或 这意味着pods/etc/resolv.conf将 配置为使用Kubernetes DNS服务器。否则,DNS服务器 将使用Kubernetes节点的(基本上是 工作节点,但无法解析群集。本地DNS(例如)


希望有帮助。

默认的NDOT:n为5。这意味着,如果名称中包含少于5个点,系统调用将尝试先通过所有本地搜索域依次解析它,如果没有成功,则最后将仅作为绝对名称解析。

与searchdomains conta组合时,这也是一个问题ining通配符条目-所有外部请求都将获得通配符答案
cat /etc/resolv.conf
search c.myproj.internal. google.internal.
nameserver 169.254.169.254
  dnsPolicy: ClusterFirst
  hostNetwork: true
  dnsPolicy: ClusterFirstWithHostNet
  hostNetwork: true
cat /etc/resolv.conf
search kube-system.svc.cluster.local svc.cluster.local cluster.local c.myproj.internal. google.internal.
nameserver 10.96.0.10
options ndots:5

nslookup kubernetes.default
Server:         10.96.0.10
Address:        10.96.0.10#53

Name:   kubernetes.default.svc.cluster.local
Address: 10.96.0.1
dnsPolicy: ClusterFirstWithHostNet