如何在Kubernetes中创建ServiceAccount并关联Token?默认无Token问题求助
Kubernetes ServiceAccount创建后未显示默认关联Secret Token的问题
操作步骤回顾
- 在AWS EC2命令行执行以下命令生成ServiceAccount配置文件:
kubectl create serviceaccount jenkins --dry-run=client -o yaml > jenkins-sa.yaml - 本地
kube/config文件路径为/home/ec2-user - 执行
kubectl apply -f jenkins-sa.yaml应用配置 - 执行
kubectl describe serviceaccount jenkins查看信息时,未看到默认应关联的Secret Token(截图显示输出中无Tokens相关条目)
问题原因
从Kubernetes 1.24版本开始,默认不再自动为ServiceAccount创建并关联Secret Token,这是官方的默认行为变更——之前的K8s版本会自动生成关联的Token Secret,1.24及以上版本需要手动创建Token或使用TokenRequest API来获取。
解决办法
1. 生成临时Token(推荐,安全)
执行以下命令直接生成临时Bearer Token,默认有效期1小时,可通过--duration指定更长有效期:
# 生成默认1小时有效期的Token kubectl create token jenkins # 生成有效期30天的Token kubectl create token jenkins --duration=720h
2. 创建长期Token Secret(不推荐,存在安全风险)
创建jenkins-sa-token.yaml文件,内容如下:
apiVersion: v1 kind: Secret metadata: name: jenkins-sa-token annotations: kubernetes.io/service-account.name: jenkins type: kubernetes.io/service-account-token
执行命令应用配置:
kubectl apply -f jenkins-sa-token.yaml
之后再执行kubectl describe serviceaccount jenkins,就能看到关联的Token条目了。
3. 检查ServiceAccount配置
确认ServiceAccount未禁用自动挂载Token:
kubectl get serviceaccount jenkins -o yaml
如果输出中存在automountServiceAccountToken: false,需要删除该配置后重新apply,否则即使创建了Token也不会自动挂载。
内容的提问来源于stack exchange,提问作者Emmanuel Spencer Egbuniwe
相关产品推荐
相关产品推荐

