UK8S 通过 CloudProvider 插件,实现集群中 LoadBalancer 类型服务(SVC)与 UCloud ULB 产品的创建和绑定。
20.10.1 以前版本存在 bug,会在 Service 重启时发生误判,导致重复创建 ULB 实例并写入集群,造成集群相应 Service 的不可用。为此我们对 CloudProvider 插件进行了优化,完善 ULB 相关接口的调用逻辑,避免了上述问题的出现。
如您集群 CloudProvider 版本为相关版本,请您务必及时按照文档更新,避免影响业务。升级过程不影响线上业务,但仍建议您在业务闲时进行更新,如有问题请及时与我们联系。
较新版本(Kubernetes 1.14 以后版本)在 UK8S 集群控制台管理页面「插件-CloudProvider」页面,开启 CloudProvider 插件升级功能,开启 CloudProvider 插件升级功能会在集群中执⾏ CloudProvider 插件查询任务,⼤约需要 3 分钟,在此过程中请不要操作集群。升级功能开启后,即可看到 CloudProvider 插件版本信息,点击「升级 CloudProvider」即可进行升级。
升级过程约需要 1-3 分钟,升级过程中「当前版本」字段会显示为「升级中」,升级完成后显示最新版本号,如升级失败,可以再次尝试升级,或与我们技术支持联系。
⚠️ 集群 CloudProvider 插件升级时,请勿进行服务发布等操作
如果版本在 1.14 以前,或者在控制台无法查看到 CloudProvider 版本信息,则需要通过命令行进行升级。
登录您集群的 Master 节点,如执行
systemctl status ucloudcp
是运行状态的话,请务必在3 个 Master 节点关闭二进制程序ucloudcp并更新。
请分别登陆3台master节点,执行以下命令
systemctl stop ucloudcp
systemctl disable ucloudcp
请填写如下相关信息并保存文件为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.ucloud.cn
UCLOUD_PROJECT_ID: org-xxxxxx #集群所在的项目ID
UCLOUD_REGION_ID: cn-bj2 #集群所在的地域,参考:https://docs.ucloud.cn/api/summary/regionlist
UCLOUD_SUBNET_ID: subnet-xxxxxx #集群所在的子网ID
UCLOUD_UK8S_CLUSTER_ID: uk8s-xxxxxx #UK8S集群名称
UCLOUD_VPC_ID: uvnet-xxxxxx #集群所在的VPC ID
kubectl apply -f userdata.yaml
kubectl apply -f https://gitee.com/uk8s/uk8s/raw/master/yaml/cloudprovider/21.05.2.yml
如 Pod 处于非 running 状态,请您及时与我们技术支持联系,更新成功后,即可在控制台查看版本信息并进行后续升级。
kubectl get pod -n kube-system -l app=cloudprovider-ucloud -o wide
更新时间:2021 年 5 月 28 日
更新内容:
- 加上 Endpoint Controller,感知 Endpoint 变化,在 externalTrafficPolicy=Local 的情况下,只会将运行了 Pod 的主机节点加入 ULB VServer Backends。
- **注意:**Endpoint 频繁变动会导致 ULB API 大量调用,需要在 cloudprovider 中添加如下参数,做限速处理。如需要调整参数,则必须通过命令行的方式,对插件进行调整。
containers:
- name: cloudprovider-ucloud
image: uhub.service.ucloud.cn/uk8s/cloudprovider-ucloud:21.05.2
args:
- "--endpoint-updates-batch-period=10" ## 所有 Endpoint 事件每隔 N 秒处理一次,默认为 10
更新时间:2021 年 5 月 11 日
更新内容:
annotations:
## 以下参数仅对 UDP 类型 ULB 生效
service.beta.kubernetes.io/ucloud-load-balancer-vserver-monitor-reqmsg: "" ## 代表 UDP 健康检查发出的请求报文
service.beta.kubernetes.io/ucloud-load-balancer-vserver-monitor-respmsg: "" ## 代表 UDP 健康检查请求应收到的响应报文
更新时间:2021 年 4 月 22 日
更新内容:
- 可通过 Service Annotation,为节点添加注释,设定其在被设置为不可调度(即执行 Cordon 节点操作)后,不会自动被 ULB 剔除
annotations:
## 默认为 'true',设置为 'false' 后节点不可调度时不会自动被 ULB 剔除
service.beta.kubernetes.io/ucloud-load-balancer-remove-unscheduled-backend: "false"
更新时间:2021 年 2 月 6 日
更新内容:
- 支持内网 ULB7
- 支持 ULB7 的 TCP 模式
更新时间:2020年10月29日
更新内容:
- 更新支持创建指定子网的ULB,详细设置请查看通过内网ULB访问Service。
更新时间:2020年10月20日
更新内容:
- 动态创建成功LoadBalancer类型的Service后,插件将把关联的ULB Id注入到Service的Annotations中,以规避因API超时等导致的ULB重建。
更新时间:2020年9月18日
变更内容:
- 升级UCloud Go SDK修复ULB防火墙设置,
- 增加新创建时,使用临时的ULB客户端进行API调用。
更新时间:2020年9月17日
变更内容:
- 更新监控信息(非强制更新)。
更新时间:2020年9月8日
变更内容:
- 增加cloudprovider重启后调用ULB相关接口的容错性,提高集群的运行的稳定性。