kOps 1.36 版本特性全解析:Kubernetes 1.36 支持、gVisor 运行时、混合引导与多云能力刷新
2026/9/22 11:31:50 网站建设 项目流程

kOps 1.36 版本特性全解析:Kubernetes 1.36 支持、gVisor 运行时、混合引导与多云能力刷新

【免费下载链接】kopsKubernetes Operations (kOps) - Production Grade k8s Installation, Upgrades and Management项目地址: https://gitcode.com/gh_mirrors/kop/kops

导读

本文基于 kOps 仓库的 1.36 版本发布说明,系统梳理 kOps 1.36 系列的核心变更:新增 Kubernetes 1.36 支持、彻底移除 in-tree 云提供商、containerd 2.2 / etcd-manager 等组件刷新、gVisor 沙箱运行时落地、Karpenter 托管EC2NodeClassNodePool、gossip 集群混合引导(hybrid bootstrap),以及 Azure、Hetzner、GCP 的体验增强和实验性 Linode 云提供商。读完本文,你将掌握 kOps 1.36 的升级前置条件(Breaking changes)、各功能对应的集群规格字段(ClusterSpec / InstanceGroupSpec)写法,以及升级到 1.36 前必须处理的弃用项与迁移路线。


一、版本总览:1.36 系列做了什么

kOps 1.36 的核心变更可以概括为五条主线:

  1. Kubernetes 1.36 支持,并同步刷新kube-apiserverkubeletkube-proxykube-scheduler等控制面组件的默认行为与可调参数;
  2. 彻底摆脱 in-tree 云提供商cloud-provider-awscloud-provider-gcp依赖被移除,外部云提供商成为唯一路径(Kubernetes 1.33+ 本就强制要求);
  3. 组件批量刷新:containerd v2.2、etcd-manager v3.0.20260707、AWS Load Balancer Controller v3.3.0、EBS CSI v1.58.0、CoreDNS v1.14.x、cluster-autoscaler v1.36.0、cert-manager v1.19.5 等;
  4. kops-channels插件管理器的构建与部署方式重构:从独立二进制变为 kOps 托管镜像 + 控制面静态 Pod;
  5. 多云能力扩展:Karpenter 原生托管节点组对象、gossip 集群混合引导、Azure / Hetzner 增强、实验性 Linode(Akamai)云提供商。

此外,构建系统全面升级到 Go 1.25.7+,发布二进制改用gcr.io/distroless/static基础镜像并默认 strip(Makefile 中的发布流程配套更新)。


二、Kubernetes 控制面与节点组件变更

2.1 kube-apiserver:大集群默认值对齐与存储初始化超时

  • deleteCollectionWorkersMaxRequestInflightcompactionInterval与 kube-up 的大集群默认值对齐,改善大规模集群下 API 请求的处理与 etcd 压缩节奏;
  • 新增storageInitializationTimeout字段,允许 etcd 在 kube-apiserver 判定就绪前获得更多准备时间。该字段定义在 pkg/apis/kops/componentconfig.go 的KubeAPIServerConfig中:
// StorageInitializationTimeout is the maximum amount of time to wait for the storage layer to initialize before declaring kube-apiserver ready. StorageInitializationTimeout *metav1.Duration `json:"storageInitializationTimeout,omitempty" flag:"storage-initialization-timeout"`

对应集群规格写法:

spec: kubeAPIServer: storageInitializationTimeout: 2m0s

2.2 kubelet:配置迁移与新调优项

  • 将大量废弃的 CLI 标志迁移到通过--config传入的 kubelet 配置文件;
  • 新增kubeAPIQPS/kubeAPIBurstnodeAllocatableUpdatePeriodSeconds等可调参数;其中nodeAllocatableUpdatePeriodSeconds仅在 Kubernetes 1.35+ 上设置(避免旧版本不识别该字段导致启动失败)。

