Kubernetes之Headless Services(无头服务)

半兽人 发表于: 2021-11-18   最后更新时间: 2021-11-19 00:12:12  
{{totalSubscript}} 订阅, 3,829 游览

Headless Services(无头服务)是一种特殊的service,当不需要负载均衡以及Service IP时,可以通过指定Cluster IP(spec.clusterIP)的值为"None"来创建一个 无头服务(Headless Service)

无头服务(Headless Service)的例子如下:

apiVersion: v1
kind: Service
metadata:
  name: zk-hs
  labels:
    app: zk
spec:
  # 这使得服务成为无头服务
  clusterIP: None
  ports:
  - port: 2888
    name: server
  - port: 3888
    name: leader-election
  selector:
    app: zk

无头服务有一个很重要的场景是发现所有的pod(包括未就绪的pod)

因为只有准备就绪的pod能够作为服务的后端。但有时希望即使pod没有准备就绪,服务发现机制也能够发现所有匹配服务标签选择器的pod。

kind: Service 
metadata:
     annotations:
         service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"

所以,一般中间件(如zk集群)的pod之间需要互相识别之后,进行选举状态才会变为就绪,使用无头服务完美的解决这个问题。

更新于 2021-11-19

查看kubernetes更多相关的文章或提一个关于kubernetes的问题,也可以与我们一起分享文章