K8S的Pod为什么可以解析访问集群之外的域名地址

对于以前刚学习的自己,知道Coredns是做K8S集群内解析的,但一直搞不懂主机node能访问网络,启动的Pod集群之外的域名服务也可以访问的疑问进行下说明。

DNS解析路径

Pod 发起外部请求 → CoreDNS 接收并识别为外部域名 → 转发到 Node 配置的上游 DNS → 上游 DNS 解析并返回结果 → Pod 访问目标 IP

DNS的对接配置

进入pod,然后查看/etc/resolv.conf

shell 复制代码
cat /etc/resolv.conf

nameserver 10.96.0.10:集群 DNS 服务的地址

search rook-ceph.svc.cluster.local svc.cluster.local cluster.local:域名搜索列表

options ndots:5:域名解析的 "点数量" 规则

也就是说Pod会找到coreDNS解析k8s内部这些域名,那么这些之外的域名呢?

shell 复制代码
kubectl  get   configmap coredns  -n kube-system -o yaml
yaml 复制代码
.:53 {
    errors          # 记录错误日志
    health          # 健康检查
    kubernetes cluster.local in-addr.arpa ip6.arpa {  # 处理集群内域名解析(Service、Pod等)
       pods insecure
       fallthrough in-addr.arpa ip6.arpa
    }
    prometheus :9153  # 监控指标
    forward . /etc/resolv.conf  # 关键:将非集群内的域名请求转发到上游 DNS
    cache 30           # 缓存解析结果
    loop               # 检测循环转发
    reload             # 自动重载配置
    loadbalance        # 负载均衡上游 DNS
}

CoreDns配置的上游DNS就是node本身的/etc/resolv.conf,forward . /etc/resolv.conf关键配置项的意思就是非集群内的域名请求转发到node本身的/etc/resolv.conf,然后看下node本身的/etc/resolv.conf。

shell 复制代码
cat /etc/resolv.conf

最后通过node本身的/etc/resolv.conf配置将dns请求转发到外部dns中,解析完成后就可以层层返回请求,已到达Pod解析外部域名的实现。

相关推荐
九皇叔叔5 小时前
Kubernetes 核心概念:集群架构、核心组件与资源对象
docker·容器·kubernetes·k8s
rustfs6 小时前
MinIO 国产开源平替正式 GA
分布式·docker·云原生·rust
阿里云云原生10 小时前
云原生可观测性进阶:利用 MCP ToolSets 实现 Agent 在复杂排障场景中的安全与高效协作
云原生
wdfk_prog10 小时前
ROS教程07:从 ros::start() 顺着源码读懂 Master、XML-RPC 与 Topic 注册发现
运维·缓存·docker·容器·ros
两点王爷12 小时前
常用的 Docker 镜像拉取地址仓库及常用命令详解
运维·服务器·容器
wdfk_prog12 小时前
用 Git Submodule + Sparse Checkout 管理 RT-Thread:内核、BSP、第三方库与业务代码分层实践
运维·缓存·docker·容器·ros
努力努力再努力wz12 小时前
【Docker入门系列】镜像为什么能复用?一文吃透 Docker Image、Registry、运行时架构与常用命令
缓存·docker·容器
运维老郭12 小时前
别再被 accept 骗了:TCP 连接到底开不开新端口?一次讲透
云原生
weixin_4202841413 小时前
Kubernetes 开发自定义CRD资源
云原生·kubernetes·kubelet
程序员天天困13 小时前
RustFS 1.0.0 深度解析:GA 之后,它值得替代 MinIO 吗?
后端·云原生·rust