Kubelet 配置 (v1)

资源类型

CredentialProviderConfig

CredentialProviderConfig 是包含每个 exec 凭据提供程序信息的配置。Kubelet 从磁盘读取此配置,并如 CredentialProvider 类型所指定的那样启用每个提供程序。

字段描述
apiVersion
字符串
kubelet.config.k8s.io/v1
kind
字符串
CredentialProviderConfig
providers [必需]
[]CredentialProvider

providers 是 kubelet 将启用的凭据提供程序插件列表。如果多个提供程序与单个镜像匹配,则来自所有提供程序的凭据都将返回给 kubelet。如果为单个镜像调用了多个提供程序,则结果将合并。如果提供程序返回重叠的身份验证密钥,则首先尝试列表中较早提供程序的值。

CredentialProvider

出现于

CredentialProvider 代表 kubelet 将调用的 exec 插件。仅当正在拉取的镜像与插件处理的镜像匹配(请参阅 matchImages)时,才会调用该插件。

字段描述
name [必需]
字符串

name 是凭据提供程序的必需名称。它必须与 kubelet 看到的提供程序可执行文件的名称匹配。可执行文件必须位于 kubelet 的 bin 目录中(由 --image-credential-provider-bin-dir 标志设置)。需要在所有提供程序中是唯一的。

matchImages [必需]
[]string

matchImages 是一个必需的字符串列表,用于与镜像进行匹配,以确定是否应调用此提供程序。如果字符串之一与 kubelet 请求的镜像匹配,则将调用该插件并有机会提供凭据。预计镜像包含注册表域和 URL 路径。

matchImages 中的每个条目都是一个模式,该模式可以选择性地包含端口和路径。可以在域中使用通配符,但不能在端口或路径中使用。通配符可以作为子域使用,例如 '.k8s.io' 或 'k8s..io',以及顶级域名,例如 'k8s.'。也支持匹配部分子域,例如 'app.k8s.io'。每个通配符只能匹配单个子域段,因此 *.io 不匹配 *.k8s.io。

当镜像与 matchImage 存在匹配时,必须满足以下所有条件

  • 两者包含相同数量的域部分,并且每个部分匹配。
  • imageMatch 的 URL 路径必须是目标镜像 URL 路径的前缀。
  • 如果 imageMatch 包含端口,则镜像中的端口也必须匹配。

matchImages 的示例值

  • 123456789.dkr.ecr.us-east-1.amazonaws.com
  • *.azurecr.io
  • gcr.io
  • ..registry.io
  • registry.io:8080/path
defaultCacheDuration [必需]
meta/v1.Duration

defaultCacheDuration 是插件将在内存中缓存凭据的默认持续时间,如果插件响应中未提供缓存持续时间。此字段是必需的。

apiVersion [必需]
字符串

所需的 exec CredentialProviderRequest 输入版本。返回的 CredentialProviderResponse 必须使用与输入相同的编码版本。当前支持的值是

  • credentialprovider.kubelet.k8s.io/v1
args
[]string

在执行时传递给命令的参数。

env
[]ExecEnvVar

Env 定义要暴露给进程的附加环境变量。这些环境变量与主机环境以及 client-go 用于将参数传递给插件的环境变量合并。

tokenAttributes
ServiceAccountTokenAttributes

tokenAttributes 是将传递给插件的服务帐户令牌的配置。凭据提供程序通过设置此字段选择使用服务帐户令牌进行镜像拉取。当设置此字段时,kubelet 将为正在拉取的镜像的 Pod 生成一个绑定到服务帐户的服务帐户令牌,并将其作为 CredentialProviderRequest 的一部分以及插件所需的其他属性传递给插件。

服务帐户元数据和令牌属性将用作在 kubelet 中缓存凭据的维度。缓存密钥是通过组合服务帐户元数据(命名空间、名称、UID 以及服务帐户令牌属性中定义的键+值对的注释)生成的。服务帐户令牌中包含的 Pod 元数据(命名空间、名称、UID)不用于在 kubelet 中缓存凭据的维度。这意味着使用相同服务帐户的工作负载最终可能会使用相同的镜像拉取凭据。对于不希望这种行为的插件,或者以直通模式运行的插件;即,它们将服务帐户令牌原样返回,它们可以将 credentialProviderResponse.cacheDuration 设置为 0。这将禁用 kubelet 中的凭据缓存,并且每次拉取镜像时都会调用该插件。这会导致每次拉取镜像都产生令牌生成开销,但这是确保凭据不跨 Pod 共享的唯一方法(即使它们使用相同的服务帐户)。

ExecEnvVar

出现于

ExecEnvVar 用于在执行基于 exec 的凭据插件时设置环境变量。

字段描述
name [必需]
字符串
未提供描述。
value [必需]
字符串
未提供描述。

ServiceAccountTokenAttributes

出现于

ServiceAccountTokenAttributes 是将传递给插件的服务帐户令牌的配置。

字段描述
serviceAccountTokenAudience [必需]
字符串

serviceAccountTokenAudience 是投射的服务帐户令牌的预期受众。

cacheType [必需]
ServiceAccountTokenCacheType

cacheType 指示当使用服务帐户令牌时,用于缓存插件返回的凭据的缓存密钥类型。最保守的选项是将此设置为“Token”,这意味着 kubelet 将基于每个令牌缓存返回的凭据。如果返回的凭据的生命周期限制为服务帐户令牌的生命周期,则应设置此项。如果插件的凭据检索逻辑仅依赖于服务帐户而不依赖于 Pod 特定的声明,则插件可以将此设置为“ServiceAccount”。在这种情况下,kubelet 将基于每个服务帐户缓存返回的凭据。当返回的凭据对使用相同服务帐户的所有 Pod 有效时,请使用此项。

requireServiceAccount [必需]
bool

requireServiceAccount 指示插件是否需要 Pod 具有服务帐户。如果设置为 true,kubelet 仅在 Pod 具有服务帐户时才会调用该插件。如果设置为 false,kubelet 即使在 Pod 没有服务帐户时也会调用该插件,并且不会在那种情况下在 CredentialProviderRequest 中包含令牌。

requiredServiceAccountAnnotationKeys
[]string

requiredServiceAccountAnnotationKeys 是插件感兴趣的并且需要在服务帐户中存在的注释键列表。将从相应的服务帐户中提取此列表中定义的键,并作为 CredentialProviderRequest 的一部分传递给插件。如果此列表中定义的任何键不存在于服务帐户中,kubelet 将不会调用该插件并返回错误。此字段是可选的,可以为空。插件可以使用此字段提取获取凭据或允许工作负载选择使用服务帐户令牌进行镜像拉取的其他信息。

optionalServiceAccountAnnotationKeys
[]string

optionalServiceAccountAnnotationKeys 是插件感兴趣的并且可以存在于服务帐户中的注释键列表。将从相应的服务帐户中提取此列表中定义的键,并作为 CredentialProviderRequest 的一部分传递给插件。插件负责验证注释的存在及其值。此字段是可选的,可以为空。插件可以使用此字段提取获取凭据所需的其他信息。

ServiceAccountTokenCacheType

(string 的别名)

出现于

ServiceAccountTokenCacheType 是用于缓存插件返回的凭据的缓存密钥类型,当使用服务帐户令牌时。

本页面是自动生成的。

如果您打算报告此页面的问题,请在您的问题描述中提及该页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。

最后修改时间为 2025 年 9 月 4 日下午 5:02 PST:Config API for v1.34 (3557e3070d)