
Kubernetes 1.26 系列发布日志全解v1.26.0 特性升级、15 个补丁版本的安全修复与官方 Changelog 阅读方法【免费下载链接】kubernetesProduction-Grade Container Scheduling and Management项目地址: https://gitcode.com/GitHub_Trending/kuber/kubernetesCHANGELOG-1.26.md 是 Kubernetes 1.26 整条版本线的完整发布记录覆盖从 v1.26.0-alpha.1 到 v1.26.15 共 24 个构建4 个 alpha、1 个 beta、2 个 rc、1 个 GA 和 15 个补丁版本包含每个版本的下载产物清单附 SHA512 校验和、按变更类型Changes by Kind归类的功能说明、重大安全公告CVE与依赖项 diff。读完本文你可以掌握如何解读 Kubernetes 官方 changelog 的结构、v1.26.0 必须提前知晓的升级注意事项Urgent Upgrade Notes、1.26 系列各安全补丁版本分别修复了哪些漏洞、以及 1.26 引入的 schedulingGates、ResourceClaim、Priority Fairness 借用等核心特性在当前源码中的落点。一、CHANGELOG-1.26.md 在仓库中的位置与文件结构所有版本发布日志统一存放在 CHANGELOG/ 目录CHANGELOG/README.md 维护了从 1.2 到 1.37 的索引列表1.26 对应 CHANGELOG/CHANGELOG-1.26.md。每个小版本一个文件内部按时间倒序组织最新补丁版本在最上方最古老的 alpha 在最下方。每个版本小节都遵循一套固定的结构以 v1.26.15 为例Downloads for v1.26.x下载产物清单细分为四类均附带 SHA512 哈希用于完整性校验Source Codekubernetes.tar.gz编译产物源码与kubernetes-src.tar.gz纯源码Client Binaries各平台客户端包kubernetes-client-{darwin,linux,windows}-{386,amd64,arm,arm64,ppc64le,s390x}.tar.gz内含 kubectl 等客户端工具Server Binaries仅 Linux 平台amd64/arm/arm64/ppc64le/s390x含 kube-apiserver、kube-controller-manager、kube-scheduler 等控制面组件Node Binaries各平台节点包含 kubelet、kube-proxy 等Container Imagesregistry.k8s.io下的 5 个核心镜像——conformance、kube-apiserver、kube-controller-manager、kube-proxy、kube-scheduler。文档明确说明所有镜像均以 manifest list 形式发布支持 amd64/arm/arm64/ppc64le/s390x 五种架构也可以在镜像名后加-$ARCH后缀直接拉取指定架构如registry.k8s.io/kube-apiserver:v1.26.15-amd64。Changelog since v1.26.x-1与上一个版本的差异范围声明。Changes by Kind按变更类型分组本文件中出现的类型有Deprecation废弃、API ChangeAPI 变化、Feature新功能含工具链/Go 版本升级、Documentation文档、Bug or Regression缺陷修复、Other (Cleanup or Flake)清理或测试稳定性、Failing Test测试修复。每条记录都带有 PR 编号、贡献者和涉及的 SIG 标签。Dependencies依赖项 diff分Added/Changed/Removed三节列出 Go module 级别的前后版本。下载后的完整性校验方式以 v1.26.15 客户端包为例将文档中给出的 SHA512 与本地计算值比对。sha512sum kubernetes-client-linux-amd64.tar.gz # 与文档中 9099d4e8a798071dbb91b5af24ce5806... 对应的哈希值核对一致后使用值得注意的是镜像仓库的迁移轨迹v1.26.0-alpha.1 至 alpha.3 阶段镜像仍发布在k8s.gcr.io从 beta.0 起v1.26.0-beta.0 的清单已切换统一改为registry.k8s.io这一变化也记录在该文件的对应小节中。二、v1.26.0 的发布路径与必读升级注意事项v1.26.0 的完整发布路径为v1.26.0-alpha.1 → alpha.2 → alpha.3 → beta.0 → rc.0 → rc.1 → v1.26.0GA 之后持续发布了 v1.26.1 至 v1.26.15 共 15 个补丁版本。在 v1.26.0以及 alpha.1小节中文档专门用Urgent Upgrade Notes标题No, really, you MUST read this before you upgrade列出三条升级前必须知晓的破坏性变更计划在 v1.26 移除的已废弃 beta API 不再提供服务Deprecation guide 中对应 1.26 章节的 API如scheduling.k8s.io/v1alpha1等旧版本。OpenStack in-tree 云提供商被移除含 cinder 卷插件需改用外部 cloud provider 与 CSI drivercloud-provider-openstack 项目。GlusterFS in-tree 存储驱动被彻底移除1.25 中已废弃。使用 GlusterFS 卷的集群必须先迁移到其他存储方案再升级到 v1.26。这三条对应 PR #111973、#67782、#112015。此外从 v1.26.0 的Other (Cleanup or Flake)分类还能看到大量GA 后移除 feature gate的收尾工作例如IndexedJob、SuspendJob、CSRDuration、PodOverhead、ServiceLoadBalancerClass、ServiceLBNodePortControl、DefaultPodTopologySpread、NonPreemptingPriority、PodAffinityNamespaceSelector、PreferNominatedNode等已在 1.24 GA 并锁定为启用的 gate 在 v1.26 中正式从代码中删除ServerSideApply被锁定为 true 待后续移除。三、v1.26.0 的核心特性升级按 Kind 精读3.1 调度器与 Pod 工作负载.spec.schedulingGates新 Pod API 字段alpha引入调度门控允许用户在 Pod 满足条件前阻止调度器对其做调度决策PR #113274SIG Scheduling。调度器组件配置新增preEnqueue扩展点v1beta2/v1beta3/v1 配置文件均支持插件可决定 Pod 何时从调度队列中被弹出。在当前仓库源码中该字段仍体现在调度配置校验逻辑里如 调度配置校验 中将preEnqueue映射到profile.Plugins.PreEnqueue。percentageOfNodesToScore提升为 profile 级参数v1 配置版本设置后将覆盖全局值PR #112521。JobTrackingWithFinalizers毕业为 stableJob 控制器使用 finalizer 跟踪 Pod 生命周期注解batch.kubernetes.io/job-tracking随之废弃PR #113510。Retriable and non-retriable pod failures for jobs进入 betaPR #113360配合已有的podFailurePolicy使用。Pod 新增DisruptionTarget失败 condition优雅关机、节点压力驱逐场景PR #112360kube-scheduler 与 kube-controller-manager 改用 server-side apply 写入 pod disruption 相关 conditionPR #113304。3.2 存储新增ResourceClaimAPIresource.k8s.io/v1alpha1受DynamicResourceAllocationfeature gate 控制这是 DynamicResourceAllocationDRA项目的第一个 API相比 Device Plugin它允许 Pod 声明claim节点级、集群级或任意自定义模型的资源PR #111023。在当前仓库的 kube_features.go 中仍可看到DynamicResourceAllocationgate 的定义及其派生 gate 族DRAAdminAccess、DRADeviceBindingConditions等以DynamicResourceAllocation为前置依赖。CSIMigrationvSphereGA 并锁定为 true官方明确提示——如需 Windows、XFS 或 raw block 支持在 vSphere CSI 驱动 v2.7.x 之后的版本补齐这些能力之前不要升级到 1.26PR #113336。DelegateFSGroupToCSIDriverGAPR #113225Azure File CSI 迁移 GAPR #113160。RetroactiveDefaultStorageClass进入 beta并提供retroactive_storageclass_total/retroactive_storageclass_errors_total两个指标PR #113329/#113323。NodeOutOfServiceVolumeDetach进入 betaPR #113511PVC 的dataSourceRef新增 alpha 字段namespacePR #113186。3.3 API Server 与控制面Priority Fairness 引入借用borrowing机制某个优先级级别可以从其他级别借用执行席位通过.spec.limited下的新字段lendablePercent与borrowingLimitPercent启用同时发布flowcontrol的v1beta3版本将assuredConcurrencyShares重命名为nominalConcurrencyShares并为 flowschemas 和 prioritylevelconfigurations 的Conditions应用 strategic merge patch 注解PR #112306、#113485。新增指标包括apiserver_flowcontrol_nominal_limit_seats、apiserver_flowcontrol_lower_limit_seats、apiserver_flowcontrol_upper_limit_seats、apiserver_flowcontrol_demand_seats及其high_watermark/average/stdev/smoothed变体、apiserver_flowcontrol_target_seats、apiserver_flowcontrol_seat_fair_frac、apiserver_flowcontrol_current_limit_seats等apiserver_flowcontrol_request_concurrency_limit从此只表示配置值而非执行值。APIServerIdentity进入 beta每个 kube-apiserver 默认在kube-system命名空间创建一个 Lease用于识别集群中活跃的 API server 数量PR #113629、#113307。AggregatedDiscoveryEndpoint聚合发现进入 alpha可经--runtime-config开启discovery.k8s.io/v1PR #113171。ValidatingAdmissionPolicyalpha基于 CEL 表达式的可扩展准入控制KEP 3488需同时启用ValidatingAdmissionPolicyfeature gate 和admissionregistration.k8s.io/v1alpha1APIPR #113314gate 名称由CELValidatingAdmission更名而来PR #113735。新增 SelfSubjectReview API 与kubectl auth whoami命令查询当前认证主体的属性。在当前仓库中该资源定义位于 authentication 类型定义 及 v1alpha1/v1beta1/v1 版本包中。PodDisruptionBudget.spec.unhealthyPodEvictionPolicyalpha配合PDBUnhealthyPodEvictionPolicygate设置为AlwaysAllow后对没有 Ready condition 的 Pod 的驱逐不再受 PDB 约束PR #113375。DynamicKubeletConfiggate 从 API server 移除即使旧节点仍尝试依赖动态 kubelet 配置API server 也不再受理PR #112643。传输压缩策略调整kube-apiserver 的 gzip 压缩从 level 4 降为 level 1以改善超大 list 调用的超时余量代价是 10–50% 的额外带宽kubectl 新增--disable-compression标志默认 falsekubeconfig 的 cluster 段新增DisableCompression字段——当带宽充足30MB/s或服务器 CPU 受限时可显著降低 list 延迟PR #112299、#112580、#112309。移除 legacy klog 标志仅保留-v与-vmodulePR #112120。kubeconfig中cpuCFSQuotaPeriod默认值语义修正默认恢复为 100µs 以匹配 Linux CFS 与 k8s 默认100ms 需CustomCPUCFSQuotaPeriodgatePR #111520、#112123。etcd 存储层etcd 升级至 v3.5.5v1.26.0 GA 时基线/healthz/etcd端点对转发到 etcd 后端的健康检查做限流限流阈值为配置超时的 1/2不允许突发超限时返回最后已知状态PR #112489、#112046。3.4 节点kubeletCRIv1alpha2支持被移除容器运行时只需实现v1PR #110618。Kubelet CPU Manager 与 Device Manager 毕业为 GAPR #113018、#112980kubeadm在 init/join/upgrade 中不再向 kubelet 传递--container-runtimeremote唯一取值dockershim 移除后已无意义。Evented PLEGalpha与PodAndContainerStatsFromCRIalpha事件驱动的 PLEG 以及从 CRI 直接获取容器/Pod 指标的能力PR #111384、#113609。SELinux 挂载上下文在 kubelet 重启后自动重建SELinuxMountReadWriteOncePod特性完整实现PR #113596。新增--topology-manager-policy-optionskubelet 标志首个策略选项prefer-closest-numa-nodesPR #112914新增pod_start_sli_duration_seconds与pod_status_sync_duration_seconds指标。ComponentSLIsalpha gate 启用后kubelet/kube-proxy/kube-scheduler/kube-controller-manager/cloud-controller-manager 均暴露/metrics/slis健康检查 SLI 端点PR #112884 及一组后续 PR。新增大量 Golang 运行时指标go_gc_*、go_memory_classes_*、go_sched_goroutines_goroutines、go_sched_latencies_secondsPR #111910kubernetes_feature_enabled指标用于观察每个 feature gate 的启用状态PR #112690、#112652。Kubelet 外部 Credential Provider 功能 GA插件与配置 API 从v1beta1升为v1无 API 破坏PR #111616。3.5 网络kube-proxy 与 Serviceuserspace代理模式彻底移除Linux 上应使用iptables或ipvsWindows 上使用kernelspacePR #112133。新增--iptables-localhost-nodeports标志默认 true允许关闭 NodePort 服务在回环地址上的监听。当前仓库源码中该标志的处理逻辑位于 iptables proxier开启时会设置route_localnet1以允许 node-ports on localhost日志会提示可通过该标志或--nodeport-addresses改变行为两者冲突--nodeport-addresses含 localhost 但标志为 false时 proxier 会记录错误日志。注意此标志仅对 iptables 模式和 IPv4 生效。ServiceInternalTrafficPolicy毕业 GAPR #113496ServiceIPStaticSubrangeGAPR #112163ExpandedDNSConfig进入 beta 并默认启用需容器运行时支持PR #112824ProxyTerminatingEndpoints进入 beta 并默认启用——流量策略为Local且节点上仅剩 terminating Pod 时kube-proxy 仍尝试向其路由PR #113363。kube-proxy iptables 后端在处理 Service/Endpoint 变更时在超大集群中更高效PR #110268当检测到 Node 分配的pod.Spec.PodCIDRs变化时 kube-proxy 会自行重启PR #111344ipvs 模式下若系统配置不正确kube-proxy 不再回退 iptables 而是直接报错退出PR #111806。3.6 CLIkubectlkubectl alpha events提升为kubectl eventsPR #113819。kubectl config view自动脱敏带datapolicy标签的 secret 字段PR #109189。kubectl api-resources -o wide新增 categories 列并支持--categories过滤PR #111096。kubectl apply --prune新增--prune-allowlist取代并废弃--prune-whitelistPR #113116。输出转义终端特殊字符修复 CVE-2021-25743PR #112553。kubectl wait配合--field-manager与--server-side的行为修正--server-side会把此前客户端 apply 的字段所有权迁移给指定--fieldmanager防止字段逃出 SSA 管理而无法删除PR #112905。kubectl run一批未走完废弃周期的标志--cascade、--filename、--force、--grace-period、--kustomize、--recursive、--timeout、--wait被恢复并标记废弃PR #112243、#112261。bash shell 补全包含描述信息shell 补全支持插件PR #113636、#105867。3.7 废弃项Deprecationkube-scheduler 组件配置v1beta3在 v1.26 废弃v1.29 移除v1beta2将在 v1.28 移除PR #112257。CLI 标志pod-eviction-timeout废弃将与enable-taint-manager一起在 v1.27 移除PR #113710。kube-apiserver 的未使用标志--master-service-namespace废弃v1.27 移除PR #112797。gcp与azureauth 插件从 client-go 和 kubectl 中移除云厂商分别提供了 kubelogin 等替代方案PR #112341。指标apiserver_request_slo_duration_seconds将于 v1.27 被apiserver_request_sli_duration_seconds取代命名一致性PR #112679。四、v1.26.x 补丁版本的安全公告Important Security Information1.26 系列共有 5 个版本携带Important Security Information章节是运维排障时最值得检索的部分版本CVE摘要CVSSv1.26.2CVE-2022-41723升级golang.org/x/net至 v0.7.0 修复—见依赖节v1.26.5CVE-2023-27561 / CVE-2023-25809 / CVE-2023-28642runc 从 v1.1.4 升级到 v1.1.5—v1.26.6CVE-2023-2728使用临时容器ephemeral containers可绕过 ServiceAccount 准入插件的 enforce-mountable-secrets 策略仅当同时启用 ServiceAccount 准入插件 kubernetes.io/enforce-mountable-secrets注解 临时容器时受影响。修复版本v1.27.3 /v1.26.6/ v1.25.11 / v1.24.15Medium (6.5)v1.26.8CVE-2023-3676、CVE-2023-3955Windows 节点输入净化不足导致权限提升任何能在 Windows 节点上创建 Pod 的用户均可提升为节点管理员。修复版本v1.28.1 / v1.27.5 /v1.26.8/ v1.25.13 / v1.24.17High (8.8)v1.26.11CVE-2023-5528in-tree 存储插件Windows 节点输入净化不足导致权限提升需要能在 Windows 节点创建 Pod 和 PersistentVolume 的用户。修复版本v1.28.4 / v1.27.8 /v1.26.11/ v1.25.16High (7.2)v1.26.15CVE-2024-24786google.golang.org/protobuf升级 v1.31.0 → v1.33.0 修复—除 CVE 外v1.26.10 还提供了一个与 http/2 滥用漏洞CVE-2023-44487、CVE-2023-39325相关的可选缓解能力UnauthenticatedHTTP2DOSMitigationfeature gate默认关闭——仅针对未认证客户端启用对 API server 的 http/2 DoS 缓解。文档给出了明确的适用判断前面有 L7 负载均衡器且其已缓解此类攻击的 API server、以及私网中不想影响未认证客户端性能的部署可以选择不启用已认证请求的缓解完全依赖golang.org/x/netv0.17.0 的修复该版本在 v1.26.10 的依赖节中体现golang.org/x/net: v0.8.0 → v0.17.0。在当前仓库的 kube_features.go 中仍可看到该 gate 通过genericfeatures.UnauthenticatedHTTP2DOSMitigation注册在后续版本中它已随 GA 流程演进。五、1.26 系列补丁版本中的典型缺陷修复除了安全项Bug or Regression分类中若干修复对生产环境行为有直接影响值得在升级评估时重点关注Pod 驱逐与干扰PodDisruptionConditions 相关该特性在 1.26 默认启用后引发过多个回归系列内持续修复——v1.26.1PR #116750驱逐 API 出现多余的前置条件错误、需要第二次调用才能成功dry-run 驱逐会意外把 DisruptionTarget condition 持久化到 Pod 上v1.26.11PR #121381默认 1.26 配置下Pod GC 无法删除含重复字段键重复 env 键或容器端口的 Podv1.26.1PR #114780PDB 同步更新过于频繁/干扰清理过慢的限流器清理问题。调度器v1.26.1PR #114524修复调度器总是走完所有 Filter 插件的回归影响性能v1.26.3PR #116438抢占与 Pod 更新竞争时的数据竞争v1.26.9PR #119953PreFilter 插件返回UnschedulableAndUnresolvable时仍触发抢占的 1.26 回归v1.26.12PR #122043调度队列未感知 Extender 失败最坏情况下被 Extender 拒绝的 Pod 会滞留 unschedulable 队列 5 分钟v1.26.13PR #122371覆盖 MultiPoint 插件如默认插件时循环逻辑错误导致插件被加载多次、所有 Pod 无法调度。存储与卷v1.26.5PR #117340Pod 与 PVC 删除后卷未分离v1.26.10PR #120595detach 失败的卷被误判为已 attach现在会确保完全 attach 后才允许 Pod 使用v1.26.3PR #115772CSI 迁移不再检查 CSI 驱动是否在节点运行v1.26.13PR #122211、#119923节点重启后使用 raw block 卷的 Pod 允许删除节点重启后挂载点可能在没有调用 NodePublishVolume 的情况下变成 local。kubectl 与 API 客户端kubectl rollout history指定 revision输出格式时只显示最新 revision#111093kubectl convert选择错误的 API 版本#112700client-go 重试带自定义io.Readerbody 的请求存在数据竞争修复后仅允许无 body 或 string/[]byte/runtime.Objectbody 的请求重试#113933v1.26.1kubectl diff --prune与-l选择器组合行为修正#116149v1.26.3。依赖基线演进从 Dependencies 节可以追踪 1.26 系列的底层依赖轨迹——Go 工具链从 1.19.1GA一路更新到 1.21.8v1.26.15etcd 从 v3.5.5 更新到 v3.5.10v1.26.13PR #121803cAdvisor 从 v0.46.0 到 v0.46.1runc 从 v1.1.4 到 v1.1.5golang.org/x/net从 v0.7.0 到 v0.17.0google.golang.org/protobuf最终到 v1.33.0。构建脚本侧v1.26.3 起 Makefile 会按.go-version自动获取匹配的 Go 版本可用FORCE_HOST_GOy跳过v1.26.12 起进一步尊重GOTOOLCHAIN。六、实战参考如何高效使用这份 Changelog定位文件按目标小版本选择 CHANGELOG/ 下对应文件需要跨版本对比时参考 CHANGELOG/README.md 索引。评估升级风险优先读目标版本的Urgent Upgrade Notes若存在与Changes by Kind中的Deprecation/API Change小节Bug or Regression用于确认你踩到的行为是否在目标补丁版本修复Feature小节里Kubernetes is now built with Go X.Y.Z条目可用于核对二进制对应的工具链版本。核对镜像与二进制按架构从 Container Images / Binaries 表选择registry.k8s.io/component:v1.26.x或对应 tarball并用表内 SHA512 校验完整性需要锁定具体架构时给镜像名追加-$ARCH后缀。交叉验证源码changelog 中的特性条目均可在当前仓库源码中找到对应实现与测试例如UnauthenticatedHTTP2DOSMitigationgate 注册于 pkg/features/kube_features.go、--iptables-localhost-nodeports的处理在 pkg/proxy/iptables/proxier.go、调度配置preEnqueue字段在 pkg/scheduler/apis/config/validation/validation.go、SelfSubjectReview 资源在 pkg/apis/authentication/ 各版本包中。需要注意的是本仓库 HEAD 版本已远晚于 1.26部分 gate 与标志在后续版本中可能已被演进或移除核对时应以 1.26 分支为准。区分配置与强制changelog 中enabled by default / GA / locked to true / removed是四种不同强度——GA 仍可能带默认值变化locked to true 表示不可再关闭removed 表示代码路径已删除升级方案中应分别对待。【免费下载链接】kubernetesProduction-Grade Container Scheduling and Management项目地址: https://gitcode.com/GitHub_Trending/kuber/kubernetes创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考