我们正在升级我们的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。这需要我登录控制台并进行更改。请参见下面的屏幕截图:
我真的很想将其编写到脚本中,因为通过接口执行操作会导致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不支持它。但是,它也表示不支持该门户。
答案 0 :(得分:2)
看到this file没有这样的注释,我会得出结论,这对于注释是不可能的。您将不得不另辟way径,或者创建对kubernetes的拉取请求以支持此类注释
答案 1 :(得分:2)
您可以查看Cloud provider for Azure。它提供了用于设置负载均衡器规则的TCP重置的注释,但仅适用于1.16版或更高版本,而AKS的最新版本为1.15。
如果您真的想使用aks-engine,可以使用它。 aks引擎已经支持Kubernetes的1.16版本。请记住,使用标准负载均衡器创建aks-engine集群。