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

当使用自定义kube dns配置映射时,POD似乎不接收上游dns或存根域

史承福
2023-03-14

我在库贝系统NS中设置了一个名为库贝-dns的配置映射,其中包含一些自定义的上游DNS条目(3 x),但当我计划时,我的容器/Pod不会在其resolv.conf文件中继承这些自定义DNS条目他们通过一个简单的部署。

我在库贝-dns pod中的日志似乎没有指向配置映射的名称(它看起来像一个空字符串)。这可能是问题所在吗?

添加自定义配置映射后,我确实删除了库贝-dns Pod,并允许现有的库贝-dns部署重新创建Pod(有2组库贝-dns Pod被终止并重新创建)。

我使用本指南设置了配置图(我在博客中发布了一篇关于1.6引入的功能的文章):

https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#configmap-选择权

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日志中,我可以看到配置映射名称的标志似乎是一个空字符串。

我在删除旧pod后查看的新kubedns pod的日志说(注意第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类型,文档中说我需要它才能工作。

任何关于在哪里寻找问题的建议或指点都是非常受欢迎的。

共有1个答案

龚鸿雪
2023-03-14

我也读过这些博客/教程,但它们似乎没有提到您需要在配置图上运行kubectl apply-f您的dns configmap.yaml

我将运行以下代码:kubectl get cm--namespace="库贝-system"来查看您的配置映射是否实际存在。它的名字应该是库贝-dns。

我遇到了另一个问题,你的帖子启发我检查kube dns日志,在我日志的顶部写着:1服务器。转到:66]使用从ConfigMap读取的配置:kube系统:kube dns,尽管你的日志写的是使用从目录读取的配置:/kube dns config

因此,您的kube dns显然没有找到配置映射,并且默认为kube dns容器文件系统中的某些配置。我肯定会尝试运行apply和getcm命令,然后再试一次,看看会发生什么。

 类似资料:
  • 我已将jackson扩展添加到我的quarkus gradle项目(0.23.2),但是在运行我的应用程序和调用我的restendpoint时,似乎没有应用此配置: 序列化的json仍然包括空条目和空数组。这遵循夸克指南上的示例。 在启动时,我可以看到jackson扩展存在: 我错过什么了吗? 从curl超文本传输协议请求返回的jackson序列化输出示例: 如您所见,尽管配置为不输出消息和属性,

  • 我使用ModelMapper的方式如下: 我有几个转换器类是Spring组件,它们注册自定义ModelMapper映射 但是当Spring启动时,由于调用了configure函数,并且源代码为null,所以我得到了以下错误。 这怎么可能呢? 我用错了吗? bean是这样声明的,Foo和FooModel不是最终的 重要编辑 实际上,即使在主类内的函数中显式创建映射,也会得到相同的NullPointe

  • 我想在从AbstractEndPoint派生的endpoint上使用不同的jackson ObjectMapper实例(而不是在其他映射URL上使用的实例)。 为了澄清这个问题,我不想更改或自定义对象映射器,它由不同的URL使用,不同的URL来自AbstractEndpoints(如HealtEndpoint、MetricsEndpoint)。我想专门将新的对象映射器注入到管理endpoint中。

  • 我有两个对象,除了date成员外,其他成员都相同。在obj1中,date是java.sql.date,obj2.date是long(纪元)。 我需要编写一个映射器来将obj1映射到obj2。这就是我试图做的: 但是mapperImpl只有自己的日期转换实现: 我得到了: 这种转换的正确方式是什么?

  • 我有一个自定义的Request estMappingHandlerMap类,它将特殊注释解释为其映射条件的一部分。因此它被实例化为bean: 但是当我创建一个MockMvc对象进行测试时(使用Standard aloneSetup),没有使用这个映射处理程序。如果不考虑额外的注释,映射会失败,因为我有多个具有相同@Request estMap的控制器方法。注释是区分它们的原因。 如何配置MockM

  • 更新 我解决了问题。答案如下 问题 我通过创建一个新的项目:(他要求的所有选项都被选中)。 然后,我在文件夹中创建一个文件,其中包含以下内容: 在和中,我导入了这个模块来使用它们: 并且在我的中添加: 我的正在解析此路径。但当我尝试运行或()时,我得到一个错误: @libs/test-lib在./src/main.ts,./node_modules/cache-loader/dist/cjs.js