Kubernetes服务发现与自我感知机制解析
1. Kubernetes服务类型与手动服务发现
Kubernetes中有多种类型的服务,其中 ClusterIP
类型的服务只能在集群内部访问,它通过匹配选择器来发现Pod,是最常用的服务类型。接下来,我们将探讨其他允许手动指定端点的服务类型。
1.1 手动服务发现
当创建带有选择器的服务时,Kubernetes会在端点资源列表中跟踪匹配且准备好服务的Pod列表。例如,可以使用 kubectl get endpoints random-generator
命令检查代表服务创建的所有端点。
我们也可以将连接重定向到外部IP地址和端口,方法是省略服务的选择器定义并手动创建端点资源,示例如下:
# 无选择器的服务
apiVersion: v1
kind: Service
metadata:
name: external-service
spec:
type: ClusterIP
ports:
- protocol: TCP
port: 80
# 外部服务的端点
apiVersion: v1
kind: Endpoints
metadata:
name: external-service
subsets:
- addresses:
- ip: 1.1.1.1
- ip: 2.2.2.2
ports:
- port: