首页/云/Kubernetes 速查/无选择器 Service 与手动 Endpoints
网络与服务55 条

无选择器 Service 与手动 Endpoints

Service 不写 selector 时不自动管理后端,由你手动维护 Endpoints/EndpointSlice:用于接外部 IP、跨命名空间后端或迁移期桥接。

Kubernetes 速查云更新于 2026-10-13

没有选择器的服务

服务对象默认通过标签选择器自动发现后端副本,由控制器维护地址列表。当后端不在集群里,或者在另一个命名空间,或者正处于跨集群迁移阶段,可以省略选择器,改由人工维护地址列表。这时服务只提供固定的集群内地址与端口映射能力,后端由你负责。

基本信息

适用平台Kubernetes 1.20+,核心接口组
关键差异省略选择器后系统不再自动维护后端
后端载体地址列表对象与地址分片对象
命名要求后端对象名称必须与服务名称一致
典型用途接管集群外后端、跨命名空间后端、迁移桥接

典型使用场景

  • 把集群外的数据库或第三方接口映射成集群内域名,业务侧不必改配置
  • 后端位于另一个命名空间,需要跨命名空间提供统一入口
  • 数据库从自建迁移到托管服务,用同一服务名平滑切换
  • 多集群场景下把远端集群的服务地址写进本地入口
  • 灰度期把一部分流量指向外部环境做对比验证

无选择器的服务

无选择器的服务
apiVersion: v1
kind: Service
metadata:
  name: external-api
spec:
  ports:
    - port: 443          # 服务对外暴露的端口
      targetPort: 8443   # 映射到后端的端口
  # 不写 selector:后端由下面的地址列表维护

手动维护后端地址

手动维护后端地址
apiVersion: v1
kind: Endpoints
metadata:
  name: external-api    # 必须与服务名称完全一致
subsets:
  - addresses:
      - ip: 10.20.30.40           # 真实可达的地址
      - ip: 10.20.30.41
    ports:
      - port: 8443                # 后端实际监听端口

字段读法

字段含义注意点
服务端口集群内访问使用的端口业务侧配置里写这个端口
目标端口后端实际监听端口写错等于后端全不可用
地址列表后端真实地址与端口需人工保证更新及时
名称一致性后端对象名与服务名相同不一致时静默不生效
地址分片对象由控制器从地址列表自动生成。若直接维护分片对象,控制器可能随后覆盖你的内容,因此优先维护地址列表,或在明确知道后果时再直接操作分片。
人工维护意味着没有自愈能力:后端地址变化后如果没人更新,服务会持续把流量发往失效地址,且对象本身不会报错。

易错点

  • 后端对象名称与服务不一致:配置看起来完整但完全不生效,也没有任何报错提示
  • 地址或端口写错:流量全部发往不可达目标,表现为服务超时
  • 后端变更后忘记更新地址:故障期间没有任何自动发现机制兜底
  • 把人工维护当成长期方案:缺少健康检查与自动摘除,运维成本随后端数量增长

数据来源与参考

  • Kubernetes 官方文档 · Service without selectors
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