Kubernetes 1.30 升级指南:核心特性与不容忽视的变更

1 分钟阅读
152 字
Huxulm

Kubernetes 1.30 代号 'Uwubernetes',带来了 45 项增强功能。本文总结了从 1.29 升级至 1.30 时的关键注意事项。

Kubernetes 1.30 版本已正式发布,代号为 “Uwubernetes”。这一版本不仅名字可爱,其实质内容也非常丰富,共包含 45 项增强功能(KEPs),其中 17 项进入稳定版(GA)。

在准备升级之前,请务必关注以下这些可能影响现有集群行为的“重头戏”。

🚨 紧急升级注意事项 (Urgent Upgrade Notes)

在更新控制平面和节点之前,请先确认以下变更:

1. 存储:防止未经授权的卷模式转换 (GA)

这是一个关键的安全变更。为了防止在从快照恢复卷(PVC)时发生未经授权的 volumeMode 更改(例如从 Filesystem 切换到 Block),1.30 版本在控制平面默认启用了这一保护机制。

  • 影响:如果你依赖外部配置程序(external-provisioner)进行卷恢复,需确保升级到兼容版本,并为相关的 ServiceAccount 授予权限。

2. Node Swap 支持的调整

NodeSwap 功能在 1.30 中有了显著改进。

  • 默认行为变更:Kubelet 配置中的 memorySwap.swapBehavior 默认值现在是 NoSwap
  • 建议:如果你之前启用了 Linux 节点的 Swap 支持,请检查配置文件,确认新的配置项是否符合预期。

3. AppArmor 注解弃用 (GA)

AppArmor 支持现已正式进入稳定阶段。

  • 重要变更:旧的 Beta 阶段注解(如 container.apparmor.security.beta.kubernetes.io/...)已被弃用。
  • 行动点:建议迁移到 Pod 的 securityContext 字段来声明 AppArmor 配置。

🌟 核心功能亮点

1. 结构化授权配置 (Structured Authorization) - Beta

授权配置现在可以支持多个 Webhook 钩子,并且可以通过结构化的配置文件进行更精细的控制,而不仅仅是依赖命令行参数。这为复杂的企业级权限校验提供了更大的灵活性。

2. 基于容器资源的 Pod 自动缩放 (GA)

Horizontal Pod Autoscaler (HPA) 现在正式支持基于单个容器的资源使用情况进行缩放,而不仅仅是基于整个 Pod 的总和。这对于包含 Sidecar 容器(如网格代理、日志采集)的 Pod 来说是巨大的利好,可以避免因 Sidecar 资源占用波动导致的误缩放。

3. 节点日志查询 (Beta)

调试节点问题的神器!现在可以通过 kubectl get --raw "/api/v1/nodes/<node-name>/proxy/logs/?query=<service-name>" 直接查询节点的系统日志(如 kubelet 自身日志或 journald 日志),无需再 SSH 登录机器。

🛠 弃用与移除 (Deprecations & Removals)

  • 移除安全上下文中的旧字段:持续清理旧有的 API 字段,请确保你的 YAML 清单符合最新的 API 规范。
  • Go 版本升级:Kubernetes 1.30 使用 Go 1.22 构建,插件开发者需注意相关标准库的兼容性。

🚀 升级建议路径

  1. 备份数据:对 etcd 进行快照备份。
  2. 升级 kubeadm/kubectl:先升级管理工具。
  3. 升级控制平面:按顺序升级 API Server、Controller Manager 和 Scheduler。
  4. 升级 Worker 节点:逐个排空(Drain)并升级 Kubelet。

总结:1.30 版本在安全性(AppArmor, Volume Mode)和可观测性(Node Logs)上做了大量加法。如果你的集群涉及到复杂的存储快照操作或依赖旧版 AppArmor 注解,请在升级前务必进行充分测试。

希望这篇指南能帮助你顺利过渡到 “Uwubernetes”!