此文档中的信息可能已过时
此文档的更新日期比原文晚,因此其中的信息可能已过时。如果能阅读英文,请查看英文版本以获取最新信息: Kubelet Configuration (v1)
Kubelet 配置 (v1)
资源类型
CredentialProviderConfig
CredentialProviderConfig 包含有关每个 exec 凭据提供程序的配置信息。 Kubelet 从磁盘上读取这些配置信息,并根据 CredentialProvider 类型启用各个提供程序。
字段 | 描述 |
---|---|
apiVersion string | kubelet.config.k8s.io/v1 |
kind string | CredentialProviderConfig |
providers [必需][]CredentialProvider
|
|
CredentialProvider
出现在:
CredentialProvider 代表的是要被 kubelet 调用的一个 exec 插件。
这一插件只会在所拉取的镜像与该插件所处理的镜像匹配时才会被调用(参见 matchImages
)。
字段 | 描述 |
---|---|
name [必需]string
|
|
matchImages [必需][]string
|
对于 'app.k8s.io' 这类部分子域名的匹配也是支持的。 每个通配符只能用来匹配一个子域名段,所以 *.io 不会匹配 *.k8s.io。 镜像与
|
defaultCacheDuration [必需]meta/v1.Duration
|
|
apiVersion [必需]string
|
要求 exec 插件 CredentialProviderRequest 请求的输入版本。 所返回的 CredentialProviderResponse 必须使用与输入相同的编码版本。当前支持的值有:
|
args []string
|
在执行插件可执行文件时要传递给命令的参数。 |
env []ExecEnvVar
|
|
tokenAttributes ServiceAccountTokenAttributes
|
tokenAttributes 是将传递给插件的服务账号令牌的配置。 凭据提供程序通过设置此字段选择使用服务账号令牌进行镜像拉取。 当设置了此字段后,kubelet 将为正在拉取镜像的 Pod 生成一个绑定到此 Pod 的服务账号令牌, 并将其作为 CredentialProviderRequest 的一部分传递给插件,同时传递插件所需的其他属性。 服务账号的元数据和令牌属性将作为 kubelet 中缓存凭据的一个维度。 缓存键由服务账号的元数据(命名空间、名称、UID 以及 serviceAccountTokenAttribute.requiredServiceAccountAnnotationKeys 和 serviceAccountTokenAttribute.optionalServiceAccountAnnotationKeys 中定义的注解键及其对应的值)组合生成。 服务账号令牌中的 Pod 元数据(命名空间、名称、UID)不会作为 kubelet 缓存凭据的维度。 这意味着,使用相同服务账号的工作负载可能会共用相同的凭据进行镜像拉取。 对于不希望出现此行为的插件,或者以直通模式运行的插件(即直接返回服务账号令牌而不做处理),可以将 credentialProviderResponse.cacheDuration 设置为 0。这一设置将禁用 kubelet 中凭据的缓存机制, 每次镜像拉取时都会调用插件。虽然这样设置会导致每次镜像拉取时都要重新生成令牌,因而带来额外开销, 但这是确保凭据不会在使用相同服务账号的多个 Pod 之间共享的唯一方式。 |
ExecEnvVar
出现在:
ExecEnvVar 用来在执行基于 exec 的凭据插件时设置环境变量。
字段 | 描述 |
---|---|
name [必需]string
|
环境变量名称 |
value [必需]string
|
环境变量取值 |
ServiceAccountTokenAttributes
出现在:
ServiceAccountTokenAttributes 是将被传递给插件的服务账号令牌的配置。
字段 | 描述 |
---|---|
serviceAccountTokenAudience [必需]string
|
serviceAccountTokenAudience 是投射的服务账号令牌的目标受众。 |
requireServiceAccount [必需]bool
|
requireServiceAccount 指示插件是否需要 Pod 拥有服务帐号。 如果设置为 true,kubelet 仅在 Pod 拥有服务账号时才会调用插件。 如果设置为 false,即使 Pod 没有服务账号,kubelet 也会调用插件, 并且不会在 CredentialProviderRequest 中包含令牌。 这对于用于拉取没有服务账号的 Pod(例如静态 Pod)镜像的插件非常有用。 |
requiredServiceAccountAnnotationKeys []string
|
requiredServiceAccountAnnotationKeys 是插件感兴趣的注解键列表;这些键需要存在于服务帐号中。 在此列表中定义的键将从相应的服务帐号中提取,并作为 CredentialProviderRequest 的一部分传递给插件。 如果此列表中定义的任何一个键不存在于服务账号中,kubelet 将不会调用插件并返回错误。 此字段是可选的,可以为空。插件可以使用此字段提取获取凭据所需的额外信息, 或允许工作负载选择使用服务帐号令牌进行镜像拉取。 如果非空,则 requireServiceAccount 必须设置为 true。 |
optionalServiceAccountAnnotationKeys []string
|
optionalServiceAccountAnnotationKeys 是插件感兴趣的注解键列表,并且这些键在服务帐号中是可选存在的。 在此列表中定义的键将从相应的服务账号中提取,并作为 CredentialProviderRequest 的一部分传递给插件。 插件负责验证注解及其值的存在性。此字段是可选的,可以为空。 插件可以使用此字段提取获取凭据所需的额外信息。 |