在 pkg/apis/kops/componentconfig.go 中可见KubeAPIQPS的注释默认值为 50(kubelet 与 apiserver 通信的 QPS 上限):

// KubeAPIQPS Burst to use while talking with kubernetes apiserver. (default 50) KubeAPIQPS *int32 `json:"kubeAPIQPS,omitempty" flag:"kube-api-qps"`

2.3 kube-proxy 与 kube-scheduler

  • kube-proxy改为绑定挂载 kubeconfig目录而非单个文件,这样 kubeconfig 轮换(rotation)后代理进程无需重启即可读取新凭据;
  • kube-schedulerKubeSchedulerConfiguration文档澄清(纯文档性变更)。

2.4 kops-controller 与云配置清理

  • kops-controller现在会校验实例组名称合法性;
  • 删除遗留的 node reconciler,DigitalOcean 走非 legacy 的Identifier接口(见下文 DO 章节);
  • 移除未使用的 in-tree 云配置(cloud config)管道,为全面外置云提供商铺路。

三、容器运行时:containerd v2.2 与 gVisor RuntimeClass

3.1 containerd 默认版本与 TOML v3 兼容

  • Kubernetes 1.32+ 集群默认 containerdv2.2.4(runc 1.3.5),更老集群保持 v1.7.32;kOps 特意留在 containerd 2.2.x,以规避 containerd 2.3 的 sandbox-image 回归;
  • 支持 containerd 配置TOML v3格式,并清理 1.6 时代的死代码。

⚠️升级前必改:如果你在集群或实例组上设置了spec.containerd.configAdditions,必须在升级前把这些条目改写成 TOML v3 schema。源码 pkg/apis/kops/containerdconfig.go 明确注释了两种路径风格:

// configured containerd: v2 paths (e.g. plugins."io.containerd.grpc.v1.cri".*) for // containerd < 2.0, v3 paths (e.g. plugins."io.containerd.cri.v1.runtime".*) for >= 2.0. ConfigAdditions map[string]intstr.IntOrString `json:"configAdditions,omitempty"`
  • 注册表镜像通配符(registry mirror wildcard)映射到_default目录;
  • nodeup 将校验过的镜像字节流直接送入ctr import,并移除 containerized-mounter Archive 任务;
  • kops toolbox dump新增导出 containerd 配置文件的能力,方便排障。

3.2 gVisor RuntimeClass 支持(新功能)

kOps 1.36 支持用gVisor(runsc)作为 containerd runtime handler 运行工作负载。启用后 kOps 会:

  1. 通过 apt 安装runsc运行时;
  2. 在 containerd 中注册runscruntime handler;
  3. 创建名为gvisor的 Kubernetes RuntimeClass;
  4. 通过kops.k8s.io/gvisor节点标签,把引用该 RuntimeClass 的 Pod 自动调度到启用 gVisor 的节点。

配置是按 worker 实例组生效的,集群级配置会被拒绝;实例组级配置仅接受 worker 角色。源码 pkg/apis/kops/validation/instancegroup.go 的校验逻辑:

if g.Spec.Containerd != nil && g.Spec.Containerd.GVisor != nil && fi.ValueOf(g.Spec.Containerd.GVisor.Enabled) && !g.Spec.Role.HasNode() { allErrs = append(allErrs, field.Forbidden(field.NewPath("spec", "containerd", "gvisor"), "gVisor can only be enabled on instance groups with role Node")) }

实例组配置示例(GVisorConfig 定义见 pkg/apis/kops/containerdconfig.go):

# instancegroup.yaml spec: role: Node containerd: gvisor: enabled: true platform: systrap # 默认;也支持 kvm

platform说明:systrap是默认执行平台,兼容包括虚拟机在内的所有环境;kvm面向支持 KVM 的裸金属/物理机。

限制:目前仅支持 Debian 系发行版(Debian、Ubuntu)。


四、网络组件:Cilium、Calico、kube-router 与 DNS

