当前位置: 首页 > news >正文

k8s_设置dns

配置k8s dns

在 Kubernetes 集群中,CoreDNS 是默认的 DNS 服务器,它负责处理集群内所有的 DNS 请求。
kubectl edit cm coredns -n kube-system (此命令修改coredns 配置)
kubectl describe cm coredns -n kube-system(此命令查看coredns 配置)
出现类似以下结果

apiVersion: v1
data:Corefile: |.:53 {errorshealth {lameduck 5s}readykubernetes cluster.local in-addr.arpa ip6.arpa {pods insecurefallthrough in-addr.arpa ip6.arpattl 30}prometheus :9153forward . /etc/resolv.conf {max_concurrent 1000}cache 30loopreloadloadbalance}
kind: ConfigMap
metadata:creationTimestamp: "2024-05-11T02:24:34Z"name: corednsnamespace: kube-systemresourceVersion: "514"uid: 04803c22-064c-451e-a88e-425e4cd38cd5

注意:其中
forward . /etc/resolv.conf
表示在 CoreDNS 的配置中使用 forward . /etc/resolv.conf { max_concurrent 1000 },CoreDNS 将所有无法处理的 DNS 请求转发到 /etc/resolv.conf 中指定的上游 DNS 服务器,并限制最大并发查询数为 1000。
修改完配置,执行下面命令使配置生效
kubectl delete pod -n kube-system -l k8s-app=kube-dns
验证
kubectl run -i --tty dnsutils --image=tutum/dnsutils --rm
进入pod后,执行下述命令查看dns是否正确
nslookup google.com
dig google.com

/etc/resolv.conf 和 /etc/systemd/resolved.conf 的关系和区别

/etc/resolv.conf/etc/systemd/resolved.conf 都与系统的 DNS 配置有关,但它们有不同的用途和作用范围。

/etc/resolv.conf

/etc/resolv.conf 是一个传统的配置文件,用于指定系统的 DNS 解析器。该文件包含 DNS 服务器的地址、搜索域等信息。典型的内容可能如下所示:
(此时可能手动管理)

nameserver 8.8.8.8
nameserver 8.8.4.4
search example.com

或者(此时可能由systemd-resolved管理)

nameserver 127.0.0.53
options edns0 trust-ad
search .
  • nameserver:指定 DNS 服务器的 IP 地址。
  • search:指定搜索域,解析未完全限定的主机名时使用。

操作系统和大多数应用程序在进行 DNS 查询时会读取这个文件。

/etc/systemd/resolved.conf

/etc/systemd/resolved.conf 是 systemd-resolved 服务的配置文件。systemd-resolved 是一个用于处理 DNS 解析的系统服务,提供 DNS 缓存和分区的 DNS 配置。典型的配置文件内容可能如下所示:

[Resolve]
DNS=8.8.8.8 8.8.4.4
FallbackDNS=1.1.1.1 1.0.0.1
Domains=example.com
LLMNR=no
MulticastDNS=no
DNSSEC=no
Cache=yes
  • DNS:指定主 DNS 服务器。
  • FallbackDNS:指定备用 DNS 服务器。
  • Domains:指定搜索域。
  • LLMNRMulticastDNSDNSSECCache:配置是否启用特定的 DNS 功能。

关系和区别

  • 用途/etc/resolv.conf 是一个通用的 DNS 配置文件,许多应用程序和工具会直接读取这个文件来获取 DNS 信息。而 /etc/systemd/resolved.conf 是用于配置 systemd-resolved 服务的。
  • 管理方式:当使用 systemd-resolved 时,它会管理 /etc/resolv.conf 的内容。如果 systemd-resolved 启动并运行,它可能会将 /etc/resolv.conf 设置为指向 systemd-resolved 自己的本地解析器(通常是 127.0.0.53)。在这种情况下,系统的 DNS 请求会被 systemd-resolved 处理。
  • 配置方式:可以通过编辑 /etc/resolv.conf 来手动配置 DNS 服务器,但如果 systemd-resolved 在运行,它可能会覆盖这些手动配置。通过编辑 /etc/systemd/resolved.conf 配置文件,并重启 systemd-resolved 服务,可以持久地配置 DNS 设置。

