CloudProvider 插件更新
UK8S 通过 CloudProvider 插件,实现集群中 LoadBalancer 类型服务(SVC)与 安联云 ULB 产品的创建和绑定。
版本问题
- 低于
20.10.1
版本
20.10.1
之前的版本存在 bug,会在 Service 重启时发生误判,导致重复创建 ULB 实例并写入集群,造成集群相应 Service 的不可用。为此我们对 CloudProvider
插件进行了优化,完善 ULB 相关接口的调用逻辑,避免了上述问题的出现。
24.03.13
版本
从 24.03.13
版本开始支持了应用型负载均衡ALB,但是此版本在多个 Service 绑定同一个 ALB 时存在问题,使用此版本的用户建议尽快升级到 24.06.28
。
如您集群 CloudProvider 版本为相关版本,请您务必及时按照文档更新,避免影响业务。升级过程不影响线上业务,但仍建议您在业务闲时进行更新,如有问题请及时与我们联系。
1. 版本查看及插件升级
1.1 控制台操作
针对维护版本之内UK8S 集群可以在控制台管理页面「插件-CloudProvider」页面,开启 CloudProvider 插件升级功能,开启 CloudProvider 插件升级功能会在集群中执⾏ CloudProvider 插件查询任务,⼤约需要 3 分钟,在此过程中请不要操作集群。升级功能开启后,即可看到 CloudProvider 插件版本信息,点击「升级 CloudProvider」即可进行升级。
升级过程约需要 1-3 分钟,升级过程中「当前版本」字段会显示为「升级中」,升级完成后显示最新版本号,如升级失败,可以再次尝试升级,或与我们技术支持联系。
⚠️ 集群 CloudProvider 插件升级时,请勿进行服务发布等操作
1.2 手动升级
如果集群版本不在我们的维护版本之内,控制台将无法直接进行升级,参见:UK8S版本维护说明。
这时候,您可以手动升级cloudprovider,请执行下面的命令:
kubectl apply -f https://docs.an-link.com/uk8s/yaml/cloudprovider/24.06.28.yml
1.3 老版本升级
如果 Kubernetes 版本在 1.14 以前,或者在控制台无法查看到 CloudProvider 版本信息,则需要通过命令行进行升级。
登录您集群的 Master 节点,如执行
systemctl status ucloudcp
是运行状态的话,请务必在3 个 Master 节点关闭二进制程序ucloudcp并更新。
1. 关闭老版本 CloudProvider
请分别登陆3台master节点,执行以下命令
systemctl stop ucloudcp
systemctl disable ucloudcp
2. 需要配置前置ConfigMap
请填写如下相关信息并保存文件为userdata.yaml
。
apiVersion: v1
kind: ConfigMap
metadata:
name: uk8sconfig
namespace: kube-system
data:
UCLOUD_ACCESS_PRIKEY: xxxxxxxxxxxxxxx #API PRIKEY
UCLOUD_ACCESS_PUBKEY: xxxxxxxxxxxxxxx #API_PUBKEY
UCLOUD_API_ENDPOINT: http://api.service.an-link.com
UCLOUD_PROJECT_ID: org-xxxxxx #集群所在的项目ID
UCLOUD_REGION_ID: cn-bj2 #集群所在的地域,参考:https://docs.an-link.com/api/summary/regionlist
UCLOUD_SUBNET_ID: subnet-xxxxxx #集群所在的子网ID
UCLOUD_UK8S_CLUSTER_ID: uk8s-xxxxxx #UK8S集群名称
UCLOUD_VPC_ID: uvnet-xxxxxx #集群所在的VPC ID
3. 请执行创建ConfigMap
kubectl apply -f userdata.yaml
4. 请执行部署 CloudProvider
kubectl apply -f https://docs.an-link.com/uk8s/yaml/cloudprovider/22.07.1.yml
5. 检查是否部署成功
如 Pod 处于非 running 状态,请您及时与我们技术支持联系,更新成功后,即可在控制台查看版本信息并进行后续升级。
kubectl get pod -n kube-system -l app=cloudprovider-ucloud -o wide
2. 变更记录
更新版本:24.06.28
更新时间:2024 年 6 月 28 日
更新内容:
- 修复了多个svc绑定同一个ALB时存在的问题
更新版本:24.03.13
更新时间:2024 年 3 月 14 日
更新内容:
- 支持ALB
更新版本:24.03.5
更新时间:2024 年 3 月 7 日
更新内容:
- 支持ULB4的tcp和udp协议混用
更新版本:23.04.2
更新时间:2023 年 7 月 6 日
更新内容:
- 减少telemetry超时时间,避免telemetry超时影响ULB的正常使用
更新版本:22.10.1
更新时间:2022 年 10 月 25 日
更新内容:
- 优化 ULB Backend 添加逻辑,加快 LoadBalancer 类型的 Service 获取 external IP 的速度
- 优化外网 ULB 绑定的 EIP 的默认带宽配置,如果没有在 Service 中明确指定带宽,将不会更新已有 EIP 的带宽值,对于由 Cloud Provider 新创建的 EIP,仍使用默认带宽。
更新版本:22.07.1
更新时间:2022 年 7 月 15 日
更新内容:
- 优化ULB的查询逻辑,提高修改、删除Service的速度。
- 增加通过EIP进行ULB匹配的兜底逻辑。从而防止因为用户手动修改了ULB名称或备注导致Service无法正确跟ULB匹配而发生ULB重建的问题。
更新版本:22.06.2
更新时间:2022 年 6 月 28 日
更新内容:
- 修复当 service 的 externalTrafficPolicy 属性为 Local,缺少 ULB ID 信息注入的缺陷
更新版本:22.06.1
更新时间:2022 年 6 月 10 日
更新内容:
- 更新依赖的 cloud provider 框架更新至v0.20.15,以引入kubernetes/cloud-provider#38 使得节点状态更新能够尽快的通知到cloud provider master、unready 以及具有 “node.kubernetes.io/exclude-from-external-load-balancers” label的节点不会加入到 lb 的 rs 中,而不再根据SchedulingDisabled 状态(k8s cloud provider 框架升级带来行为变化)
更新版本:21.10.2
更新时间:2021 年 11 月 4 日
更新内容:
- 优化了对 ULB 名称的校验,修复首次创建 VServer 失败导致 Service 无法创建的问题
更新版本:21.10.1
更新时间:2021 年 10 月 14 日
更新内容:
- 使用指定 ULB 创建 LoadBalancer 类型 Service 时,不能指定由 CloudProvider 创建的 ULB。
更新版本:21.05.2
更新时间:2021 年 5 月 28 日
更新内容:
- 加上 Endpoint Controller,感知 Endpoint 变化,在 externalTrafficPolicy=Local 的情况下,只会将运行了 Pod 的主机节点加入 ULB VServer Backends。
- **注意:**Endpoint 频繁变动会导致 ULB API 大量调用,需要在 cloudprovider 中添加如下参数,做限速处理。如需要调整参数,则必须通过命令行的方式,对插件进行调整。
containers:
- name: cloudprovider-ucloud
image: uhub.an-link.com/uk8s/cloudprovider-ucloud:21.05.2
args:
- "--endpoint-updates-batch-period=10" ## 所有 Endpoint 事件每隔 N 秒处理一次,默认为 10
更新版本:21.05.1
更新时间:2021 年 5 月 11 日
更新内容:
annotations:
## 以下参数仅对 UDP 类型 ULB 生效
service.beta.kubernetes.io/ucloud-load-balancer-vserver-monitor-type: "customize" ## 设置健康检查类型为 customize,代表 UDP 健康检查
service.beta.kubernetes.io/ucloud-load-balancer-vserver-monitor-reqmsg: "" ## 代表 UDP 健康检查发出的请求报文
service.beta.kubernetes.io/ucloud-load-balancer-vserver-monitor-respmsg: "" ## 代表 UDP 健康检查请求应收到的响应报文
更新版本:21.04.1
更新时间:2021 年 4 月 22 日
更新内容:
- 可通过 Service Annotation,为节点添加注释,设定其在被设置为不可调度(即执行 Cordon 节点操作)后,不会自动被 ULB 剔除
annotations:
## 默认为 'true',设置为 'false' 后节点不可调度时不会自动被 ULB 剔除
service.beta.kubernetes.io/ucloud-load-balancer-remove-unscheduled-backend: "false"
更新版本:21.02.1
更新时间:2021 年 2 月 6 日
更新内容:
- 支持内网 ULB7
- 支持 ULB7 的 TCP 模式
更新版本:20.10.2
更新时间:2020年10月29日
更新内容:
- 更新支持创建指定子网的ULB,详细设置请查看通过内网ULB访问Service。
更新版本:20.10.1
更新时间:2020年10月20日
更新内容:
- 动态创建成功LoadBalancer类型的Service后,插件将把关联的ULB Id注入到Service的Annotations中,以规避因API超时等导致的ULB重建。
更新版本:20.09.4
更新时间:2020年9月18日
变更内容:
- 升级安联云 Go SDK修复ULB防火墙设置,
- 增加新创建时,使用临时的ULB客户端进行API调用。
更新版本:20.09.3
更新时间:2020年9月17日
变更内容:
- 更新监控信息(非强制更新)。
更新版本:20.09.2
更新时间:2020年9月8日
变更内容:
- 增加cloudprovider重启后调用ULB相关接口的容错性,提高集群的运行的稳定性。