codecamp

Kubernetes 服务内部流量策略

服务内部流量策略

FEATURE STATE: Kubernetes v1.23 [beta]

服务内部流量策略 开启了内部流量限制,只路由内部流量到和发起方处于相同节点的服务端点。 这里的”内部“流量指当前集群中的 Pod 所发起的流量。 这种机制有助于节省开销,提升效率。

使用服务内部流量策略

ServiceInternalTrafficPolicy ​特性门控 是 Beta 功能,默认启用。 启用该功能后,你就可以通过将 Services 的 ​.spec.internalTrafficPolicy​ 项设置为 ​Local​, 来为它指定一个内部专用的流量策略。 此设置就相当于告诉 kube-proxy 对于集群内部流量只能使用本地的服务端口。

如果某节点上的 Pod 均不提供指定 Service 的服务端点, 即使该 Service 在其他节点上有可用的服务端点, Service 的行为看起来也像是它只有 0 个服务端点(只针对此节点上的 Pod)。

以下示例展示了把 Service 的 ​.spec.internalTrafficPolicy​ 项设为 ​Local ​时, Service 的样子:

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376
  internalTrafficPolicy: Local

工作原理

kube-proxy 基于 ​spec.internalTrafficPolicy​ 的设置来过滤路由的目标服务端点。 当它的值设为 ​Local ​时,只选择节点本地的服务端点。 当它的值设为 ​Cluster ​或缺省时,则选择所有的服务端点。 启用特性门控 ​ServiceInternalTrafficPolicy ​后, ​spec.internalTrafficPolicy​ 的值默认设为 ​Cluster​。

限制

  • 在一个Service上,当 ​externalTrafficPolicy ​已设置为 ​Local​时,服务内部流量策略无法使用。 换句话说,在一个集群的不同 Service 上可以同时使用这两个特性,但在一个 Service 上不行。


Kubernetes 拓扑感知提示
Kubernetes 端点切片(Endpoint Slices)
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Kubernetes 管理集群

Kubernetes Service

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }