一、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