kubernetes - 如何使用 kubectl run 命令创建使用非默认服务帐户的 Pod?

标签 kubernetes kubectl

我正在尝试使用 kubectl run 命令创建一个使用自定义服务帐户“svcacct1”而不是默认服务帐户的 Pod。似乎没有用于在运行命令中提供特定服务帐户的开关,因此利用 --overrides 开关来提供 JSON,如下所示。

kubectl run ng2 --image=nginx --namespace=test --overrides='{ "apiVersion": "apps/v1", "spec": { "serviceAccount": "svcacct1" , "serviceAccountName": "svcacct1" }  }' -o yaml

这确实成功创建了 Pod(和部署),但不利用“svcacct1”而是使用“默认”,如下所示(仅显示输出的相关部分)
> kubectl get po ng2-569d45c6b5-c9zhp -o yaml -n test

spec:
  containers:
  - image: nginx
    imagePullPolicy: Always
    name: ng2
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: default-token-cpwjr
      readOnly: true
  dnsPolicy: ClusterFirst
  enableServiceLinks: true
  nodeName: minikube
  priority: 0
  restartPolicy: Always
  schedulerName: default-scheduler
  securityContext: {}
  serviceAccount: default
  serviceAccountName: default
  terminationGracePeriodSeconds: 30 

此外,该帐户确实存在于正确的命名空间中。
> kubectl get serviceaccount svcacct1 -o yaml -n test

apiVersion: v1
kind: ServiceAccount
metadata:
  creationTimestamp: "2019-05-01T11:56:52Z"
  name: svcacct1
  namespace: test
  resourceVersion: "632061"
  selfLink: /api/v1/namespaces/test/serviceaccounts/svcacct1
  uid: 3573ffc6-6c08-11e9-9c81-0800270172ea
secrets:
- name: svcacct1-token-q9ksc

目前尚不清楚这个工作缺少什么?

最佳答案

至少在 kubectl 1.14 中有这样一个标志:

$ kubectl version --client
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.0", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-26T00:04:52Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"darwin/amd64"}
$ kubectl run -h | grep -- "--serviceaccount"
      --serviceaccount='': Service account to set in the pod spec

关于kubernetes - 如何使用 kubectl run 命令创建使用非默认服务帐户的 Pod?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55940137/

相关文章:

kubernetes - 无法删除 kubernetes 部署中的复制 Controller 管理器

ubuntu - 在以非 root 用户身份运行的 Kubernetes pod 中将 cron 作为后台进程运行

go - 如何在kubernetes中过滤完成的作业

kubernetes - 在Kubernetes Pod部署名称上添加随机字符串

amazon-web-services - 无法在 ec2 中启动 minikube 显示 "X Sorry, Kubernetes v1.18.0 requires conntrack to be installed in root' s 路径”

docker - 如何使用kubectl命令生成yaml模板?

kubernetes - kubectl 顶级节点显示错误 : metrics not available yet

logging - GKE-堆栈驱动程序

spring-boot - 带有 url 参数的 Kubernetes 入口路由

kubernetes - 访问 Kubernetes CronJob 中的计划运行时间