跳到内容

服务的不同方面

Kubernetes 服务 资源比人们通常意识到的要复杂得多。当你创建一个服务时,通常集群机制会

  • 为服务本身分配一个集群范围的 IP 地址(它的集群 IP);
  • 为服务分配一个 DNS 名称,解析为集群 IP(它的DNS 名称);
  • 将服务选择器匹配的每个 Pod 分配的单独的集群范围的 IP 地址(端点 IP)收集到服务的端点或端点切片中。
  • 配置网络,以便对集群 IP 的流量将在所有端点 IP 上进行负载均衡。

不幸的是,当考虑网关 API 如何为服务网格工作时,这些实现细节变得非常重要!

GAMMA 计划 工作中,将服务视为包含两个不同的方面变得很有用

  • 服务的前端是集群 IP 及其 DNS 名称的组合。

  • 服务的后端是端点 IP 的集合。(Pod 不是服务后端的一部分,但它们当然与端点 IP 密切相关。)

这两个方面之间的区别至关重要,因为网关网格都需要决定对提及特定服务的请求是否应定向到服务的前面或后面

  • 将请求定向到服务的前面(服务路由)会将选择哪个端点 IP 的决定留给底层网络基础设施(这可能是kube-proxy、服务网格或其他东西)。

  • 将请求定向到服务的后面(端点路由)通常是实现更高级负载均衡决策(例如,网关实现粘性会话)所必需的。

虽然服务路由可能是对 Ana 的路由感知的最直接匹配,但在将网关 API 用于 南北流量东西流量 时,端点路由可能更可预测。 GAMMA 计划 正在努力为这种用例制定正式的指南。