树叶云kubernetes教程:Kubernetes 配置kubelet镜像凭据提供程序

配置 kubelet 镜像凭据提供程序

特性状态: Kubernetes v1.20 [alpha]

从 Kubernetes v1.20 开始,kubelet 可以使用 exec 插件动态检索容器镜像注册中心的凭据。 kubelet 和 exec 插件使用 Kubernetes 版本化 API 通过标准输入输出(标准输入、标准输出和标准错误)通信。 这些插件允许 kubelet 动态请求容器注册中心的凭据,而不是将静态凭据存储在磁盘上。 例如,插件可能会与本地元数据通信,以检索 kubelet 正在拉取的镜像的短期凭据。

如果以下任一情况属实,你可能对此功能感兴趣:

  • 需要调用云提供商的 API 来检索注册中心的身份验证信息。
  • 凭据的到期时间很短,需要频繁请求新凭据。
  • 将注册中心凭据存储在磁盘或者 imagePullSecret 是不可接受的。

在开始之前

  • kubelet 镜像凭证提供程序在 v1.20 版本作为 alpha 功能引入。 与其他 alpha 功能一样,当前仅当在 kubelet 启动 ​KubeletCredentialProviders ​特性门禁才能使该功能正常工作。
  • 凭据提供程序 exec 插件的工作实现。你可以构建自己的插件或使用云提供商提供的插件。

在节点上安装插件

凭据提供程序插件是将由 kubelet 运行的可执行二进制文件。 确保插件二进制存在于你的集群的每个节点上,并存储在已知目录中。 稍后配置 kubelet 标志需要该目录。

配置 kubelet

为了使用这个特性,kubelet 需要设置以下两个标志:

  • --image-credential-provider-config​ —— 凭据提供程序插件配置文件的路径。
  • --image-credential-provider-bin-dir​ —— 凭据提供程序插件二进制文件所在目录的路径。

配置 kubelet 凭据提供程序

kubelet 会读取传入 ​--image-credential-provider-config​ 的配置文件, 以确定应该为哪些容器镜像调用哪些 exec 插件。 如果你正在使用基于 ECR 的插件, 这里有个样例配置文件你可能最终会使用到:

apiVersion: kubelet.config.k8s.io/v1alpha1
kind: CredentialProviderConfig
# providers 是将由 kubelet 启用的凭证提供程序插件列表。
# 多个提供程序可能与单个镜像匹配,在这种情况下,来自所有提供程序的凭据将返回到 kubelet。
# 如果为单个镜像调用多个提供程序,则结果会合并。
# 如果提供程序返回重叠的身份验证密钥,则使用提供程序列表中较早的值。
providers:
  # name 是凭据提供程序的必需名称。 
  # 它必须与 kubelet 看到的提供程序可执行文件的名称相匹配。
  # 可执行文件必须在 kubelet 的 bin 目录中
  # (由 --image-credential-provider-bin-dir 标志设置)。
  - name: ecr
    # 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
    matchImages:
      - "*.dkr.ecr.*.amazonaws.com"
      - "*.dkr.ecr.*.amazonaws.cn"
      - "*.dkr.ecr-fips.*.amazonaws.com"
      - "*.dkr.ecr.us-iso-east-1.c2s.ic.gov"
      - "*.dkr.ecr.us-isob-east-1.sc2s.sgov.gov"
    # defaultCacheDuration 是插件将在内存中缓存凭据的默认持续时间
    # 如果插件响应中未提供缓存持续时间。此字段是必需的。
    defaultCacheDuration: "12h"
    # exec CredentialProviderRequest 的必需输入版本。
    # 返回的 CredentialProviderResponse 必须使用与输入相同的编码版本。当前支持的值为:
    # - credentialprovider.kubelet.k8s.io/v1alpha1
    apiVersion: credentialprovider.kubelet.k8s.io/v1alpha1
    # 执行命令时传递给命令的参数。
    # +可选
    args:
      - get-credentials
    # env 定义了额外的环境变量以暴露给进程。
    # 这些与主机环境以及 client-go 用于将参数传递给插件的变量结合在一起。
    # +可选
    env:
      - name: AWS_PROFILE
        value: example_profile

