diff --git a/content/zh/docs/concepts/services-networking/service-traffic-policy.md b/content/zh/docs/concepts/services-networking/service-traffic-policy.md new file mode 100644 index 00000000000..f52f073d2eb --- /dev/null +++ b/content/zh/docs/concepts/services-networking/service-traffic-policy.md @@ -0,0 +1,128 @@ +--- +title: 服务内部流量策略 +content_type: concept +weight: 45 +--- + + + + +{{< feature-state for_k8s_version="v1.21" state="alpha" >}} + + +_服务内部流量策略_ 开启了内部流量限制,只路由内部流量到和发起方处于相同节点的服务端点。 +这里的”内部“流量指当前集群中的 Pod 所发起的流量。 +这种机制有助于节省开销,提升效率。 + + + + +## 使用服务内部流量策略 {#using-service-internal-traffic-policy} + + +一旦你启用了 `ServiceInternalTrafficPolicy` 这个 +[特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates/), +你就可以通过将 {{< glossary_tooltip text="Services" term_id="service" >}} 的 +`.spec.internalTrafficPolicy` 项设置为 `Local`, +来为它指定一个内部专用的流量策略。 +此设置就相当于告诉 kube-proxy 对于集群内部流量只能使用本地的服务端口。 + + +{{< note >}} +如果某节点上的 Pod 均不提供指定 Service 的服务端点, +即使该 Service 在其他节点上有可用的服务端点, +Service 的行为看起来也像是它只有 0 个服务端点(只针对此节点上的 Pod)。 +{{< /note >}} + + +以下示例展示了把 Service 的 `.spec.internalTrafficPolicy` 项设为 `Local` 时, +Service 的样子: + + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: my-service +spec: + selector: + app: MyApp + ports: + - protocol: TCP + port: 80 + targetPort: 9376 + internalTrafficPolicy: Local +``` + + +## 工作原理 {#how-it-works} + + +kube-proxy 基于 `spec.internalTrafficPolicy` 的设置来过滤路由的目标服务端点。 +当它的值设为 `Local` 时,只选择节点本地的服务端点。 +当它的值设为 `Cluster` 或缺省时,则选择所有的服务端点。 +启用[特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates/) +`ServiceInternalTrafficPolicy` 后, +`spec.internalTrafficPolicy` 的值默认设为 `Cluster`。 + + +## 限制 {#constraints} + + +* 在一个Service上,当 `externalTrafficPolicy` 已设置为 `Local`时,服务内部流量策略无法使用。 + 换句话说,在一个集群的不同 Service 上可以同时使用这两个特性,但在一个 Service 上不行。 + +## {{% heading "whatsnext" %}} + + +* 请阅读[启用拓扑感知提示](/zh/docs/tasks/administer-cluster/enabling-topology-aware-hints) +* 请阅读[Service 的外部流量策略](/zh/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) +* 请阅读[用 Service 连接应用](/zh/docs/concepts/services-networking/connect-applications-service/)