AKS 标准负载均衡器 TCP 重置注释
AKS Standard Load Balancer TCP Reset Annotations
我们正在升级 AKS 集群,以便使用最近正式发布的标准 SKU 负载均衡器。请参阅此 Microsoft Update Notification。以前只有基本的 SKU 负载平衡器可用,它们不允许我们在连接失效时发送 TCP 重置。例如,这导致了很多创造性的工作来处理连接池中的陈旧连接。
因此,在创建入口期间,我可以使用注释配置负载均衡器。例如,我可以使用注释将类型设置为内部和超时设置。然而,似乎不可能通过注释将 TCP 重置标志设置为 true。我在这个 Go Walker 页面中挖掘了一些注释列表。
我已经成功地使用以下 yaml 创建了一个入口控制器。 注意注释。
controller:
service:
loadBalancerIP: 172.15.23.100
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
service.beta.kubernetes.io/azure-load-balancer-tcp-idle-timeout: "15"
我运行以下命令:
helm install stable/nginx-ingress --namespace ingress -f dev-ingress.yaml --name dev-ingress --set controller.replicaCount=3
大约一分钟后,我可以看到内部负载均衡器正在获取指定的 IP 地址,我也可以在控制台上看到它,如下所示:
kubectl -n ingress get svc dev-ingress-nginx-ingress-controller
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
dev-ingress-nginx-ingress-controller LoadBalancer 172.15.24.11 172.15.23.100 80:30962/TCP,443:30364/TCP 24m app=nginx-ingress,component=controller,release=dev-ingress
但是,负载平衡规则是在 TCP 重置为 false 的情况下创建的。这需要我登录控制台并进行更改。请参阅下面的屏幕截图:
我真的很想将其编写到创建中,因为通过接口执行操作会导致 Snowflake 部署。
类似于下面的 yaml:
controller:
service:
loadBalancerIP: 172.15.23.100
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
service.beta.kubernetes.io/azure-load-balancer-tcp-idle-timeout: "15"
service.beta.kubernetes.io/azure-load-balancer-tcp-reset: "true"
有人知道我在 service/ingress 创建期间如何配置它吗?
更新:
根据 TCP Reset setting for loadbalancers 文档中记录的限制,kubectl 似乎不支持它。但是,它还表示不支持该门户。
看到 this file 没有这样的注释 我会得出结论,这还不可能通过注释实现。你必须想出其他办法,或者向 kubernetes 创建一个 pull request 来支持这样的注释
你可以看看Cloud provider for Azure。它提供了一个注释来设置负载均衡器规则的 TCP 重置,但它仅适用于 1.16 或更高版本,AKS 的最新版本是 1.15。
如果你真的想用的话,可以使用aks-engine来达到你的目的。 aks-engine 已经支持 Kubernetes 1.16 版本。请记住,使用标准负载均衡器创建 aks-engine 集群。
我们正在升级 AKS 集群,以便使用最近正式发布的标准 SKU 负载均衡器。请参阅此 Microsoft Update Notification。以前只有基本的 SKU 负载平衡器可用,它们不允许我们在连接失效时发送 TCP 重置。例如,这导致了很多创造性的工作来处理连接池中的陈旧连接。
因此,在创建入口期间,我可以使用注释配置负载均衡器。例如,我可以使用注释将类型设置为内部和超时设置。然而,似乎不可能通过注释将 TCP 重置标志设置为 true。我在这个 Go Walker 页面中挖掘了一些注释列表。
我已经成功地使用以下 yaml 创建了一个入口控制器。 注意注释。
controller:
service:
loadBalancerIP: 172.15.23.100
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
service.beta.kubernetes.io/azure-load-balancer-tcp-idle-timeout: "15"
我运行以下命令:
helm install stable/nginx-ingress --namespace ingress -f dev-ingress.yaml --name dev-ingress --set controller.replicaCount=3
大约一分钟后,我可以看到内部负载均衡器正在获取指定的 IP 地址,我也可以在控制台上看到它,如下所示:
kubectl -n ingress get svc dev-ingress-nginx-ingress-controller
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
dev-ingress-nginx-ingress-controller LoadBalancer 172.15.24.11 172.15.23.100 80:30962/TCP,443:30364/TCP 24m app=nginx-ingress,component=controller,release=dev-ingress
但是,负载平衡规则是在 TCP 重置为 false 的情况下创建的。这需要我登录控制台并进行更改。请参阅下面的屏幕截图:
我真的很想将其编写到创建中,因为通过接口执行操作会导致 Snowflake 部署。
类似于下面的 yaml:
controller:
service:
loadBalancerIP: 172.15.23.100
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
service.beta.kubernetes.io/azure-load-balancer-tcp-idle-timeout: "15"
service.beta.kubernetes.io/azure-load-balancer-tcp-reset: "true"
有人知道我在 service/ingress 创建期间如何配置它吗?
更新:
根据 TCP Reset setting for loadbalancers 文档中记录的限制,kubectl 似乎不支持它。但是,它还表示不支持该门户。
看到 this file 没有这样的注释 我会得出结论,这还不可能通过注释实现。你必须想出其他办法,或者向 kubernetes 创建一个 pull request 来支持这样的注释
你可以看看Cloud provider for Azure。它提供了一个注释来设置负载均衡器规则的 TCP 重置,但它仅适用于 1.16 或更高版本,AKS 的最新版本是 1.15。
如果你真的想用的话,可以使用aks-engine来达到你的目的。 aks-engine 已经支持 Kubernetes 1.16 版本。请记住,使用标准负载均衡器创建 aks-engine 集群。