Service 内部流量策略
如果集群中的两个 Pod 需要通信,并且这两个 Pod 实际上运行在同一个节点上,则使用**Service 内部流量策略(Service Internal Traffic Policy)**来保持网络流量在该节点内部。避免通过集群网络进行往返可以帮助提高可靠性、性能(网络延迟和吞吐量)或降低成本。
功能状态:
Kubernetes v1.26 [stable]
**Service 内部流量策略(Service Internal Traffic Policy)**允许内部流量限制仅将内部流量路由到流量源自的节点内的端点。这里的“内部”流量是指源自当前集群中 Pod 的流量。这有助于降低成本并提高性能。
使用 Service 内部流量策略
您可以通过设置 Service 的 .spec.internalTrafficPolicy
为 Local
,为其启用仅内部流量策略。这会告诉 kube-proxy 仅对集群内部流量使用节点本地端点。
注意
对于某些节点上没有给定 Service 的端点的 Pods,即使该 Service 在其他节点上有端点,该 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 会考虑所有端点。
下一步
- 阅读关于拓扑感知路由的内容
- 阅读关于Service 外部流量策略的内容
- 遵循通过 Service 连接应用教程
最后修改于 2023 年 8 月 20 日 10:58 AM PST:修复链接 (07f224714a)