Kubernetes?DNS解析實(shí)戰(zhàn)過程
一、前言
Pod 的解析記錄
只有當(dāng) Pod 通過就緒探針(Readiness Probe)并成為 Ready 狀態(tài)時(shí),它才會(huì)被加入到對應(yīng)的 Endpoint 對象中,CoreDNS 才會(huì)提供該 Pod 的 DNS 記錄(僅限于 hostname.subdomain.namespace.svc.cluster.local 這種格式)。
Service 的解析記錄
Service 的解析記錄在 Service 對象本身被創(chuàng)建 時(shí)就會(huì)立刻添加到 CoreDNS 中,完全不依賴 其后端是否有任何就緒的 Pod。
二、場景
由于k8s原生機(jī)制受限,當(dāng)我們某些服務(wù)在啟動(dòng)時(shí)就依賴pod域名解析,才能完成啟動(dòng),這時(shí)就陷入死循環(huán)。
比如etcd集群的啟動(dòng)配置:

三、解決方案
service新增配置
apiVersion: v1
kind: Service
metadata:
name: kuboard-etcd
spec:
clusterIP: None
publishNotReadyAddresses: true # 核心配置:發(fā)布未就緒地址
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 當(dāng)你為 Service 設(shè)置 publishNotReadyAddresses: true 時(shí),無論 Pod 是否就緒,只要它匹配 Service 的 Selector,其 IP 地址就會(huì)被加入到 Endpoint 的 addresses 列表中。
這意味著 CoreDNS 會(huì)立即為這些未就緒的 Pod 創(chuàng)建對應(yīng)的 DNS 解析記錄。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
KubeSphere中部署Wiki系統(tǒng)wiki.js并啟用中文全文檢索
這篇文章主要為大家介紹了KubeSphere中部署Wiki系統(tǒng)wiki.js并啟用中文全文檢索實(shí)現(xiàn)過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
kubernetes之statefulset搭建MySQL集群
這篇文章主要為大家介紹了kubernetes之statefulset搭建MySQL集群示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
在AWS-EC2中安裝Minikube集群的詳細(xì)過程
這篇文章主要介紹了在AWS-EC2中安裝Minikube集群,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
k8s?Ingress實(shí)現(xiàn)流量路由規(guī)則控制的定義格式類型
這篇文章主要為大家介紹了k8s?Ingress?實(shí)現(xiàn)流量路由規(guī)則控制的定義格式及類型詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
云原生技術(shù)kubernetes之volumes容器的使用
這篇文章主要為大家介紹了云原生技術(shù)kubernetes之volumes容器使用方式,?有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03

