我正在尝试将serviceAccount令牌投影到我的荚中,如k8s doc-https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#service-account-token-volume-projection中所描述的。
我使用以下命令创建一个服务帐户
kubectl create sa acct
然后我创造了豆荚
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
我的迷你版: v0.33.1
kubectl版本: 1.13
问题:
发布于 2019-04-02 08:00:12
我在kubeadm上试了一下,结果成功了。@Aman是对的,您必须添加文档中描述的API标志。
您可以通过创建服务帐户,然后将此标志添加到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,它将工作。正如您在描述pod中所看到的那样:
Volumes:
vault-token:
Type: Projected (a volume that contains injected data from multiple sources)
移除为非工作溶液
不幸的是,在我的例子中,我的minikube不想从这个标志开始,它被卡住了:waiting for pods: apiserver
,很快,我将再次尝试调试。
更新
原来,您只需将参数传递到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可以工作。
发布于 2019-03-31 07:35:42
您应该使用部署,因为当您使用部署时,令牌将自动挂载到吊舱中。
https://stackoverflow.com/questions/55437231
复制相似问题