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

来源:https://www.jianshu.com/p/fe5303b8c1c1

评论

此博客中的热门博文

近期折腾 tailscale 的一些心得

Mifare Classic card(M1)卡破解过程

买二手车选择哪个网络平台好

如何防止Cloudflare CDN背后的图片被盗连(Hotlink Protection)?

Swagger 生成 PHP restful API 接口文档

Docker php安装扩展步骤详解

小成本启动跨境电商教程

订单系统设计的思考(分层篇与状态一致篇)

斐讯 N1 部署 Docker 和 OpenWRT,并利用 Hostapd 开启 Wi-Fi 热点

N1小钢炮安装Zerotier 实现远程访问