PodPreset

PodPreset 用來給指定標籤的 Pod 注入額外的信息,如環境變量、存儲卷等。這樣,Pod 模板就不需要爲每個 Pod 都顯式設置重複的信息。

當然,你也可以給 Pod 增加註解 podpreset.admission.kubernetes.io/exclude: "true" 來避免它們被 PodPreset 修改。

API 版本對照表

Kubernetes 版本
API 版本
默認開啓

v1.6+

settings.k8s.io/v1alpha1

開啓 PodPreset

  • 開啓 API kube-apiserver --runtime-config=settings.k8s.io/v1alpha1=true

  • 開啓准入控制 --enable-admission-plugins=..,PodPreset

PodPreset 示例

增加環境變量和存儲卷的 PodPreset

kind: PodPreset
apiVersion: settings.k8s.io/v1alpha1
metadata:
  name: allow-database
  namespace: myns
spec:
  selector:
    matchLabels:
      role: frontend
  env:
    - name: DB_PORT
      value: "6379"
  volumeMounts:
    - mountPath: /cache
      name: cache-volume
  volumes:
    - name: cache-volume
      emptyDir: {}

用戶提交 Pod

經過准入控制 PodPreset 後,Pod 會自動增加環境變量和存儲卷

ConfigMap 示例

ConfigMap

PodPreset

用戶提交的 Pod

經過准入控制 PodPreset 後,Pod 會自動增加 ConfigMap 環境變量

修改 Pod 時區示例

下面的示例會把帶有標籤 tz: shanghai的所有Pod都自動改成上海時區:

Last updated