tke上配置创建了clb类型的ingress和service,tke这边的控制器默认都会调clb接口创建一个clb实例,然后将service或者ingress配置同步到clb对应的监听。
由tke这边自动创建的clb实例,clb生命周期都是由tke这边控制器负责管理,并且监听配置也是由tke这边单向同步到clb,也就是说,如果clb被tke的ingress或者service关联,在clb侧修改监听配置,会被tke这边同步配置覆盖。
如果我希望修改ingress或者service对应监听配置,要如何改呢?tke这边为clb类型的service和ingress提供了TkeServiceConfig对象来修改监听配置。
下面我们来说下如何在tke集群快速生成TkeServiceConfig来修改service和ingress的监听配置。
1. 修改service监听配置
集群下有一个测试的clb类型service,这里我们改下监听的请求转发方式和关闭健康检查,自动创建的clb,请求转发方式默认是轮询,健康检查默认是开启的。
TkeServiceConfig支持修改service对应4层监听的参数可以参考文档https://cloud.tencent.com/document/product/457/45490
接下来我们生成下TkeServiceConfig,这里可以自己参考文档写yaml,当然还可以自动生成,推荐自动生成。
代码语言:javascript复制apiVersion: v1
kind: Service
metadata:
annotations:
service.kubernetes.io/loadbalance-id: lb-xxxx
service.kubernetes.io/qcloud-loadbalancer-clusterid: cls-xxx
service.kubernetes.io/qcloud-loadbalancer-internal-subnetid: subnet-xxxx
service.cloud.tencent.com/tke-service-config-auto: "true"
creationTimestamp: "2023-06-03T01:09:58Z"
labels:
k8s-app: nginx
qcloud-app: nginx
.......
在service配置service.cloud.tencent.com/tke-service-config-auto: "true"这个注解就会自动生成TkeServiceConfig。
接下来我们直接改自动生成的TkeServiceConfig修改clb监听配置即可,tke控制台不显示TkeServiceConfig,直接kubeclt命令edit修改。
这里我关闭了健康检查和转发方式为最小连接数,再到clb控制台看看监听配置是否生效。
clb控制台查看监听配置已生效,说明修改配置成功。
这里如何后续service不需要了,删除service,会同步删除对应的TkeServiceConfig。
2. 修改ingress监听配置
集群下有一个测试的内网clb类型ingress,这里我们改下7层监听的健康检查路径,自动创建的clb,健康检查的路径默认就是ingress配置规则的转发路径。
TkeServiceConfig支持修改ingress对应7层监听的参数可以参考文档https://cloud.tencent.com/document/product/457/45700
clb控制台健康检查路径默认是/目录,因为ingress配置转发规则是/根目录,下面我们将http和https监听都改成/checkHealth。
接下来我们给ingress生成下TkeServiceConfig,这里可以自己参考文档写yaml,当然还可以自动生成,推荐自动生成。
代码语言:javascript复制apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
ingress.cloud.tencent.com/direct-access: "false"
ingress.cloud.tencent.com/status.conditions: '[{"type":"Ready","status":"True","lastTransitionTime":"2023-06-03T01:46:26Z","reason":"Success","message":""}]'
kubernetes.io/ingress.class: qcloud
kubernetes.io/ingress.http-rules: '[{"host":"a.com","path":"/","backend":{"serviceName":"springboot","servicePort":"8080"}}]'
kubernetes.io/ingress.https-rules: '[{"host":"a.com","path":"/","backend":{"serviceName":"springboot","servicePort":"8080"}}]'
kubernetes.io/ingress.qcloud-loadbalance-id: lb-xxxx
kubernetes.io/ingress.rule-mix: "true"
kubernetes.io/ingress.subnetId: subnet-xxx
ingress.cloud.tencent.com/tke-service-config-auto: "true"
creationTimestamp: "2023-06-03T01:42:58Z"
在ingress配置ingress.cloud.tencent.com/tke-service-config-auto:"true"这个注解就会自动生成TkeServiceConfig。
接下来我们直接改自动生成的TkeServiceConfig修改clb监听配置即可,tke控制台不显示TkeServiceConfig,直接kubeclt命令edit修改。
我们修改TkeServiceConfig,将监听的健康检查路径改成了/checkHealth,在clb查看是正常生效的,说明修改配置成功。
这里如何后续ingress不需要了,删除ingress,会同步删除对应的TkeServiceConfig。