Kubelet 配置 (v1alpha1)

资源类型

CredentialProviderConfig

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

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

ImagePullIntent

ImagePullIntent 是 kubelet 尝试拉取镜像的记录。

字段描述
apiVersion
string
kubelet.config.k8s.io/v1alpha1
kind
string
ImagePullIntent
image [必需]
string

image 是容器 image 字段中的镜像规约。 文件名是此值的 SHA-256 哈希,这样做是为了避免文件名中不安全的字符,如 ':' 和 '/'。

ImagePulledRecord

ImagePullRecord 是 kubelet 拉取的镜像的记录。

如果 kubernetesSecrets 字段中没有记录,且 nodeWideCredentialsanonymous 均为 false,则当请求此记录表示的镜像时,必须重新检查凭据。

字段描述
apiVersion
string
kubelet.config.k8s.io/v1alpha1
kind
string
ImagePulledRecord
lastUpdatedTime [必需]
meta/v1.Time

lastUpdatedTime 是此记录上次更新的时间

imageRef [必需]
string

imageRef 是从 CRI 接收到的此文件所代表的镜像的引用。 文件名是此值的 SHA-256 哈希。这是为了避免文件名中不安全的字符,如 ':' 和 '/'。

credentialMapping [必需]
map[string]ImagePullCredentials

credentialMapping 将 image 映射到之前拉取它时使用的凭据集。 这里的 image 是 Pod 的容器中 image 字段的内容, 已去除其标签/摘要。

示例: 容器请求 hello-world:latest@sha256:91fb4b041da273d5a3273b6d587d62d518300a6ad268b28628f74997b93171b2 镜像: "credentialMapping": { "hello-world": { "nodePodsAccessible": true } }

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
环境变量取值。

ImagePullCredentials

出现在:

ImagePullCredentials 描述了可以用于拉取镜像的凭据。

字段描述
kubernetesSecrets
[]ImagePullSecret

kuberneteSecretCoordinates 是用于拉取镜像的所有 Kubernetes Secret 的坐标索引。

nodePodsAccessible
bool

nodePodsAccessible 是一个标志,表示节点上的所有 Pod 都可以访问拉取凭据, 或者拉取不需要凭据。

如果为 true,则与 kubernetesSecrets 字段互斥。

ImagePullSecret

出现在:

ImagePullSecret 是 Kubernetes Secret 对象坐标的表示, 以及此对象包含的拉取 Secret 凭据的哈希值。

字段描述
uid [必需]
string
没有提供描述。
namespace [必需]
string
没有提供描述。
name [必需]
string
没有提供描述。
credentialHash [必需]
string

credentialHash 是通过对镜像拉取凭据的内容进行哈希计算获得的 SHA-256 值, 这些凭据由 UID/命名空间/名称坐标指定的 Secret 提供。

最后修改 May 16, 2025 at 9:07 AM PST: [zh-cn]sync kubelet-config.v1alpha1.md (9f77ed51dc)