1.24的k8s后,serviceaccount不创建secret了
https://www.cnblogs.com/david-cloud/p/19033491
AI解释:
你想了解 Kubernetes 中 ServiceAccount 不再自动生成 Secret 存储令牌的版本及相关优化细节,我来为你详细梳理:
核心版本与关键阶段
Kubernetes 对 ServiceAccount Secret 的优化分为两个关键阶段,其中核心变更版本是 Kubernetes 1.24,具体如下:
-
特性引入(Beta 阶段,默认启用):Kubernetes 1.20此版本中引入了
BoundServiceAccountTokenVolume特性(进入 Beta 阶段并默认启用),这是 ServiceAccount 令牌与 Secret 解耦的基础。该特性支持 Pod 通过projected卷直接获取短期、与特定 Pod 绑定的 ServiceAccount 令牌,无需依赖传统的 Secret 存储长期令牌,为后续移除自动 Secret 创建打下基础。 -
关键变更(GA 稳定版,默认启用):Kubernetes 1.24这是你问题的核心答案:在 Kubernetes 1.24 版本中,
LegacyServiceAccountTokenNoAutoGeneration特性正式升级为 GA(稳定版)并默认启用。该特性的核心效果是:Kubernetes 不再自动为 ServiceAccount 创建包含长期静态令牌的 Secret(即传统的type: kubernetes.io/service-account-token类型 Secret),彻底实现了 ServiceAccount 令牌与 Secret 存储的解耦,这是对 Secret 相关功能的核心优化。
补充说明
-
优化核心目的之前自动创建的 Secret 中存储的是长期静态令牌,一旦令牌泄露,攻击者可长期利用该令牌访问 K8s 集群,存在严重安全风险。优化后,Pod 通过
BoundServiceAccountTokenVolume获取的是短期令牌(默认有效期 1 小时,可配置),且与特定 Pod 绑定,即使泄露,危害窗口也大幅缩短,安全性显著提升。 -
向后兼容性Kubernetes 1.24 及后续版本并未完全移除 ServiceAccount Secret 的支持:如果用户有遗留应用需要长期静态令牌,仍可手动创建
type: kubernetes.io/service-account-token类型的 Secret,满足传统使用场景,仅取消了「自动创建」的行为。 -
令牌默认获取方式优化后,Pod 无需手动挂载 Secret,kubelet 会自动为 Pod 注入一个
projected卷,令牌默认挂载在 Pod 的/var/run/secrets/kubernetes.io/serviceaccount/token路径下,应用可直接读取该路径获取有效令牌,使用更便捷且安全。
总结
- 优化特性(
BoundServiceAccountTokenVolume)引入:K8s 1.20(Beta,默认启用); - 核心变更(停止自动创建 ServiceAccount Secret):K8s 1.24(GA,默认启用),这是 ServiceAccount 与 Secret 解耦的关键版本;
- 优化核心:用短期、Pod 绑定的令牌替代长期静态令牌存储,提升集群安全性。
更多推荐
所有评论(0)