安裝Scheduler-plugins v1.18

安裝Scheduler-plugins v1.18

創建 Kubernetes 集羣

Kubernetes 版本必須 >= v1.18.0 ,檢查 Kubernetes 版本 kubectl version --short

安裝版本 v0.18.9 並使用 Coscheduling

本節將會說明如何用 scheduler-plugins 鏡像替換默認調度器。 由於新映像是在默認調度器之上構建的,因此會保留原生 Kubernetes 調度功能。同時可以獲得許多額外的開箱即用功能(由此 repo 中的插件實現),例如 coscheduling。

  1. 登陸到 Master 節點

    • 如果你的集羣使用 kind 創建

      sudo docker exec -it $(sudo docker ps | grep control-plane | awk '{print $1}') bash
      
    • Mac Docker Desktop

      docker run -it --rm --privileged --pid=host justincormack/nsenter1
      
  2. 備份 kube-scheduler.yaml

    cp /etc/kubernetes/manifests/kube-scheduler.yaml /etc/kubernetes/kube-scheduler.yaml
    
  3. 創建 /etc/kubernetes/coscheduling-config.yaml

    apiVersion: kubescheduler.config.k8s.io/v1alpha2
    kind: KubeSchedulerConfiguration
    leaderElection:
      # (Optional) Change true to false if you are not running a HA control-plane.
      leaderElect: true
    clientConnection:
      kubeconfig: /etc/kubernetes/scheduler.conf
    profiles:
    - schedulerName: default-scheduler
      plugins:
        queueSort:
          enabled:
          - name: Coscheduling
          disabled:
           - name: "*"
        preFilter:
          enabled:
          - name: Coscheduling
        permit:
          enabled:
          - name: Coscheduling
        unreserve:
          enabled:
          - name: Coscheduling
    
  4. 修改 /etc/kubernetes/manifests/kube-scheduler.yaml 使用 Coscheduling 運行調度器插件

    主要修改內容如下所示:

    • 通過參數 --config 傳入 scheduler-config 文件
    • 刪除重複的(已在配置文件中定義) CLI 參數(例如,--leader-elect)
    • 用 scheduler-plugin 鏡像替換默認調度器鏡像
    • 在調度器啓動時掛載 scheduler-config 文件
    --- /etc/kubernetes/kube-scheduler.yaml 2021-02-04 01:27:42.392508733 +0000
    +++ /etc/kubernetes/manifests/kube-scheduler.yaml       2021-02-04 04:26:04.459171135 +0000
    @@ -13,11 +13,12 @@
         - kube-scheduler
         - --authentication-kubeconfig=/etc/kubernetes/scheduler.conf
         - --authorization-kubeconfig=/etc/kubernetes/scheduler.conf
    +    - --config=/etc/kubernetes/coscheduling-config.yaml
         - --bind-address=127.0.0.1
         - --kubeconfig=/etc/kubernetes/scheduler.conf
         - --leader-elect=true
         - --port=0
    -    image: k8s.gcr.io/kube-scheduler:v1.19.1
    +    image: k8s.gcr.io/scheduler-plugins/kube-scheduler:v0.18.9
         imagePullPolicy: IfNotPresent
         livenessProbe:
           failureThreshold: 8
    @@ -47,6 +48,9 @@
         - mountPath: /etc/kubernetes/scheduler.conf
           name: kubeconfig
           readOnly: true
    +    - mountPath: /etc/kubernetes/coscheduling-config.yaml
    +      name: coscheduling-config
    +      readOnly: true
       hostNetwork: true
       priorityClassName: system-node-critical
       volumes:
    @@ -54,4 +58,8 @@
           path: /etc/kubernetes/scheduler.conf
           type: FileOrCreate
         name: kubeconfig
    +  - hostPath:
    +      path: /etc/kubernetes/coscheduling-config.yaml
    +      type: File
    +    name: coscheduling-config
     status: {}
    
  5. 驗證 kube-scheduler pod 是否正常運行,確認 image 是否爲 k8s.gcr.io/scheduler-plugins/kube-scheduler:v0.18.9

    $ kubectl get pod -n kube-system | grep kube-scheduler
    kube-scheduler-xqcluster-control-plane            1/1     Running   0          3m27s
    
    $ kubectl get pods -l component=kube-scheduler -n kube-system -o=jsonpath="{.items[0].spec.containers[0].image}"
    k8s.gcr.io/scheduler-plugins/kube-scheduler:v0.18.9
    

卸載 Scheduler-plugins

  1. 刪除測試時創建的資源
  2. 恢復 kube-scheduler.yaml 刪除 coscheduling-config.yaml
  3. 檢測默認調度器狀態
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章