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 解析记录。

总结

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

相关文章

  • kubernetes k8s 存储动态挂载配置详解

    kubernetes k8s 存储动态挂载配置详解

    这篇文章主要为大家介绍了kubernetes k8s 存储动态挂载配置详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • 新版k8s拉取镜像失败问题解决办法

    新版k8s拉取镜像失败问题解决办法

    随着Kubernetes 1.23版本的发布,Docker作为默认容器运行时被弃用,转而默认采用Containerd,这一改变意味着用户在使用Kubernetes时,将不再通过Docker来拉取镜像,文中jiang,需要的朋友可以参考下
    2024-10-10
  • 阿里云kubernetes查找镜像中jar包的方法(docker查看镜像中的jar)

    阿里云kubernetes查找镜像中jar包的方法(docker查看镜像中的jar)

    这篇文章主要给大家介绍了关于阿里云kubernetes查找镜像中jar包的方法,也就是在docker查看镜像中的jar,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • kubernetes Volume存储卷configMap学习笔记

    kubernetes Volume存储卷configMap学习笔记

    这篇文章主要为大家介绍了kubernetes Volume存储卷configMap学习笔记,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • k8s中的多网卡方案multus

    k8s中的多网卡方案multus

    这篇文章主要介绍了k8s中的多网卡方案multus,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • K8S修改Pod时间方案详细代码实例

    K8S修改Pod时间方案详细代码实例

    在Kubernetes中,修改Pod的时间通常指的是修改Pod的时区设置,因为Pod的时间戳(如创建时间)是由Kubernetes集群管理的,并且通常不建议直接修改,这篇文章主要介绍了K8S修改Pod时间方案的相关资料,需要的朋友可以参考下
    2025-08-08
  • 一文详解如何高效查看k8s日志

    一文详解如何高效查看k8s日志

    K8S是kubernetes的缩写,是为解决容器服务编排而生的,在运维K8S服务的过程中,经常会遇到各种报错和诊断问题,那么我们一般怎么查看K8S组件的日志,这篇文章主要给大家介绍了关于如何高效查看k8s日志的相关资料,需要的朋友可以参考下
    2023-10-10
  • 云原生技术kubernetes之volumes容器的使用

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

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

    超详细的Kubernetes (k8s)常用命令整理

    这篇文章主要介绍了Kubernetes (k8s)常用命令整理的相关资料,讲解了Kubernetes集群管理、节点资源查看、Pod管理、部署管理、命名空间管理、服务负载均衡、调试排错以及备份恢复等操作的命令,需要的朋友可以参考下
    2025-03-03
  • k8s搭建nfs共享存储实践

    k8s搭建nfs共享存储实践

    本文介绍NFS服务端搭建与客户端配置,涵盖安装工具、目录设置及服务启动,随后讲解K8S中NFS动态存储部署,包括创建命名空间、ServiceAccount、RBAC权限和StorageClass,实现存储验证
    2025-09-09

最新评论