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.14name 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的位置 即查...