你正在查看的文档所针对的是 Kubernetes 版本: v1.29

Kubernetes v1.29 版本的文档已不再维护。你现在看到的版本来自于一份静态的快照。如需查阅最新文档,请点击 最新版本。

Kubelet 配置 (v1alpha1)

资源类型

CredentialProviderConfig

CredentialProviderConfig 包含有关每个 exec 凭据提供者的配置信息。 Kubelet 从磁盘上读取这些配置信息,并根据 CredentialProvider 类型启用各个提供者。

字段描述
apiVersion
string
kubelet.config.k8s.io/v1alpha1
kind
string
CredentialProviderConfig
providers [必需]
[]CredentialProvider
providers 是一组凭据提供者插件,这些插件会被 kubelet 启用。 多个提供者可以匹配到同一镜像上,这时,来自所有提供者的凭据信息都会返回给 kubelet。 如果针对同一镜像调用了多个提供者,则结果会被组合起来。如果提供者返回的认证主键有重复, 列表中先出现的提供者所返回的值将被使用。

CredentialProvider

出现在:

CredentialProvider 代表的是要被 kubelet 调用的一个 exec 插件。 这一插件只会在所拉取的镜像与该插件所处理的镜像匹配时才会被调用(参见 matchImages)。

字段描述
name [必需]
string
name 是凭据提供者的名称(必需)。此名称必须与 kubelet 所看到的提供者可执行文件的名称匹配。可执行文件必须位于 kubelet 的 bin 目录(通过 --image-credential-provider-bin-dir 设置)下。
matchImages [必需]
[]string

matchImages 是一个必须设置的字符串列表,用来匹配镜像以便确定是否要调用此提供者。 如果字符串之一与 kubelet 所请求的镜像匹配,则此插件会被调用并给予提供凭证的机会。 镜像应该包含镜像库域名和 URL 路径。

matchImages 中的每个条目都是一个模式字符串,其中可以包含端口号和路径。 域名部分可以包含统配符,但端口或路径部分不可以。通配符可以用作子域名,例如 *.k8s.iok8s.*.io,以及顶级域名,如 k8s.*

对类似 app*.k8s.io 这类部分子域名的匹配也是支持的。 每个通配符只能用来匹配一个子域名段,所以 *.io 不会匹配 *.k8s.io

镜像与 matchImages 之间存在匹配时,以下条件都要满足:

  • 二者均包含相同个数的域名部分,并且每个域名部分都对应匹配;
  • matchImages 条目中的 URL 路径部分必须是目标镜像的 URL 路径的前缀;
  • 如果 matchImages 条目中包含端口号,则端口号也必须与镜像端口号匹配。

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 [必需]
string

要求 exec 插件 CredentialProviderRequest 请求的输入版本。 所返回的 CredentialProviderResponse 必须使用与输入相同的编码版本。当前支持的值有:

  • credentialprovider.kubelet.k8s.io/v1alpha1
args
[]string
在执行插件可执行文件时要传递给命令的参数。
env
[]ExecEnvVar
env 定义要提供给插件进程的额外的环境变量。 这些环境变量会与主机上的其他环境变量以及 client-go 所使用的环境变量组合起来, 一起传递给插件。

ExecEnvVar

出现在:

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

字段描述
name [必需]
string
环境变量名称。
value [必需]
string
环境变量取值。