PodPreset

    当然,你也可以给 Pod 增加注解 来避免它们被 PodPreset 修改。

    • 开启 API kube-apiserver --runtime-config=settings.k8s.io/v1alpha1=true
    • 开启准入控制 --enable-admission-plugins=..,PodPreset

    增加环境变量和存储卷的 PodPreset

    1. apiVersion: v1
    2. kind: Pod
    3. metadata:
    4. name: website
    5. labels:
    6. app: website
    7. role: frontend
    8. spec:
    9. containers:
    10. - name: website
    11. image: ecorp/website
    12. ports:
    13. - containerPort: 80

    经过准入控制 PodPreset 后,Pod 会自动增加环境变量和存储卷

    ConfigMap

    1. kind: ConfigMap
    2. metadata:
    3. data:
    4. number_of_members: "1"
    5. initial_cluster_state: new
    6. initial_cluster_token: DUMMY_ETCD_INITIAL_CLUSTER_TOKEN
    7. discovery_token: DUMMY_ETCD_DISCOVERY_TOKEN
    8. discovery_url: http://etcd_discovery:2379
    9. etcdctl_peers: http://etcd:2379
    10. duplicate_key: FROM_CONFIG_MAP
    11. REPLACE_ME: "a value"

    用户提交的 Pod

    1. apiVersion: v1
    2. kind: Pod
    3. metadata:
    4. name: website
    5. labels:
    6. app: website
    7. role: frontend
    8. spec:
    9. - name: website
    10. ports:
    11. - containerPort: 80

    经过准入控制 PodPreset 后,Pod 会自动增加 ConfigMap 环境变量

    1. kind: PodPreset
    2. apiVersion: settings.k8s.io/v1alpha1
    3. metadata:
    4. name: tz-shanghai
    5. namespace: default
    6. spec:
    7. selector:
    8. matchLabels:
    9. tz: shanghai
    10. volumeMounts:
    11. - mountPath: /etc/localtime
    12. name: tz-config
    13. volumes:
    14. - name: tz-config
    15. hostPath: