Service 内部流量策略
如果集群中的两个 Pod 想要通信,并且这两个 Pod 实际上都在同一个节点上运行,请使用服务内部流量策略将网络流量保留在该节点内。避免通过集群网络往返可以帮助提高可靠性、性能(网络延迟和吞吐量)或降低成本。
功能状态:
Kubernetes v1.26 [稳定]服务内部流量策略能够启用内部流量限制,仅将内部流量路由到与流量来源节点相同的端点。这里的“内部”流量是指来自当前集群中的 Pod 的流量。这有助于降低成本并提高性能。
使用服务内部流量策略
可以通过将其 .spec.internalTrafficPolicy 设置为 Local 来为 Service 启用仅内部流量策略。这告诉 kube-proxy 仅对集群内部流量使用节点本地端点。
说明
对于没有给定 Service 端点的节点上的 Pod,该 Service 的行为就像它没有端点一样(对于此节点上的 Pod),即使该 Service 在其他节点上确实有端点。以下示例显示了将 .spec.internalTrafficPolicy 设置为 Local 时的 Service 样式
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app.kubernetes.io/name: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376
internalTrafficPolicy: Local
工作原理
kube-proxy 根据 spec.internalTrafficPolicy 设置过滤它路由到的端点。当设置为 Local 时,仅考虑节点本地端点。当设置为 Cluster(默认值)或未设置时,Kubernetes 会考虑所有端点。
接下来
- 阅读关于 拓扑感知路由 的内容
- 阅读关于 服务外部流量策略 的内容
- 遵循 使用服务连接应用程序 教程
上次修改时间 2023 年 8 月 20 日下午 10:58 PST:修复链接 (07f224714a)