1. 程式人生 > 實用技巧 >K8S headless service服務詳解

K8S headless service服務詳解

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