服务内部流量策略
如果集群中的两个 Pod 需要通信,并且它们都运行在同一个节点上,请使用**服务内部流量策略**将网络流量保持在该节点内。避免通过集群网络进行往返可以帮助提高可靠性、性能(网络延迟和吞吐量)或降低成本。
功能状态:
Kubernetes v1.26 [stable]
**服务内部流量策略**支持内部流量限制,仅将内部流量路由到流量源自的节点内的端点。“内部”流量在此处指代源自当前集群中的 Pod 的流量。这有助于降低成本并提高性能。
使用服务内部流量策略
你可以通过将 Service 的 .spec.internalTrafficPolicy
设置为 Local
来启用其内部流量策略。这会告诉 kube-proxy 仅使用节点本地端点进行集群内部流量路由。
注意
对于没有特定服务端点的节点上的 Pod,即使该服务在其他节点上确实有端点,该服务也会表现得好像它(对于此节点上的 Pod 而言)有零个端点一样。以下示例展示了将 .spec.internalTrafficPolicy
设置为 Local
时服务的样子:
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 会考虑所有端点。
下一步
- 阅读 拓扑感知路由
- 阅读 服务外部流量策略
- 请参阅使用 Service 连接应用程序教程
上次修改时间:2023 年 8 月 20 日上午 10:58 PST:修复链接 (07f224714a)