AKS标准负载均衡器TCP重置注释

时间:2019-12-03 03:39:30

标签: nginx kubernetes-ingress azure-aks

我们正在升级我们的AKS集群,以使用最近通过GA的Standard 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。这需要我登录控制台并进行更改。请参见下面的屏幕截图:

DefaultTCPRule

我真的很想将其编写到脚本中,因为通过接口执行操作会导致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"

有人知道我如何在创建服务/入口时配置它吗?

更新

基于TCP Reset setting for loadbalancers文档中记录的限制,看来kubectl不支持它。但是,它也表示不支持该门户。

2 个答案:

答案 0 :(得分:2)

看到this file没有这样的注释,我会得出结论,这对于注释是不可能的。您将不得不另辟way径,或者创建对kubernetes的拉取请求以支持此类注释

答案 1 :(得分:2)

您可以查看Cloud provider for Azure。它提供了用于设置负载均衡器规则的TCP重置的注释,但仅适用于1.16版或更高版本,而AKS的最新版本为1.15。

enter image description here

如果您真的想使用aks-engine,可以使用它。 aks引擎已经支持Kubernetes的1.16版本。请记住,使用标准负载均衡器创建aks-engine集群。

相关问题