You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes创建ServiceAccount未自动生成可挂载Secret与Token如何配置

Kubernetes 1.24+ 创建ServiceAccount未自动生成关联Secret/Token的恢复方案

问题根因

Kubernetes 从v1.24版本开始,默认关闭了LegacyServiceAccountToken特性门控,创建ServiceAccount时不再自动生成长期有效的可挂载Secret与Token,和1.23及更早版本的默认行为存在差异。

方案1:全局配置恢复旧版本默认行为

如果需要集群内所有新建ServiceAccount都和旧版本表现完全一致,创建即自动生成关联Secret、自动挂载Token,按以下步骤调整kube-apiserver配置:

  • 找到kube-apiserver的启动配置文件,kubeadm部署的集群默认路径为/etc/kubernetes/manifests/kube-apiserver.yaml
  • 在容器启动命令段添加如下参数:
- --feature-gates=LegacyServiceAccountToken=true
  • 保存文件后,kubelet会自动重启kube-apiserver静态Pod,配置即刻生效。后续新建的ServiceAccount会自动生成后缀为-token-<随机字符串>的关联Secret,默认自动注入到同SA启动的Pod中。

方案2:单ServiceAccount手动绑定关联Secret(无需修改全局配置)

如果不想调整集群全局特性开关,仅需要给指定ServiceAccount(比如给Jenkins集成用的SA)生成可挂载的永久Token,可以在创建SA后,同命名空间下手动创建指定类型的Secret,Kubernetes会自动为其填充认证信息:

apiVersion: v1
kind: Secret
metadata:
  name: <自定义Secret名称,比如jenkins-sa-token>
  annotations:
    kubernetes.io/service-account.name: <目标ServiceAccount名称>
type: kubernetes.io/service-account-token

创建完成后等待1-2秒,查看Secret详情就能看到自动填充的token、ca.crt、namespace字段,和旧版本自动生成的Secret完全一致,可直接用于Jenkins集成配置、Pod挂载。

补充说明

  • 旧版本自动生成的SA Token属于永久有效期凭证,全局开启LegacyServiceAccountToken会恢复该逻辑,存在一定凭证泄露风险,官方更推荐使用TokenRequest API生成短期轮转的Token做服务认证。
  • 目前主流版本的Jenkins Kubernetes插件已经支持短期Token认证方式,不一定需要依赖永久生效的SA Secret。

内容的提问来源于stack exchange,提问作者HHJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 21:54:28