使用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: {}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章