Skip to content

v2.4.2 Release

Choose a tag to compare

@imroc imroc released this 30 Jun 09:33
  • 修复:预创建监听器模式下,绑定使用了未预创建的协议(如配置 tcp 但绑定用 udp)时报明确错误而非走动态创建路径。此前预创建监听器会占满 CLB 监听器配额,未预创建协议的绑定会动态创建监听器撞上配额上限,报难以定位的 LimitExceeded;现改为直接报 protocol X is not precreated 并提示检查 listenerPrecreate 配置,且在分配端口阶段即拦截,不占用端口。
  • 修复:预创建监听器分批创建,避免数量超过 50(CLB CreateListener 单次 Ports 上限)导致创建失败。此前仅修复了动态创建监听器场景的分批,本次补齐预创建监听器场景,单 CLB 预创建监听器数量不再受单次 API 限制。
  • 修复:端口池扩容逻辑,改为分配端口失败时被动触发扩容。原有基于 CanAllocate 的 dry run 只检查能否分配 1 个端口,无法预知下一次分配所需端口数(如单个 Pod 需要 100 个端口),导致端口范围耗尽后无法触发扩容。
  • 修复:端口池扩容竞态导致重复创建 CLB。CLB 创建期间(约 10 秒)存在竞态窗口,Binding 持续分配失败会重复触发扩容。改用一次性原子标记吸收竞态请求,CLB 创建后立即加入分配器缓存,既防止重复创建又不阻塞端口真正不足时的合法扩容。
  • 修复:显式设置 endPort(端口段监听器)时无法扩容 CLB 的问题。
  • 修复:ensureListener 在 CLB 不存在分支移除 binding 时未清理监听器导致监听器泄露。
  • 增强:CLBPortPool 删除时兜底清理已有 CLB 上的监听器。异常场景(Pod force delete、控制器重启中断 cleanup、CLB API 暂时性失败等)下 CLBPodBinding 的 finalizer 可能未清理监听器,端口池删除时增加兜底逻辑,遍历已有 CLB 上名称为 TKE-LISTENER 的监听器并删除,避免监听器残留。
  • 修复:移除 finalizer 时忽略资源已删除的 NotFound 错误,避免资源已删除时报错。
  • 修复:将 CAM 的 API 域名加到 deployment 的 hostAliases 中,避免无公网环境启动 controller 失败。
  • 修复:支持 CVM 加成的原生节点(providerID 为 tencentcloud://ins- 前缀)。此前 IsNativeNodetencentcloud://kn- 前缀强匹配判断原生节点,CVM 加成的原生节点被误判为非原生节点,导致其上的 Pod 无法完成 CLB 后端绑定,cpb 卡在 NodeTypeNotSupported。改为通过 Machine CR 的 status.nodeRef.name 确认原生节点身份。