Service:Kubernetes服务发现与负载均衡详解

Service:服务发现与负载均衡

前言

Service是Kubernetes中用于服务发现和负载均衡的核心资源,为一组Pod提供稳定的网络访问。

Service类型

1. ClusterIP(默认)


apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: ClusterIP
  selector:
    app: myapp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080

2. NodePort


apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: NodePort
  selector:
    app: myapp
  ports:
  - port: 80
    targetPort: 8080
    nodePort: 30080

3. LoadBalancer


apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: LoadBalancer
  selector:
    app: myapp
  ports:
  - port: 80
    targetPort: 8080

4. ExternalName


apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: ExternalName
  externalName: external.database.example.com

Service工作原理


Client --> Service (10.96.0.1:80) --> Pod1:8080
                                    --> Pod2:8080
                                    --> Pod3:8080

服务发现

DNS自动注册


# 自动生成DNS名称
# ..svc.cluster.local

# 集群内访问
curl http://my-service.default.svc.cluster.local

# 同namespace访问
curl http://my-service

Headless Service


apiVersion: v1
kind: Service
metadata:
  name: headless-service
spec:
  clusterIP: None
  selector:
    app: myapp
  ports:
  - port: 80

多端口Service


apiVersion: v1
kind: Service
metadata:
  name: multi-port-service
spec:
  selector:
    app: myapp
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 8080
  - name: https
    protocol: TCP
    port: 443
    targetPort: 8443

发表回复

后才能评论