4.1 Cilium 新可调项

  • cilium-operator调度到控制面节点(默认行为调整);
  • 新增Cilium.ExtraConfig:允许向cilium-configConfigMap 追加任意键值,且键会覆盖默认值。定义见 pkg/apis/kops/networking.go:
// ExtraConfig is appended to the cilium-config ConfigMap. Keys here override any value ExtraConfig map[string]string `json:"extraConfig,omitempty"`
spec: networking: cilium: extraConfig: monitor-aggregation: medium
  • 新增EnableHostFirewall字段,在 Cilium agent 中启用宿主机防火墙(pkg/apis/kops/networking.go):
// EnableHostFirewall enables the host firewall in the Cilium agent. EnableHostFirewall *bool `json:"enableHostFirewall,omitempty"`
  • 新增bpf-lb-sockbpf-lb-sock-hostns-only标志;
  • liveness probe 现在要求k8s-connectivity
  • ENI IPAM 模式下允许关闭masquerade(对应 networking.go 的Masquerade字段)。

4.2 Calico、kube-router、AWS VPC CNI

  • Calico eBPF 模式下自动禁用 kube-proxy;
  • Calico 新增NFTablesMode字段,配置 Felix 的 nftables 支持;
  • kube-router 更新到 v2.10.0,并关闭其严格的外部 IP 校验;
  • AWS VPC CNI 更新到 v1.21.2;
  • 移除基于 GCS 的 CNI 插件镜像(deprecated 镜像源)。

4.3 CoreDNS 与 dns-controller

  • CoreDNS 先升到 v1.14.3 再钉在 v1.14.2(留在受支持分支),并提升大集群下的 CoreDNS 内存;
  • CoreDNS 在hostname拓扑分布约束中尊重节点污点;
  • dns-controllerpriorityClassName可配置;当ExternalDNS只配置了一部分时自动默认Provider
  • dns-controller现在总是应用 addon(未使用时就渲染空清单),这样当集群迁移走 dns-controller 后,遗留的 Deployment 会被自动清理。

五、AWS:负载均衡、Karpenter 与 IAM 精细化

5.1 移除 in-tree 云提供商

cloud-provider-aws依赖被彻底移除,AWS 上的cloud-controller-manager等外置组件成为唯一路径(Breaking changes 章节)。

5.2 AWS Load Balancer Controller v3.3.0

  • 升级到 v3.3.0,manifest 改为 Helm + Kustomize 流水线生成;
  • 裁剪内置 Deployment,移除ALBTargetControlConfigCRD;
  • 对 cert-manager 绕过 LBC webhook,避免循环引导(circular bootstrap)问题;
  • 新增elasticloadbalancing:SetRulePrioritiesec2:DescribeSubnets权限;
  • 钉住 Deployment 的 label selector,保证从旧 kOps 版本原地升级成功。

5.3 Karpenter v1.13.0 与 kOps 托管节点组

  • 升级到 v1.13.0,废弃的karpenter.sh/provisioner-name标签替换为karpenter.sh/nodepool,addon manifest 同样走 Helm + Kustomize 流水线;
  • kOps 现在为每个spec.manager: Karpenter的实例组自动生成受管EC2NodeClassNodePool,实例组删除时对应对象会被裁剪(prune);
  • Karpenter 节点注册时带上karpenter.sh/unregistered污点;
  • Karpenter IAM 策略补充缺失的 EC2 只读权限。

实例组侧字段定义在 pkg/apis/kops/instancegroup.go:

type InstanceManager string const ( InstanceManagerCloudGroup InstanceManager = "CloudGroup" InstanceManagerKarpenter InstanceManager = "Karpenter" ) // Manager determines what is managing the node lifecycle Manager InstanceManager `json:"manager,omitempty"`

配套的判定方法IsKarpenterManaged()(instancegroup.go):

// IsKarpenterManaged checks if instanceGroup is a worker node group managed by Karpenter. func (g *InstanceGroup) IsKarpenterManaged() bool { return g.Spec.Manager == InstanceManagerKarpenter && g.Spec.Role == InstanceGroupRoleNode }
spec: role: Node manager: Karpenter machineType: m6i.large minSize: 2 maxSize: 10

5.4 其他 AWS 变更

  • EBS CSI 驱动更新到 v1.58.0,刷新上游 IAM 策略,并在 Kubernetes 1.35+ 上开启MutableCSINodeAllocatableCount
  • kops-controller改为 HTTPS 服务,并在 API NLB 目标组上暴露/healthz
  • 滚动更新时如果负载均衡 deregister 失败会中止,不再带病前进;目标组健康检查变更会同步 reconcile 到已存在的目标组;
  • NodeTerminationHandler新增EnableOutOfServiceTaint字段,并允许在 Queue Processor 模式下关闭enableScheduledEventDraining
  • 混合实例策略:onDemandAllocationStrategy应用到 ASG,无值的污点会作为 ASG 标签传播;
  • instanceRequirements新增excludedInstanceTypes(instancegroup.go 中定义),并修复一个内存分配 bug:
spec: instanceRequirements: excludedInstanceTypes: - t3.micro - t3.nano
  • NLB 新增安全组模式选项;
  • 已有 IPv6 CIDR 的私有子网会被视为已分配 CIDR;
  • RHEL 9 上为 AWS VPC CNI 禁用nm-cloud-setup
  • 大规模裁剪实例角色 IAM 权限,只保留各组件实际使用的权限;
  • S3 侧:用HeadBucket解析桶区域、向 S3 客户端传递 VFS scheme 与 provider 选项、在 S3 provider 不支持 checksum 时静默告警。

六、Azure:权限收敛、CCM 落地与 CSI 支持

  • 权限收敛(重要安全变更):控制面 VMSS identity 在集群资源组上由内置Owner角色降为Contributor。已存在的集群会保留旧 Owner 角色分配,直到用az role assignment delete手动删除或删除集群;
  • 部署cloud-controller-manager(v1.36.2),支持节点生命周期与负载均衡;
  • 实验性 Terraform target 支持
  • 新增Azure Disk CSI Driver(v1.34.4)支持;
  • 节点到 API 的 NSG 规则收敛到 NAT 网关公网 IP;
  • kops-controller 探针与 LB 健康检查改用 HTTPS,并把探针/规则配置迁移到 model 中的 SDK 类型;
  • 云配置改为/etc/kubernetes/azure.json,CCM/CSI 配置通过新的azure-cloud-configaddon 从 Secret 加载,节点上不再写 cloud-config 文件;
  • kubelet 启动时设置 provider ID;kubenet 与 Kindnet 启用 CCM cloud routes;
  • 存储账号编码进azureblob://URL(见下文 Breaking changes 的 URL 格式变更);
  • 删除集群健壮性:磁盘删除前先阻塞父 VMSS、在 VM scale set 之后再删除RoleAssignment、处理缺失资源组、修复若干 nil 指针与顺序问题;
  • 失败 provisioning 状态的任务会重试;修复 TerraformLoadBalancerPublicIP的任务依赖;测试默认 VM SKU 改为更大的Standard_D4ls_v6

七、GCP:kops-controller 入内网 LB、实例组与卷类型

  • kops-controller加入 GCE 内网负载均衡,并在 gossip 集群中通过内网 LB 暴露;
  • GCE 上kops-controller使用 SSL 健康检查;
  • 支持 GCE 上role=apiserver+dns=none组合,并修复role=apiserver的实例标签;
  • Calico 允许节点到控制面的 BGP;
  • 不支持 live migration 的实例类型不再请求 live migration;
  • 等待InstanceManagers/InstanceTemplates删除完成;找不到实例时纳入 MIG 扩缩容错误;
  • 允许N4A实例类型;多可用区实例组的所有 zonal MIG 都注册到 cluster-autoscaler;
  • 下发kops.k8s.io/instancegroup节点标签;
  • 移除cloud-provider-gcp依赖,clouddns切换到 fork 的gcetokensource
  • GCE alias IP 下允许 Pod 访问控制面节点上的 metric 端口;
  • GCE 支持控制面卷类型配置;修复实例组删除与删除时 nil panic;
  • GCS bucket discovery store 处理迁移,并拒绝没有 bucket 的 GCS VFS 路径。

