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

K8s 1.24中如何为ServiceAccount添加可挂载密钥?

解决方案

1. 修复ServiceAccount的Mountable Secrets为空问题

你需要在ServiceAccount的配置中显式关联手动创建的令牌Secret,Kubernetes 1.24+版本不会自动将手动创建的ServiceAccountToken Secret加入到Mountable Secrets列表。

更新你的ServiceAccount YAML:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: spinnaker-sa
  namespace: spinnaker
# 添加secrets字段关联你的令牌Secret
secrets:
- name: sa-token

执行更新命令:

kubectl apply -f <你的SA配置文件路径>

再次执行kubectl describe serviceaccount spinnaker-sa -n spinnaker,此时Mountable secrets会显示为sa-token。

2. 确保Secret配置的正确性

检查你创建的令牌Secret是否满足以下要求:

  • type必须为kubernetes.io/service-account-token
  • metadata.annotations.kubernetes.io/service-account.name必须与ServiceAccount名称完全一致(这里是spinnaker-sa)
  • kubernetes.io/enforce-mountable-secrets: "true"注解是可选的,它用于限制该Secret仅能被关联的ServiceAccount挂载,增强安全性。

3. 将令牌挂载到Pod中

如果需要将该令牌挂载到Pod,只需在Pod配置中指定对应的ServiceAccount即可,Kubernetes会自动挂载关联的令牌到默认路径/var/run/secrets/kubernetes.io/serviceaccount:

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
  namespace: spinnaker
spec:
  # 指定使用的ServiceAccount
  serviceAccountName: spinnaker-sa
  containers:
  - name: your-container
    image: <你的镜像>
    # ... 其他容器配置

若需自定义挂载路径,可手动配置volumes和volumeMounts:

spec:
  serviceAccountName: spinnaker-sa
  volumes:
  - name: sa-token-vol
    secret:
      secretName: sa-token
  containers:
  - name: your-container
    image: <你的镜像>
    volumeMounts:
    - name: sa-token-vol
      mountPath: /custom/mount/path
      readOnly: true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:50:29