kubernetes的Headless Services

1.什么是Headless Services

Headless Services是一种特殊的service,其spec:clusterIP表示为None,这样在实际运行时就不会被分配ClusterIP。

2.Headless Services使用场景(客户端负载)

服务端负载:正常的service 下面挂的是Endpoints(podIP数组),通过iptables规则转发到实际的POD上
客户端负载:Headless Services不会分配ClusterIP,而是将Endpoints(即podIP数组)返回,也就将服务端的所有节点地址返回,让客户端自行要通过负载策略完成负载均衡。

3.实践

#nginx yaml
[root@node1 yaml]#  cat  nginx.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx-demo
  ports:
  - port: 80
    name: nginx
  clusterIP: None
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: nginx-dp
spec:
  serviceName: "nginx-service"
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx-demo
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
          name: web
[root@node1 ~]# kubectl get svc
NAME            TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
nginx-service   ClusterIP   None         <none>        443/TCP   2d10h
[root@node1 ~]# kubectl describe  service nginx-service
Name:                   nginx-service
Namespace:              default
Labels:                 <none>
Selector:               app=nginx-demo
Type:                   ClusterIP
IP:                     None
Port:                   web     80/TCP
Endpoints:              10.235.1.88:80,10.235.1.89:80
Session Affinity:       None
No events.
[root@node1 ~]# nslookup nginx-demo.default.svc.cluster.local 10.235.1.15
Server:         10.235.1.15
Address:        10.235.1.15#53

Name:   nginx-demo.default.svc.cluster.local
Address: 10.235.1.88
Name:   nginx-demo.default.svc.cluster.local
Address: 10.235.1.89

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容