使用 systemd-resolved 时的典型配置步骤

  1. 编辑 /etc/systemd/resolved.conf

    [Resolve]
    DNS=8.8.8.8 8.8.4.4
    FallbackDNS=1.1.1.1 1.0.0.1
    Domains=example.com
    
  2. 重启 systemd-resolved 服务

    sudo systemctl restart systemd-resolved
    
  3. 确保 /etc/resolv.conf 指向 systemd-resolved

    sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
    

通过以上步骤,systemd-resolved 将会管理 DNS 配置,并确保 /etc/resolv.conf 指向它自己的本地解析器。

小结

总之,k8s通过coredns 来管理dns,并且指定无法处理的 DNS 请求转发到 /etc/resolv.conf指定的dns服务器(这里也可以配置为其他dns服务器)。systemd-resolved启动后,/etc/resolv.conf由 systemd-resolved 管理(会变成一个软链接),/etc/resolv.conf的内容实际是systemd-resolved的配置文件/run/systemd/resolve/stub-resolv.conf,stub-resolv.conf中会配置实际真正的dns服务器地址。dns设置不妥当,会影响k8s中安装组件时的域名解析。安装组件时可以通过下述命令查看是否因为域名解析导致pull组件镜像失败。
kubectl get events --sort-by=‘.metadata.creationTimestamp’ -n kube-system | tail -n10

http://www.lryc.cn/news/359457.html

相关文章:

  • 翻译《The Old New Thing》- What a drag: Dragging a virtual file (HGLOBAL edition)
  • SA316系列音频传输模块-传输距离升级音质不打折
  • 【机器学习】智能选择的艺术:决策树在机器学习中的深度剖析
  • 电脑缺少运行库,无法启动程序
  • 【计算机软考_初级篇】每日十题2
  • HR人才测评,如何做营销人员岗位素质测评?
  • LabVIEW调用第三方硬件DLL常见问题及开发流程
  • datax实现MySQL数据库迁移shell自动化脚本
  • PostgreSQL的学习心得和知识总结(一百四十四)|深入理解PostgreSQL数据库之sendTuples的实现原理及功能修改
  • C++数据结构之:链List
  • 10.Redis之set类型
  • SpringBoot + mongodb 删除集合中的数据
  • 【日常记录】【JS】前端预览图片的两种方式,Base64预览和blob预览
  • 每日刷题——杭电2156.分数矩阵和杭电2024.C语言合法标识符
  • 爬虫学习--18.反爬斗争 selenium(3)
  • 如何评价GPT-4o?
  • 算能BM1684+FPGA+AI+Camera推理边缘计算盒
  • 不同厂商SOC芯片在视频记录仪领域的应用
  • 【Python入门学习笔记】Python3超详细的入门学习笔记,非常详细(适合小白入门学习)
  • 通用代码生成器应用场景三,遗留项目反向工程
  • 轻量级动态可监控线程池 - DynamicTp
  • 对于vsc中的vue命令 vue.json
  • Spring Boot 官方不再支持 Spring Boot 的 2.x 版本!新idea如何创建java8项目
  • 分享一个 ASP.NET Web Api 上传和读取 Excel的方案
  • 【算法实战】每日一题:将某个序列中内的每个元素都设为相同的值的最短次数(差分数组解法,附概念理解以及实战操作)
  • EXCEL数据透视图中的日期字段,怎样自动分出年、季度、月的功能?
  • 【设计模式深度剖析】【1】【行为型】【模板方法模式】| 以烹饪过程为例加深理解
  • JAVA:异步任务处理类CompletableFuture让性能提升一倍
  • 10Linux 进程管理学习笔记
  • 一些关于深度聚类以及部分对比学习的论文阅读笔记