providers ​字段是 kubelet 使用的已启用插件列表。每个条目都有几个必填字段:

  • name​:插件的名称,必须与传入​--image-credential-provider-bin-dir​ 的目录中存在的可执行二进制文件的名称相匹配。
  • matchImages​:用于匹配镜像以确定是否应调用此提供程序的字符串列表。更多相关信息如下。
  • defaultCacheDuration​:如果插件未指定缓存持续时间,kubelet 将在内存中缓存凭据的默认持续时间。
  • apiVersion​:kubelet 和 exec 插件在通信时将使用的 API 版本。

每个凭证提供程序也可以被赋予可选的参数和环境变量。 咨询插件实现者以确定给定插件需要哪些参数和环境变量集。

配置镜像匹配 

kubelet 使用每个凭证提供程序的 ​matchImages ​字段来确定是否应该为 Pod 正在使用的给定镜像调用插件。 ​matchImages ​中的每个条目都是一个镜像模式,可以选择包含端口和路径。 通配符可以在域中使用,但不能在端口或路径中使用。 支持通配符作为子域,如 ​*.k8s.io​ 或 ​k8s.*.io​,以及顶级域,如 ​k8s.*​。 还支持匹配部分子域,如 ​app*.k8s.io​。每个通配符只能匹配一个子域段, 因此 ​*.io​ 不匹配 ​*.k8s.io​。

当以下所有条件都为真时,镜像名称和 ​matchImage ​条目之间存在匹配:

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

matchImages ​模式的一些示例值:

  • 123456789.dkr.ecr.us-east-1.amazonaws.com
  • *.azurecr.io
  • gcr.io
  • *.*.registry.io
  • foo.registry.io:8080/path

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/215059.html<

(0)
管理的头像管理
上一篇2025-04-12 02:06
下一篇 2025-04-12 02:07

相关推荐

  • 云服务器和云虚拟主机怎么选?云服务器和虚拟主机区别

    云服务器适合业务增长快、需弹性扩展的场景,而云虚拟主机适合预算有限、技术门槛低的小型静态网站或测试环境,二者核心区别在于资源独享性与运维复杂度,核心差异解析:从底层架构到使用体验很多人容易混淆这两者,觉得它们都是“买空间建站”,它们的底层逻辑完全不同,云服务器(ECS)就像是你租了一整栋别墅,水电网络独立,你想……

    2026-06-29
    0
  • 赣州智慧旅游招聘是真的吗?赣州旅游人才招聘信息

    中级岗位(3-5年经验)月薪范围通常在6000-10000元,这类岗位需要独立负责项目模块,如独立运营一个抖音账号,或维护一个景区小程序的功能迭代,具备成功案例的候选人议价能力较强,高级岗位(5年以上经验)月薪范围通常在10000-20000元,部分核心管理岗可达更高,这类人才需要具备战略规划能力,如制定整个景……

    2026-06-29
    0
  • 赣州智能物联网车位锁如何管理?智能车位锁管理系统多少钱

    赣州智能物联网车位锁管理的核心在于通过云端平台实现远程控锁、状态实时监控及自动计费,彻底解决传统车位“被占难管”与“找位难”的痛点,在赣州这样的城市,随着机动车保有量的持续增长,老旧小区、商业综合体以及私人固定车位的资源矛盾日益凸显,传统的机械地锁或简易遥控锁,不仅操作繁琐,更无法实现数据化管理,引入智能物联网……

    2026-06-29
    0
  • 赣州智能消防栓好用吗,智能消防栓多少钱一个

    赣州智能消防栓通过物联网技术实现实时监测与远程报警,能显著降低火灾响应时间并提升城市消防安全管理水平,是目前智慧城市建设中不可或缺的基础设施,赣州智能消防栓的核心价值与应用场景传统消防栓往往存在“看不见、摸不着、用不了”的痛点,在赣州这样地形复杂、老城区与新城区并存的区域,传统设施的管理难度极大,智能消防栓的出……

    2026-06-29
    0
  • 云服务器和物理机到底有啥区别?

    云服务器本质上是虚拟化资源池中的弹性实例,而传统物理服务器是独占的硬件实体,前者胜在弹性与运维便捷,后者强在物理隔离与性能稳定,具体选择取决于业务对成本、扩展性及安全合规的权衡,很多人初次接触服务器时,容易把“云服务器”和“传统物理服务器”混为一谈,觉得它们都是用来跑网站或存数据的盒子,这两者的底层逻辑完全不同……

    2026-06-29
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注