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

Kubernetes创建带Token的ServiceAccount时kubectl exec报错求助

Kubernetes创建关联ServiceAccount的Pod并获取Token的正确命令

1. 创建cicd ServiceAccount

kubectl create serviceaccount cicd

2. 部署关联该ServiceAccount的Nginx Pod

方式一:用kubectl run快速创建

kubectl run cicd-nginx-pod --image=nginx --serviceaccount=cicd

方式二:用YAML配置文件创建

创建cicd-pod.yaml文件:

apiVersion: v1
kind: Pod
metadata:
  name: cicd-nginx-pod
spec:
  serviceAccountName: cicd
  containers:
  - name: nginx-container
    image: nginx

执行部署:

kubectl apply -f cicd-pod.yaml

3. 正确获取Pod内的ServiceAccount Token

步骤1:获取目标Pod名称

先查看运行中的Pod:

kubectl get pods

输出会显示类似cicd-nginx-pod-xxxxxx-xxxxx的Pod名称,记下来替换以下命令中的<pod-name>。

步骤2:执行正确的kubectl exec命令

使用新格式(避免弃用提示),如果Pod只有一个容器,可省略容器名:

kubectl exec <pod-name> -- cat /run/secrets/kubernetes.io/serviceaccount/token

如果Pod有多个容器,需要指定容器名(比如上面YAML中的nginx-container):

kubectl exec <pod-name> -c nginx-container -- cat /run/secrets/kubernetes.io/serviceaccount/token

4. 直接生成ServiceAccount短期Token(推荐)

你已经使用的kubectl create token命令是正确的,无需进入Pod即可生成该ServiceAccount的短期Token:

kubectl create token cicd

错误原因说明

  • 你之前的kubectl exec命令误用了ServiceAccount名称cicd作为Pod名称,必须替换为实际运行的Pod名称
  • 旧格式kubectl exec [POD] [COMMAND]已被弃用,必须使用kubectl exec <pod-name> -- <command>的新格式来分隔kubectl参数与容器内执行的命令

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:40:26