Kubernetes DNS解析实战过程
一、前言
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查找镜像中jar包的方法(docker查看镜像中的jar)
这篇文章主要给大家介绍了关于阿里云kubernetes查找镜像中jar包的方法,也就是在docker查看镜像中的jar,文中通过图文介绍的非常详细,需要的朋友可以参考下2022-09-09
kubernetes Volume存储卷configMap学习笔记
这篇文章主要为大家介绍了kubernetes Volume存储卷configMap学习笔记,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-05-05


最新评论