【博客469】k8s使用ServiceTopology实现流量拓扑
使用前提:实现:仅路由到节点本地端点的一种服务。如果节点上不存在端点,流量则被丢弃:首选节点本地端点,如果节点本地端点不存在,则回退到集群范围端点的一种服务:首选地域端点而不是区域端点的一种服务。 如果以上两种范围内均不存在端点, 流量则被丢弃。优先选择节点本地端点,地域端点,然后是区域端点,最后才是集群范围端点的 一种服务。...
·
k8s使用ServiceTopology实现流量拓扑
使用前提:
在kube-proxy,apiserver,kube-controller-manager,scheduler四个组件中开启:
–feature-gates="ServiceTopology=true`
场景:
1、希望pod访问service的时候,优先转发给service后端中跟源pod在同一node上的目的pod
2、希望pod访问service的时候,优先转发给service后端中跟源pod在同一zone上的目的pod
3、希望pod访问service的时候,优先转发给service后端中跟源pod在同一region上的目的pod
实现:
仅路由到节点本地端点的一种服务。如果节点上不存在端点,流量则被丢弃:
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 9376
topologyKeys:
- "kubernetes.io/hostname"
首选节点本地端点,如果节点本地端点不存在,则回退到集群范围端点的一种服务:
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 9376
topologyKeys:
- "kubernetes.io/hostname"
- "*"
首选地域端点而不是区域端点的一种服务。 如果以上两种范围内均不存在端点, 流量则被丢弃。
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 9376
topologyKeys:
- "topology.kubernetes.io/zone"
- "topology.kubernetes.io/region"
优先选择节点本地端点,地域端点,然后是区域端点,最后才是集群范围端点的 一种服务。
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 9376
topologyKeys:
- "kubernetes.io/hostname"
- "topology.kubernetes.io/zone"
- "topology.kubernetes.io/region"
- "*"
更多推荐
已为社区贡献51条内容
所有评论(0)