Service 内部流量策略

如果集群中的两个 Pod 需要通信,并且这两个 Pod 实际上都运行在同一个节点上,可以使用 Service 内部流量策略 (Service Internal Traffic Policy) 将网络流量保持在该节点内。避免通过集群网络进行往返通信有助于提高可靠性、性能(网络延迟和吞吐量)或降低成本。
功能状态: Kubernetes v1.26 [稳定]

Service 内部流量策略 能够限制内部流量,使其仅路由到流量来源节点内的端点。此处的“内部”流量是指源自当前集群中 Pod 的流量。这有助于降低成本并提高性能。

使用 Service 内部流量策略

你可以通过将 Service.spec.internalTrafficPolicy 设置为 Local,来启用仅限内部的流量策略。这会指示 kube-proxy 仅将节点本地端点用于集群内部流量。

说明

对于在没有给定 Service 端点的节点上的 Pod,即使该服务在其他节点上有端点,该 Service 的表现也会如同没有端点(对于此节点上的 Pod 而言)一样。

以下示例展示了当设置 .spec.internalTrafficPolicyLocal 时 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)