Pods 使用自定义 kube-dns 配置映射时似乎没有接收到上游 dns 或存根域
Pods don't seem to be receiving upstream dns or stub domains when using custom kube-dns config map
我在 kube-system NS 中设置了一个名为 kube-dns 的配置映射,其中包含一些自定义上游 DNS 条目(其中 3 个),但我的 containers/pods 没有继承这些自定义 DNS 条目当我通过简单部署安排它们时,在它们的 resolv.conf 文件中。
我在 kube-dns pods 中的日志似乎没有指向配置映射的名称(它看起来像一个空字符串)。这可能是问题所在吗?
添加自定义配置映射后,我确实删除了 kube-dns pods,并允许现有的 kube-dns 部署重新创建 pods(有 2 x 套kube-dns pods 已终止并重新创建)。
我使用本指南设置我的配置映射(我的博客 post 围绕 1.6 中引入的功能):
https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#configmap-options
http://blog.kubernetes.io/2017/04/configuring-private-dns-zones-upstream-nameservers-kubernetes.html
这是我的配置图:
apiVersion: v1
kind: ConfigMap
metadata:
name: kube-dns
namespace: kube-system
data:
stubDomains: |
{"myinternaldomainhere.net": ["10.254.131.155"]}
upstreamNameservers: |
["10.254.131.155", "8.8.8.8", "8.8.4.4"]
我是否需要在其他地方指定 kube-dns 的部署引用配置映射的名称?在 pod 日志中,我可以看到配置映射名称的标志似乎是一个空字符串。
我在删除旧 pods 后查看的新 kubedns pods 的日志说(注意第 5 行是我看到空字符串引用的地方):
I1110 16:35:35.685518 1 dns.go:48] version: 1.14.4-2-g5584e04
I1110 16:35:35.686074 1 server.go:70] Using configuration read from directory: /kube-dns-config with period 10s
I1110 16:35:35.686136 1 server.go:113] FLAG: --alsologtostderr="false"
I1110 16:35:35.686148 1 server.go:113] FLAG: --config-dir="/kube-dns-config"
I1110 16:35:35.686152 1 server.go:113] FLAG: --config-map=""
I1110 16:35:35.686155 1 server.go:113] FLAG: --config-map-namespace="kube-system"
I1110 16:35:35.686158 1 server.go:113] FLAG: --config-period="10s"
I1110 16:35:35.686161 1 server.go:113] FLAG: --dns-bind-address="0.0.0.0"
I1110 16:35:35.686164 1 server.go:113] FLAG: --dns-port="10053"
I1110 16:35:35.686192 1 server.go:113] FLAG: --domain="cluster.local."
I1110 16:35:35.686196 1 server.go:113] FLAG: --federations=""
I1110 16:35:35.686200 1 server.go:113] FLAG: --healthz-port="8081"
I1110 16:35:35.686202 1 server.go:113] FLAG: --initial-sync-timeout="1m0s"
I1110 16:35:35.686205 1 server.go:113] FLAG: --kube-master-url=""
I1110 16:35:35.686208 1 server.go:113] FLAG: --kubecfg-file=""
I1110 16:35:35.686211 1 server.go:113] FLAG: --log-backtrace-at=":0"
I1110 16:35:35.686236 1 server.go:113] FLAG: --log-dir=""
I1110 16:35:35.686250 1 server.go:113] FLAG: --log-flush-frequency="5s"
I1110 16:35:35.686257 1 server.go:113] FLAG: --logtostderr="true"
I1110 16:35:35.686260 1 server.go:113] FLAG: --nameservers=""
I1110 16:35:35.686262 1 server.go:113] FLAG: --stderrthreshold="2"
I1110 16:35:35.686275 1 server.go:113] FLAG: --v="2"
I1110 16:35:35.686281 1 server.go:113] FLAG: --version="false"
I1110 16:35:35.686286 1 server.go:113] FLAG: --vmodule=""
I1110 16:35:35.686459 1 server.go:176] Starting SkyDNS server (0.0.0.0:10053)
I1110 16:35:35.686713 1 server.go:198] Skydns metrics enabled (/metrics:10055)
I1110 16:35:35.686724 1 dns.go:147] Starting endpointsController
I1110 16:35:35.686728 1 dns.go:150] Starting serviceController
I1110 16:35:35.686924 1 logs.go:41] skydns: ready for queries on cluster.local. for tcp://0.0.0.0:10053 [rcache 0]
I1110 16:35:35.686937 1 logs.go:41] skydns: ready for queries on cluster.local. for udp://0.0.0.0:10053 [rcache 0]
I1110 16:35:36.187196 1 dns.go:171] Initialized services and endpoints from apiserver
I1110 16:35:36.187215 1 server.go:129] Setting up Healthz Handler (/readiness)
I1110 16:35:36.187221 1 server.go:134] Setting up cache handler (/cache)
I1110 16:35:36.187226 1 server.go:120] Status HTTP port 8081
我正在对其进行测试的 pod 设置为使用 ClusterFirst DNS 类型,这是文档所说的我需要它才能工作的类型。
我们非常欢迎任何关于在哪里查找问题的建议或指示。
我也读过那些 blogs/tutorials,他们似乎没有提到您需要 运行 kubectl apply -f your-dns-configmap.yaml
在您的配置映射中。
我会 运行 以下内容:kubectl get cm --namespace="kube-system"
以查看您的配置映射是否确实存在。它应该以名称 kube-dns 出现。
我正在 运行 解决另一个问题,你的 post 启发我检查 kube-dns 日志,在我的日志顶部它说:1 server.go:66] Using configuration read from ConfigMap: kube-system:kube-dns
虽然你的日志说 Using configuration read from directory: /kube-dns-config
.
看来您的 kube-dns 肯定找不到配置映射,并且默认为 kube-dns 容器文件系统中的某些配置。我肯定会尝试 运行 应用并获取 cm 命令,然后再试一次看看会发生什么。
我在 kube-system NS 中设置了一个名为 kube-dns 的配置映射,其中包含一些自定义上游 DNS 条目(其中 3 个),但我的 containers/pods 没有继承这些自定义 DNS 条目当我通过简单部署安排它们时,在它们的 resolv.conf 文件中。
我在 kube-dns pods 中的日志似乎没有指向配置映射的名称(它看起来像一个空字符串)。这可能是问题所在吗?
添加自定义配置映射后,我确实删除了 kube-dns pods,并允许现有的 kube-dns 部署重新创建 pods(有 2 x 套kube-dns pods 已终止并重新创建)。
我使用本指南设置我的配置映射(我的博客 post 围绕 1.6 中引入的功能):
https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#configmap-options
http://blog.kubernetes.io/2017/04/configuring-private-dns-zones-upstream-nameservers-kubernetes.html
这是我的配置图:
apiVersion: v1
kind: ConfigMap
metadata:
name: kube-dns
namespace: kube-system
data:
stubDomains: |
{"myinternaldomainhere.net": ["10.254.131.155"]}
upstreamNameservers: |
["10.254.131.155", "8.8.8.8", "8.8.4.4"]
我是否需要在其他地方指定 kube-dns 的部署引用配置映射的名称?在 pod 日志中,我可以看到配置映射名称的标志似乎是一个空字符串。
我在删除旧 pods 后查看的新 kubedns pods 的日志说(注意第 5 行是我看到空字符串引用的地方):
I1110 16:35:35.685518 1 dns.go:48] version: 1.14.4-2-g5584e04
I1110 16:35:35.686074 1 server.go:70] Using configuration read from directory: /kube-dns-config with period 10s
I1110 16:35:35.686136 1 server.go:113] FLAG: --alsologtostderr="false"
I1110 16:35:35.686148 1 server.go:113] FLAG: --config-dir="/kube-dns-config"
I1110 16:35:35.686152 1 server.go:113] FLAG: --config-map=""
I1110 16:35:35.686155 1 server.go:113] FLAG: --config-map-namespace="kube-system"
I1110 16:35:35.686158 1 server.go:113] FLAG: --config-period="10s"
I1110 16:35:35.686161 1 server.go:113] FLAG: --dns-bind-address="0.0.0.0"
I1110 16:35:35.686164 1 server.go:113] FLAG: --dns-port="10053"
I1110 16:35:35.686192 1 server.go:113] FLAG: --domain="cluster.local."
I1110 16:35:35.686196 1 server.go:113] FLAG: --federations=""
I1110 16:35:35.686200 1 server.go:113] FLAG: --healthz-port="8081"
I1110 16:35:35.686202 1 server.go:113] FLAG: --initial-sync-timeout="1m0s"
I1110 16:35:35.686205 1 server.go:113] FLAG: --kube-master-url=""
I1110 16:35:35.686208 1 server.go:113] FLAG: --kubecfg-file=""
I1110 16:35:35.686211 1 server.go:113] FLAG: --log-backtrace-at=":0"
I1110 16:35:35.686236 1 server.go:113] FLAG: --log-dir=""
I1110 16:35:35.686250 1 server.go:113] FLAG: --log-flush-frequency="5s"
I1110 16:35:35.686257 1 server.go:113] FLAG: --logtostderr="true"
I1110 16:35:35.686260 1 server.go:113] FLAG: --nameservers=""
I1110 16:35:35.686262 1 server.go:113] FLAG: --stderrthreshold="2"
I1110 16:35:35.686275 1 server.go:113] FLAG: --v="2"
I1110 16:35:35.686281 1 server.go:113] FLAG: --version="false"
I1110 16:35:35.686286 1 server.go:113] FLAG: --vmodule=""
I1110 16:35:35.686459 1 server.go:176] Starting SkyDNS server (0.0.0.0:10053)
I1110 16:35:35.686713 1 server.go:198] Skydns metrics enabled (/metrics:10055)
I1110 16:35:35.686724 1 dns.go:147] Starting endpointsController
I1110 16:35:35.686728 1 dns.go:150] Starting serviceController
I1110 16:35:35.686924 1 logs.go:41] skydns: ready for queries on cluster.local. for tcp://0.0.0.0:10053 [rcache 0]
I1110 16:35:35.686937 1 logs.go:41] skydns: ready for queries on cluster.local. for udp://0.0.0.0:10053 [rcache 0]
I1110 16:35:36.187196 1 dns.go:171] Initialized services and endpoints from apiserver
I1110 16:35:36.187215 1 server.go:129] Setting up Healthz Handler (/readiness)
I1110 16:35:36.187221 1 server.go:134] Setting up cache handler (/cache)
I1110 16:35:36.187226 1 server.go:120] Status HTTP port 8081
我正在对其进行测试的 pod 设置为使用 ClusterFirst DNS 类型,这是文档所说的我需要它才能工作的类型。
我们非常欢迎任何关于在哪里查找问题的建议或指示。
我也读过那些 blogs/tutorials,他们似乎没有提到您需要 运行 kubectl apply -f your-dns-configmap.yaml
在您的配置映射中。
我会 运行 以下内容:kubectl get cm --namespace="kube-system"
以查看您的配置映射是否确实存在。它应该以名称 kube-dns 出现。
我正在 运行 解决另一个问题,你的 post 启发我检查 kube-dns 日志,在我的日志顶部它说:1 server.go:66] Using configuration read from ConfigMap: kube-system:kube-dns
虽然你的日志说 Using configuration read from directory: /kube-dns-config
.
看来您的 kube-dns 肯定找不到配置映射,并且默认为 kube-dns 容器文件系统中的某些配置。我肯定会尝试 运行 应用并获取 cm 命令,然后再试一次看看会发生什么。