簡體   English   中英

k8s - 如何將服務帳戶令牌投影到pod中

[英]k8s - how to project service account token into pod

我正在嘗試將serviceAccount標記投影到我的pod中,如本k8s文檔中所述 - https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#service-account-token-volume - 投影

我使用下面的命令創建一個服務帳戶

kubectl create sa acct

然后我創建了pod

kind: Pod
apiVersion: v1
metadata:
  name: nginx
spec:
  containers:
  - image: nginx
    name: nginx
    volumeMounts:
    - mountPath: /var/run/secrets/tokens
      name: vault-token
  serviceAccountName: acct
  volumes:
  - name: vault-token
    projected:
      sources:
      - serviceAccountToken:
          path: vault-token
          expirationSeconds: 7200

它因以下問題而失敗 - MountVolume.SetUp failed for volume "vault-token" : failed to fetch token: the server could not find the requested resource

Events:
  Type     Reason       Age                   From               Message
  ----     ------       ----                  ----               -------
  Normal   Scheduled    5m15s                 default-scheduler  Successfully assigned default/nginx to minikube
  Warning  FailedMount  65s (x10 over 5m15s)  kubelet, minikube  MountVolume.SetUp failed for volume "vault-token" : failed to fetch token: the server could not find the requested resource

我的minikube版本:v0.33.1

kubectl版本:1.13

題:

  • 我在這做錯了什么?

您應該使用部署,因為當您使用部署時,令牌會自動掛載到窗格中。

我在kubeadm上嘗試了這個,並且能夠成功。 @Aman Juneja是對的,你必須按照文檔中的描述添加API標志。

您可以通過創建serviceaccount然后將此標志添加到kubeapi來實現:

sudo vim /etc/kubernetes/manifests/kube-apiserver.yaml

- --service-account-issuer=api
- --service-account-signing-key-file=/etc/kubernetes/pki/apiserver.key
- --service-account-api-audiences=api

之后應用你的pod.yaml,它會工作。 正如您將在describe pod中看到的:

Volumes:
  vault-token:
    Type:                    Projected (a volume that contains injected data from multiple sources)

[刪除不工作的解決方案]

不幸的是在我的情況下我的minikube不想從這個標志開始,它被卡住了: waiting for pods: apiserver很快我將嘗試再次調試。

UPDATE

事實證明你必須將參數傳遞到minikube中,其中包含來自minikubeVM內部的目錄,而不是像我之前的例子那樣傳遞到外部(所以.minikube目錄),所以它看起來像這樣:

minikube start \
 --extra-config=apiserver.service-account-signing-key-file=/var/lib/minikube/certs/apiserver.key \
  --extra-config=apiserver.service-account-issuer=api \
  --extra-config=apiserver.service-account-api-audiences=api 

之后創建ServiceAccount並應用pod.yaml工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM