Kubernetes DNS解析实战过程

 更新时间:2025年09月24日 09:08:43   作者:CN-FuWei  
Kubernetes中,Pod需Ready状态才会被CoreDNS解析,而Service创建时即添加记录,当服务依赖Pod解析时易引发启动死循环,通过设置Service的publishNotReadyAddresses为true,可解决此问题,允许未就绪Pod的IP立即被解析

一、前言

Pod 的解析记录

只有当 Pod 通过就绪探针(Readiness Probe)并成为 Ready 状态时,它才会被加入到对应的 Endpoint 对象中,CoreDNS 才会提供该 Pod 的 DNS 记录(仅限于 hostname.subdomain.namespace.svc.cluster.local 这种格式)。

Service 的解析记录

Service 的解析记录在 Service 对象本身被创建 时就会立刻添加到 CoreDNS 中,完全不依赖 其后端是否有任何就绪的 Pod。

二、场景

由于k8s原生机制受限,当我们某些服务在启动时就依赖pod域名解析,才能完成启动,这时就陷入死循环。

比如etcd集群的启动配置:

三、解决方案

service新增配置

apiVersion: v1
kind: Service
metadata:
  name: kuboard-etcd
spec:
  clusterIP: None  
  publishNotReadyAddresses: true     # 核心配置:发布未就绪地址
  selector:
    app: kuboard-etcd
  ports:
  - name: client
    port: 2379
    protocol: TCP
    targetPort: 2379
  - name: peer
    port: 2380
    protocol: TCP
    targetPort: 2380
  sessionAffinity: Node
  type: ClusterIP 

当你为 Service 设置 publishNotReadyAddresses: true 时,无论 Pod 是否就绪,只要它匹配 Service 的 Selector,其 IP 地址就会被加入到 Endpoint 的 addresses 列表中。

这意味着 CoreDNS 会立即为这些未就绪的 Pod 创建对应的 DNS 解析记录。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • k8s pod获取ip地址实现方式

    k8s pod获取ip地址实现方式

    本文介绍了Kubernetes网络模型中各种网络组件的作用和交互方式,包括CRI、CNI接口,IPAM(IPAddressManagement),以及kubelet、cri、cni调用过程,Kubernetes通过这些组件确保每个Pod都有唯一的IP地址,并能够进行有效的通信
    2026-02-02
  • KubeSphere中部署Wiki系统wiki.js并启用中文全文检索

    KubeSphere中部署Wiki系统wiki.js并启用中文全文检索

    这篇文章主要为大家介绍了KubeSphere中部署Wiki系统wiki.js并启用中文全文检索实现过程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 虚拟化和云计算的区别分析

    虚拟化和云计算的区别分析

    这篇文章主要介绍了虚拟化和云计算的区别,深入浅出的列举分析了虚拟化与云计算的几点常见区别,需要的朋友可以参考下
    2016-10-10
  • kubernetes之statefulset搭建MySQL集群

    kubernetes之statefulset搭建MySQL集群

    这篇文章主要为大家介绍了kubernetes之statefulset搭建MySQL集群示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 非root用户管理k8s和docker容器详解

    非root用户管理k8s和docker容器详解

    文章介绍了如何通过创建非root用户(如ops用户)并配置kubectl权限,结合RBAC限制访问范围,实现安全管理K8s集群;同时通过将用户加入docker组,无需root权限即可操作Docker容器
    2025-09-09
  • k8s中的多网卡方案multus

    k8s中的多网卡方案multus

    这篇文章主要介绍了k8s中的多网卡方案multus,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 在Kubernetes上部署高可用MinIO集群方式

    在Kubernetes上部署高可用MinIO集群方式

    文章介绍了MinIO的分布式架构及其在开发测试和生产环境中的应用,重点讲解了分布式集群模式的核心组件和部署步骤,并通过验证集群状态来确保服务的高可用性和可靠性
    2025-11-11
  • 在AWS-EC2中安装Minikube集群的详细过程

    在AWS-EC2中安装Minikube集群的详细过程

    这篇文章主要介绍了在AWS-EC2中安装Minikube集群,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • k8s Ingress实现流量路由规则控制的定义格式类型

    k8s Ingress实现流量路由规则控制的定义格式类型

    这篇文章主要为大家介绍了k8s Ingress 实现流量路由规则控制的定义格式及类型详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 云原生技术kubernetes之volumes容器的使用

    云原生技术kubernetes之volumes容器的使用

    这篇文章主要为大家介绍了云原生技术kubernetes之volumes容器使用方式, 有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03

最新评论