【问题标题】:Why would /var/run/secrets/kubernetes.io/serviceaccount/token be an empty file in a Pod?为什么 /var/run/secrets/kubernetes.io/serviceaccount/token 会是 Pod 中的空文件?
【发布时间】:2018-05-23 03:06:42
【问题描述】:

我使用的是 vanilla minikube 环境。

我没有在我的基本简单 Pod .yaml 文件中指定任何与服务帐户相关的说明。

在部署的 Pod 中,/var/run/secrets/kubernetes.io/serviceaccount/token 是空的。造成这种情况的可能原因是什么?

【问题讨论】:

  • 您使用的是哪个 minikube/k8s 版本?
  • minikube 0.24.1.

标签: kubernetes minikube


【解决方案1】:

如上所述in the docs

在 1.6+ 版本中,您可以通过在服务帐户上设置 automountServiceAccountToken: false 来选择不为服务帐户自动挂载 API 凭据:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: build-robot
automountServiceAccountToken: false

在 1.6+ 版本中,您还可以选择不为特定 pod 自动挂载 API 凭据:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  serviceAccountName: build-robot
  automountServiceAccountToken: false

因此,请仔细检查您的 pod 文件并使用以下命令检查您的 ServiceAccount 配置 kubectl describe serviceaccount build-robot 看看你是否禁用了自动挂载。

【讨论】:

  • 非常感谢您的回答;这是一个非常好的想法,我从中学到了一些东西。不幸的是,事实并非如此。 :-(
  • ServiceAccount 是否存在?
  • ls -al 显示指向真实文件的 token 符号链接,正如它应该指向的那样。任何对cat 的尝试都不会产生任何结果。
【解决方案2】:

我在 Ubuntu 18.04 上使用 minikube v1.13.1 时遇到了这个问题,使用“none”驱动程序在 Docker 19.03.6 上运行 Kubernetes v1.19.2。

我看到在 Kubernetes 中正确填充了 serviceaccount 令牌密钥,并且它作为每个 pod 的卷挂载,但是目录(在 pod 中和节点本身上)是空的。

我发现问题是由禁用“storage-provisioner”插件引起的,并通过重新启用它来解决。

【讨论】:

    猜你喜欢
    • 2017-09-08
    • 2023-03-28
    • 2018-06-10
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2021-10-12
    • 1970-01-01
    相关资源
    最近更新 更多