八、Hetzner、DigitalOcean、OpenStack 与实验性 Linode

8.1 Hetzner:集群自动扩缩容落地

  • 启用 Cluster Autoscaler;
  • Node-role 服务器携带hcloud/node-group标签(Hetzner 的 autoscaler 依赖它识别节点组);旧 kOps 创建的服务器在替换后会获得该标签;
  • 行为变更:降低实例组minSize不再删除多余服务器,minSize只是下限;请用kops delete instance或依赖 Cluster Autoscaler 缩容;
  • hcloud-cloud-controller-manager升到 v1.31.0;
  • hcloud-csi-driver升到 v2.20.2,并调整 CSI Deployment 先于 DaemonSet 部署;
  • hcloud Secret 拆成独立 addon,CSI 驱动消费 CCM 提供的 Secret。

8.2 DigitalOcean

  • 默认机型改为s-2vcpu-4gb-amd
  • 节点标识迁移到非 legacyIdentifier接口,droplet 打上实例组角色标签;
  • 移除 CSI node-driver-registrar ClusterRole 中非法的namespace字段。

8.3 OpenStack

  • 解决 kOps 1.21 遗留的floatingipTODO;
  • gossip 集群启用混合引导(hybrid bootstrap)模式。

8.4 Linode(Akamai,实验性)

  • 云提供商 API 注册、VFS 对象存储 schema、VPC cloudup 任务、nodeup 配置与节点身份;
  • ⚠️尚不具备生产就绪条件,仅用于实验验证。

8.5 Bare metal

  • 裸金属工具链不再使用 protobuf;
  • metal provider 的 Kubernetes 版本不再钉死(unpin)。

九、Etcd 与 etcd-manager 刷新

etcd-manager 更新到v3.0.20260707,带来:

  • 数据盘被替换成空盘后的集群成员恢复能力;
  • 面对不可达成员的 etcd membership 变更更稳健;
  • 新增--env-file标志,可从文件加载凭据;
  • 基于 go-runner 的 distroless 镜像;
  • 单成员集群启动更快:把自己 seed 进 gossip peers 并跳过选举后等待。

配套变更:

  • etcd 升到最新补丁版(3.5.31、3.6.12),移除 etcd 3.4 支持
  • EtcdManagerSpec新增ListenClientHTTPURLs字段,支持纯 HTTP 的 etcd 客户端监听;
  • etcd-manager patch 符号链接动态生成;
  • 可伸缩性测试中把EtcdEventsHTTP 流量与主 etcd 集群流量解耦。

十、Channels 与 Addons:kops-channels 重构

1.36 把kops-channelsaddon 管理器从独立二进制改造为kOps 托管的容器镜像 + 控制面静态 Pod;protokube 不再负责应用 channels 或给控制面节点打标签。具体变化:

  • kops-channels新增--node-name--interval参数、多 URL apply 支持,并在首次 reconcile 成功前更快地重试;
  • 节点标签器(node labeler)从 protokube 移入kops-channels
  • addon 应用失败通过 readiness probe 暴露;
  • 修复区域检测与 discovery 缓存权限噪音;
  • spec.addons条目现在既支持 kOpsAddons索引,也支持直接指向普通 Kubernetes manifest(按原样应用);
  • 发布产物中不再包含独立的channels二进制;
  • addons 以 fi-task 形式渲染,使 addon 模板可以引用最终确定的任务图;移除 legacy9.99.0版本 shim 和废弃的 masternodeAffinity项。

spec.addons指向普通 manifest 的写法:

spec: addons: - manifest: https://example.com/path/to/manifest.yaml

十一、Gossip:混合引导(Hybrid Bootstrap)

1.36 为 gossip 集群引入混合引导,覆盖 AWS、Azure、GCE、OpenStack:

  • 控制面节点继续使用 gossip 引导;
  • worker 直接向 API NLB / 内网 LB 引导,worker 不再需要 protokube;
  • gossip seed 发现限制在控制面节点,不再向 worker 导出未使用的云凭据;
  • 新建集群默认dns=none,若仍请求 gossip 则输出弃用告警;
  • 不适用 dns-controller 的集群会以空 manifest 应用该 addon,从而自动清理遗留资源;
  • 校验每个云提供商支持的 DNS 拓扑;
  • protokube mesh gossip protobuf 从 gogo 迁移;
  • 新增最小 gossip create/update 集成测试与升级 e2e 测试。

这为 gossip(.k8s.local)集群迁移到--dns=none或托管 DNS 提供了更平滑的路径——worker 引导链路不再依赖 gossip,只有控制面短暂依赖。


十二、操作系统支持变化

  • 移除:Amazon Linux 2、Ubuntu 20.04、Debian 10;
  • 新增(实验性):Ubuntu 26.04;
  • RHEL 10+:加载nf_tables模块、安装iptables-nft,并加载ip_set模块、禁用firewalld(Rocky Linux 10+ 同理);
  • Rocky 9:启用nf_conntrack内核模块;
  • Debian 11:跳过ImageVolume测试,防止cloud-ifupdown-helper劫持 CNI veth;
  • Rocky 10 的 E2E 使用--node-os-arch=arm64

十三、其他组件与工具链

  • cluster-autoscaler 升级到 v1.36.0,并为旧 Kubernetes 版本保留按次版本(per-minor)的构建;
  • cert-manager v1.19.5,Controller 上设置AWS_REGION以支持 Route53 dns-01 solver;
  • metrics-server 在 AI Conformance 测试中以 insecure 模式运行;
  • Go 升级到 v1.25.7 / v1.25.8 / v1.25.9 / v1.26.2 / v1.26.3 / v1.26.5;
  • 发布二进制以gcr.io/distroless/static为基础镜像并默认 strip;
  • kops toolbox移除内置 helm 依赖,改用 fork 的helmstrvalsstructured-merge-diff从 v4 切到 v6;hashicorp/memberlist升到 v0.5.4。

十四、CLI 与其他行为改进

  • kops reconcile cluster支持--use-kubeconfig,复用已有 kubeconfig 而非重新生成;
  • kops create cluster支持--node-volume-type标志;
  • kops create instancegroupcreate cluster的节点标签对齐;
  • kops get assets修复spec.dnsZone是 DNS 名称时的查找;
  • kops update cluster拒绝非http(s)assets.fileRepository并对其做校验;
  • kops upgrade-ab允许 upgrade-AB 场景下的 kOps 降级;
  • kops toolbox dump新增--node-dump-timeout控制每节点日志导出超时,提升可靠性并在 GCE 上跳过 not-found 节点;
  • kops set--set标志现在可以向切片追加新元素,而不是在索引缺失时报错;
  • nodeup:实验性 hybrid-bootstrap worker 跳过 protokube/channels 资源;为 Cilium-ENI 集群填充DefaultMachineTypekops-channels复用共享系统组件环境变量;
  • 文件写入在 close/rename 前确保权限正确,修复PrivateKey.WriteTo返回零长度的问题;
  • dns-controller-logtostderr=true时仍尊重klog -stderrthreshold
  • 修复HasHighlyAvailableControlPlane在实例组过滤下应使用AllInstanceGroups的问题;
  • 修复向已关闭 results channel 发送导致 kops panic 的问题;
  • AssetBuilder改为并发安全;side-loading 使用KOPS_BASE_URL镜像版本;
  • 移除显式fs.inotify.max_user_watchessysctl 设置。

