Pod Preset

    本文提供了 PodPreset 的概述。 在 Pod 创建时,用户可以使用 PodPreset 对象将特定信息注入 Pod 中,这些信息可以包括 Secret、卷、卷挂载和环境变量。

    Pod Preset 是一种 API 资源,在 Pod 创建时,用户可以用它将额外的运行时需求信息注入 Pod。 使用标签选择算符 来指定 Pod Preset 所适用的 Pod。

    使用 Pod Preset 使得 Pod 模板编写者不必显式地为每个 Pod 设置信息。 这样,使用特定服务的 Pod 模板编写者不需要了解该服务的所有细节。

    1. 已启用 API 类型 settings.k8s.io/v1alpha1/podpreset。 例如,这可以通过在 API 服务器的 --runtime-config 配置项中包含 settings.k8s.io/v1alpha1=true 来实现。 在 minikube 部署的集群中,启动集群时添加此参数 --extra-config=apiserver.runtime-config=settings.k8s.io/v1alpha1=true

    2. 已启用准入控制器 PodPreset。 启用的一种方式是在 API 服务器的 --enable-admission-plugins 配置项中包含 。在 minikube 部署的集群中,启动集群时添加以下参数:

    Kubernetes 提供了准入控制器 (PodPreset),该控制器被启用时,会将 Pod Preset 应用于接收到的 Pod 创建请求中。 当出现 Pod 创建请求时,系统会执行以下操作:

    1. 检索所有可用 PodPresets
    2. 检查 PodPreset 的标签选择器与要创建的 Pod 的标签是否匹配。
    3. 发生错误时抛出事件,该事件记录了 pod 信息合并错误,同时在 不注入 PodPreset 信息的情况下创建 Pod。
    4. 为改动的 Pod spec 添加注解,来表明它被 PodPreset 所修改。 注解形如: podpreset.admission.kubernetes.io/podpreset-<pod-preset 名称>": "<资源版本>"

    在一些情况下,用户不希望 Pod 被 Pod Preset 所改动,这时,用户可以在 Pod 的 .spec 中添加形如 的注解。

    • 若要更多地了解背景知识,请参阅 。