Black lives matter.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
Kubernetes v1.6 [alpha]
This page provides an overview of PodPresets, which are objects for injecting certain information into pods at creation time. The information can include secrets, volumes, volume mounts, and environment variables.
A PodPreset is an API resource for injecting additional runtime requirements into a Pod at creation time. You use label selectors to specify the Pods to which a given PodPreset applies.
Using a PodPreset allows pod template authors to not have to explicitly provide all information for every pod. This way, authors of pod templates consuming a specific service do not need to know all the details about that service.
In order to use Pod presets in your cluster you must ensure the following:
You have enabled the API type settings.k8s.io/v1alpha1/podpreset
. For
example, this can be done by including settings.k8s.io/v1alpha1=true
in
the --runtime-config
option for the API server. In minikube add this flag
--extra-config=apiserver.runtime-config=settings.k8s.io/v1alpha1=true
while
starting the cluster.
You have enabled the admission controller PodPreset
. One way to doing this
is to include PodPreset
in the --enable-admission-plugins
option value specified
for the API server. In minikube, add this flag
--extra-config=apiserver.enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota,PodPreset
while starting the cluster.
Kubernetes provides an admission controller (PodPreset
) which, when enabled,
applies Pod Presets to incoming pod creation requests.
When a pod creation request occurs, the system does the following:
PodPresets
available for use.PodPreset
matches the labels on the
pod being created.PodPreset
into the
Pod being created.PodPreset
.PodPreset
. The annotation is of the form
podpreset.admission.kubernetes.io/podpreset-<pod-preset name>: "<resource version>"
.Each Pod can be matched by zero or more Pod Presets; and each PodPreset
can be
applied to zero or more pods. When a PodPreset
is applied to one or more
Pods, Kubernetes modifies the Pod Spec. For changes to Env
, EnvFrom
, and
VolumeMounts
, Kubernetes modifies the container spec for all containers in
the Pod; for changes to Volume
, Kubernetes modifies the Pod Spec.
Note: A Pod Preset is capable of modifying the following fields in a Pod spec when appropriate: - The.spec.containers
field. - TheinitContainers
field (requires Kubernetes version 1.14.0 or later).
There may be instances where you wish for a Pod to not be altered by any Pod
Preset mutations. In these cases, you can add an annotation in the Pod Spec
of the form: podpreset.admission.kubernetes.io/exclude: "true"
.
See Injecting data into a Pod using PodPreset
For more information about the background, see the design proposal for PodPreset.