如果 automountServiceAccountToken 设置为 false,Pod 服务帐户的用途是什么?

Shu*_*eng 20 cloud kubernetes rancher

服务帐户的 API 凭证通常挂载在 pod 中,如下所示:

/var/run/secrets/kubernetes.io/serviceaccount/token
Run Code Online (Sandbox Code Playgroud)

此令牌允许 Pod 中的容器化进程与 API 服务器进行通信。

如果设置为serviceAccountName,Pod 的服务帐户 ( )的用途是什么?automountServiceAccountTokenfalse

moo*_*tte 16

一点理论:

让我们从创建 pod 时发生的情况开始。

创建pod时,如果不指定service account,会自动分配同一个namespace下的默认service account

参考

因此,所有 pod 都链接到服务帐户(默认或在 中指定spec)。

然后始终为每个服务帐户生成 API 访问令牌。

automountServiceAccountTokenflag 定义此令牌在创建后是否会自动挂载到 pod。

有两个选项可以设置此标志:


回答:

如果 automountServiceAccountToken 设置为 false,Pod 的服务帐户 (serviceAccountName) 的用途是什么?

这可能会有所不同,具体取决于 Pod 创建中涉及的进程。GitHub 问题中的评论就是一个很好的例子(这个标志最终来自于此):

在某些用例中,仍然创建令牌(用于外部系统)或仍然将服务帐户与 Pod 关联(用于图像拉取机密),但能够选择退出 API 令牌自动挂载(对于特定 Pod) ,或对于特定服务帐户)很有用。

  • 请注意,此行为自 v1.25.0 起已更改 (2认同)