1.1 Service
Service 是软件服务(例如 mysql)的命名抽象,包含代理要侦听的本地端口(例如 3306)和一个选择算符,选择算符用来确定哪些 Pod 将响应通过代理发送的请求。
Service几种模式:
-
ClusterIP
适用于集群内部的服务间通信。
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
-
NodePort
适用于需要从集群外部通过node节点的映射访问服务的场景。
api版version: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
type: NodePort
ports:
- protocol: TCP
port: 80
targetPort: 8080
nodePort: 30007
-
LoadBalancer
适用于需要从互联网访问服务的场景。
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 8080
-
Ingress
适用于需要基于路径或主机名路由流量的场景。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: my-app.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
-
ExternalName
将 Service 映射到一个外部名称,通常是一个 DNS 名称。适用于需要将 Kubernetes 服务与外部服务集成的场景。
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: ExternalName
externalName: my-external-service.com
1.2 Endpoints
Endpoints 是实现实际服务的端点的集合。即是通过service发现的后端pods的集合.
1.3 Ingress
Ingress 是允许入站连接到达后端定义的端点的规则集合。
1.4 EndpointSlice
EndpointSlice 是实现某 Service 的端点的子集.
1.5 IngressClass
IngressClass 代表 Ingress 的类,被 Ingress 的规约引用