AI Conformance(实验性)

新增tests/ai-conformance实验测试套件,覆盖加速器指标、Kueue gang scheduling、可观测性与 AI 服务指标、Pod/集群自动扩缩容、GPU operator 与 Cilium gateway API 集成等。该套件服务于 kOps CI/E2E,尚未作为面向用户的特性暴露。


十五、Breaking Changes(升级前必读)

升级到 kOps 1.36 前,请逐条核对:

  1. 操作系统:Amazon Linux 2、Ubuntu 20.04、Debian 10 支持已移除,运行这些发行版的集群必须先迁移到受支持 OS 再升级;
  2. Kubernetes 1.30 支持已移除
  3. etcd 3.4 支持已移除,集群必须运行 etcd 3.5 或 3.6;
  4. 独立channels二进制不再分发kops-channels以静态 Pod 运行在控制面节点;
  5. legacy9.99.0addons-version shim 已移除:kOps 1.22 之前设置的 addon 必须在升级前重新应用;
  6. in-tree 云提供商依赖移除cloud-provider-awscloud-provider-gcp已从 kOps 中删除,外部云提供商成为必需(Kubernetes 1.33+ 已强制);
  7. azureblob://URL 格式变更:旧的azureblob://{container}/{key}(配合AZURE_STORAGE_ACCOUNT环境变量)不再接受,状态存储路径必须使用新的azureblob://{account}/{container}/{key}形式;
  8. spec.containerd.configAdditions:必须按 containerd TOML v3 schema 改写后再升级;
  9. authorization默认值变更:用kops create -f/kops replace -f应用且省略顶层authorization字段的清单,现在默认 RBAC 而非AlwaysAllow(与kops create cluster一致)。想让集群保持AlwaysAllow需显式设置spec.authorization.alwaysAllow: {}

十六、弃用与迁移预告

  • Kubernetes1.31 弃用,将在 kOps 1.37 移除;
  • 独立channels二进制不再分发(见上);
  • AWS Classic Load Balancer(CLB)用于 API:自 kOps 1.26 弃用,将在 1.37 移除。新建使用 CLB 的集群将被拒绝,现有集群须先迁移到 NLB 才能升级,迁移步骤见 CLB 到 NLB 迁移指南;
  • gossip DNS:自 kOps 1.29 弃用,将在 1.37 移除。新建 gossip 集群将被拒绝,现有集群须先迁移才能升级。受影响的是名字以.k8s.local结尾且未用--dns=none创建的集群;用--dns=none创建(即使名字带.k8s.local)不受影响。建议迁移到--dns=none或托管 DNS 区域,kOps 1.36 的混合引导(hybrid bootstrap)正是为降低这一迁移难度而引入,详见 gossip 说明文档。

十七、Known Issues

截至 1.36 发布,官方记录None at this time(暂无已知问题)。


总结:升级到 1.36 的行动清单

  1. 确认集群操作系统在受支持列表内(不在 Amazon Linux 2 / Ubuntu 20.04 / Debian 10 上);
  2. 确认 Kubernetes 版本 ≥ 1.31,etcd 为 3.5 / 3.6;
  3. 检查并改写spec.containerd.configAdditions为 TOML v3 格式;
  4. 若曾使用kops -f应用省略authorization的清单,确认 RBAC 默认值符合预期;
  5. 将 Azure 状态存储路径改写为新版azureblob://{account}/{container}/{key}
  6. 规划 CLB→NLB 与 gossip→dns=none的迁移(1.37 将强制执行);
  7. 升级后验证kops-channels静态 Pod、Karpenter 生成的EC2NodeClass/NodePool、以及 worker 的 hybrid bootstrap 引导是否正常。

【免费下载链接】kopsKubernetes Operations (kOps) - Production Grade k8s Installation, Upgrades and Management项目地址: https://gitcode.com/gh_mirrors/kop/kops

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询