1.什么是Headless Services
Headless Services是一種特殊的service辆毡,其spec:clusterIP表示為None只损,這樣在實際運行時就不會被分配ClusterIP塌衰。
2.Headless Services使用場景(客戶端負載)
服務端負載:正常的service 下面掛的是Endpoints(podIP數組)阀湿,通過iptables規(guī)則轉發(fā)到實際的POD上
客戶端負載:Headless Services不會分配ClusterIP,而是將Endpoints(即podIP數組)返回兔仰,也就將服務端的所有節(jié)點地址返回幢尚,讓客戶端自行要通過負載策略完成負載均衡破停。
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