使用PodPreset向pod添加选项

使用场景:如果某些pod的镜像是其他人做好的,咱们又不方便修改,但是要向里面批量添加一些配置,可以使用PodPreset,k8s 1.17

k8s默认没有开启,开启方法如下

# 查看是否开启
kubectl api-versions|grep setting
# 开启方法,k8s集群,添加如下配置
--runtime-config=settings.k8s.io/v1alpha1=true

# minikube
# --image-repository 镜像仓库
# 通过命令行启用 PodPreset
minikube start --vm-driver=none --image-repository=registry.aliyuncs.com/google_containers --extra-config=apiserver.runtime-config=settings.k8s.io/v1alpha1=true --extra-config=apiserver.enable-admission-plugins=PodPreset
# 也可以修改配置文件/etc/kubernetes/manifests/kube-apiserver.yaml在command下添加如下命令
- --runtime-config=settings.k8s.io/v1alpha1=true  #新增该配置
- --enable-admission-plugins=PodPreset  #最后边增加 ,PodPreset 支持

使用kubeadm初始化的Kubernetes集群中,kube-apiserver是以静态Pod的形式运行在Master Node上。 可以在Master Node上找到其定义文件/etc/kubernetes/manifests/kube-apiserver.yaml,当/etc/kubernetes/manifests/kube-apiserver.yaml被修改后,kubelet会重启kube-apiserver

官方实例

  • 创建 PodPreset:
kubectl apply -f https://k8s.io/examples/podpreset/preset.yaml
检查所创建的 PodPreset:

kubectl get podpreset
NAME             AGE
allow-database   1m

新的 PodPreset 会对所有具有标签 role: frontend 的 Pods 采取行动

  • 创建 测试Pod:
kubectl create -f https://k8s.io/examples/podpreset/pod.yaml
列举运行中的 Pods:

kubectl get pods
NAME      READY     STATUS    RESTARTS   AGE
website   1/1       Running   0          4m
  • 查看是否添加成功
kubectl get pod website -o yaml

看是否添加如下内容:

  env:
    - name: DB_PORT
      value: "6379"
  volumeMounts:
    - mountPath: /cache
      name: cache-volume
  volumes:
    - name: cache-volume
      emptyDir: {}

你可能感兴趣的:(k8s,podpreset)