Headless Services無頭服務

2022-02-02 21:58:04 字數 3205 閱讀 9872

headless services是一種特殊的service,其spec:clusterip表示為none,這樣在實際執行時就不會被分配clusterip。也被稱為無頭服務。

1、headless service和普通service的區別

headless不分配clusterip

headless service可以通過解析service的dns,返回所有pod的位址和dns(statefulset部署的pod才有dns)

普通的service,只能通過解析service的dns返回service的clusterip

2、statefulset和deployment控制器的區別

statefulset下的pod有dns位址,通過解析pod的dns可以返回pod的ip

deployment下的pod沒有dns

3、普通service解析service的dns結果

service的clusterip工作原理:乙個service可能對應一組endpoints(所有pod的位址+埠),client訪問clusterip,通過iptables或者ipvs**到real server(pod),具體操作如下

[root@master01 ~]# kubectl get svc -n ms   #獲取所有svc,看到gateway這個service的clusterip是10.0.0.14

name type cluster-ip external-ip port(s) age

eureka clusterip none 8888/tcp 21h

gateway clusterip 10.0.0.14 9999/tcp 20h

mysql-production clusterip 10.0.0.251 3306/tcp 23h

portal clusterip 10.0.0.124 8080/tcp 17h

[root@master01 ~]# kubectl describe svc gateway -n ms #看到gateway這個service的具體資訊

name: gateway

namespace: ms

,"name":"gateway","namespace":"ms"},"spec":,"name":"eureka","namespace":"ms"},"spec":,"name":"eureka","namespace":"ms"},"spec":{"clusterip":"none","ports":[{"n...

type: clusterip

ip: none

port: eureka 8888/tcp

targetport: 8888/tcp

endpoints: 10.244.1.210:8888,10.244.1.211:8888,10.244.2.45:8888

session affinity: none

events: [root@master01 ~]# kubectl exec -it gateway-6cd76c98fb-8w92t -n ms sh

/ # nslookup eureka.ms.svc.cluster.local

nslookup: can't resolve '(null)': name does not resolve

name: eureka.ms.svc.cluster.local

address 1: 10.244.1.211 eureka-2.eureka.ms.svc.cluster.local

address 2: 10.244.1.210 eureka-0.eureka.ms.svc.cluster.local

address 3: 10.244.2.45 eureka-1.eureka.ms.svc.cluster.local

/ # nslookup eureka-2.eureka.ms.svc.cluster.local

nslookup: can't resolve '(null)': name does not resolve

name: eureka-2.eureka.ms.svc.cluster.local

address 1: 10.244.1.211 eureka-2.eureka.ms.svc.cluster.local

/ # nslookup eureka-1.eureka.ms.svc.cluster.local

nslookup: can't resolve '(null)': name does not resolve

name: eureka-1.eureka.ms.svc.cluster.local

address 1: 10.244.2.45 eureka-1.eureka.ms.svc.cluster.local

/ # nslookup eureka-0.eureka.ms.svc.cluster.local

nslookup: can't resolve '(null)': name does not resolve

name: eureka-0.eureka.ms.svc.cluster.local

address 1: 10.244.1.210 eureka-0.eureka.ms.svc.cluster.local

如上,eureka就是我們場景的statefulset,對應的pod就是eureka-0,eureka-1,eureka-2,他們之間能互相訪問,這樣對於一些集群型別的應用就可以解決互相身份識別的問題了

1.headless service會為關聯的pod分配乙個域

.$.svc.cluster.local

2.statefulset會為關聯的pod保持乙個不變的pod name

statefulset中pod的hostname格式為$(statefulset name)-$(pod序號)

3.statefulset會為關聯的pod分配乙個dnsname

$.$.$.svc.cluster.local

官網介紹

無頭的蒼蠅

也不知是我的興趣太廣泛,還是太容易厭煩,最近就象乙隻無頭的蒼蠅一樣。我現在的工作是要維護一些在使用vc為vb寫的activex控制項,不過後期的工作肯定是要在。net下程式設計的,不過最近反而不知看什麼書了,也不知道應該學習什麼為好。好乙個。net,說上去簡單,但是裡面的內容還真不少,我最近主要是看...

無頭單鏈表

鍊錶有單鏈表 雙鏈表和雙向迴圈鍊錶,每種鍊錶都有無頭和帶頭兩種,帶頭就是頭結點不存放資料元素 ifndef linklist h define linklist h include stdio.h include assert.h include string.h include malloc.h ...

鍊錶的操作(有頭無頭)

尾插法建立單鏈表 struct node buildlinkedlist int arr,int n return head 頭插法建立單鏈表 struct node buildlinkedlist int arr,int n return head 不帶頭節點的鍊錶操作 返回首次出現x的位置 即查...