K8S headless service服務詳解
阿新 • • 發佈:2020-11-24
一、headless和ClusterIP的區別
CoreDNS的作用:在K8S裡,我們想要通過name來訪問服務的方式就是在Deployment上面新增一層Service,這樣我們就可以通過Service name來訪問服務了,那其中的原理就是和CoreDNS有關,它將Service name解析成Cluster IP,
這樣我們訪問Cluster IP的時候就通過Cluster IP作負載均衡,把流量分佈到各個POD上面
K8s中資源的全域性FQDN格式:
Service_NAME.NameSpace_NAME.Domain.LTD.
Domain.LTD.=svc.cluster.local. #這是預設k8s叢集的域名。
1、clusterip舉例
ClusterIP
的原理:一個Service
可能對應多個EndPoint(Pod)
,client
訪問的是Cluster IP
,通過iptables
規則轉到Real Server
,從而達到負載均衡的效果
備註: 從上面的結果中我們可以看到雖然Service
有2個endpoint
,但是dns
查詢時只會返回Service
的地址。
具體client
訪問的是哪個Real Server,是由
iptables
來決定的
2、headless舉例
解釋:dns
查詢會如實的返回2個真實的endpoint
headless使用場景
第一種:自主選擇權,有時候client
Real Server
,可以通過查詢DNS
來獲取Real Server
的資訊。
第二種:Headless Service
的對應的每一個Endpoints
,即每一個Pod
,都會有對應的DNS
域名;這樣Pod
之間就能互相訪問,叢集也能單獨訪問pod