在 Kubernetes 中,无选择器服务是一种服务类型,它允许您为一个服务提供稳定的 DNS 名称和 IP 地址,但不会将任何流量路由到后端 Pod。这对于需要与其他服务通信的应用程序非常有用。
下面是一个简单的示例:
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
clusterIP: None # 指定 ClusterIP 为 None 表示创建一个无选择器服务
ports:
- name: http
port: 80
targetPort: 9376
在上面的示例中,我们创建了一个名为 my-service
的无选择器服务。该服务没有标签选择器,并且 clusterIP
属性设置为 None
。
使用此配置文件部署该服务后,您可以从其他应用程序中访问 my-service
的 DNS 名称和 IP 地址。但是,请注意,该服务并不会将任何流量路由到后端 Pod 上。
您可以通过其他方式向无选择器服务添加绑定的 Pod 端口以及相关联的协议(TCP 或 UDP),但不能指定标签选择器来确定哪些 Pod 可以接收流量。例如:
apiVersion: v1
kind: Service
metadata:
name: my-service-2
spec:
clusterIP: None # 指定 ClusterIP 为 None 表示创建一个无选择器服务
ports:
- name: http-1
port: 80 # 外部暴露的端口
targetPort: 9376 # 绑定的 Pod 端口
protocol: TCP # 协议为 TCP
- name: http-2
port: 81 # 外部暴露的端口
targetPort: 9377 # 绑定的 Pod 端口
protocol: UDP # 协议为 UDP
在上面的示例中,我们创建了一个名为 my-service-2
的无选择器服务,并指定了两个绑定的端口(一个用于 TCP,另一个用于 UDP)。但是,请注意,该服务仍然不会将任何流量路由到后端 Pod 上。