k8s資源預留


Kubernetes 的節點可以按照 Capacity 調度。默認情況下 pod 能夠使用節點全部可用容量。 這是個問題,因為節點自己通常運行了不少驅動 OS 和 Kubernetes 的系統守護進程。 除非為這些系統守護進程留出資源,否則它們將與 pod 爭奪資源並導致節點資源短缺。

  • 未設置資源預留導致flannel組件oom,頻繁重啟

image-20220124145203163

處理方案

kubelet 公開了一個名為 'Node Allocatable' 的特性,有助於為系統守護進程預留計算資源。 Kubernetes 推薦集群管理員按照每個節點上的工作負載密度配置 Node Allocatable

  • rke配置方案

    在kubelet配置中添加以下配置

    extra_args:
      cgroups-per-qos: 'true'
      cgroup-driver: 'cgroupfs'
      # 節點資源預留
      enforce-node-allocatable: 'pods'
      # 操作系統預留資源量
      system-reserved: 'cpu=1,memory=2048Mi'
      # k8s自身組件預留資源量
      kube-reserved: 'cpu=0.5,memory=512Mi'
      # POD驅逐,這個參數只支持內存和磁盤。
      ## 硬驅逐閾值
      ### 當節點上的可用資源降至保留值以下時,就會觸發強制驅逐。強制驅逐會強制kill掉POD,不會等POD自動退出。
      eviction-hard: 'memory.available<300Mi,nodefs.available<10%,imagefs.available<10%,nodefs.inodesFree<5%'
      ## 軟驅逐閾值
      ### 以下四個參數配套使用,當節點上的可用資源少於這個值時但大於硬驅逐閾值時候,會等待eviction-soft-grace-period設置的時長;
      ### 等待中每10s檢查一次,當最后一次檢查還觸發了軟驅逐閾值就會開始驅逐,驅逐不會直接Kill POD,先發送停止信號給POD,然后等待eviction-max-pod-grace-period設置的時長;
      ### 在eviction-max-pod-grace-period時長之后,如果POD還未退出則發送強制kill POD"
      eviction-soft: 'memory.available<500Mi,nodefs.available<20%,imagefs.available<20%,nodefs.inodesFree<10%'
      # 當node的內存/磁盤空間達到一定的閾值后,要觀察一段時間,如果改善到低於閾值就不進行驅逐,若這段時間一直高於閾值就進行驅逐
      eviction-soft-grace-period: 'memory.available=1m30s,nodefs.available=1m30s,imagefs.available=1m30s,nodefs.inodesFree=1m30s'
      # 終止pod容器要花費的時間
      eviction-max-pod-grace-period: '30'
      # Node Condition Pressure換回False需要等待的時間,防止Node Condition來回切換引起scheduler做出錯誤的調度決定
      eviction-pressure-transition-period: '30s'

image-20220124151334678

  • 確認

服務器資源為4c/12G

查看node信息

$ kubectl describe node 192.168.2.27|grep -A 10 Capacity
Capacity: #Node節點總資源量
  cpu:                4
  ephemeral-storage:  102350Mi
  hugepages-2Mi:      0
  memory:             12271508Ki
  pods:               110
Allocatable: #k8s可用資源量
  cpu:                2500m
  ephemeral-storage:  96589578081
  hugepages-2Mi:      0
  memory:             9342868K


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM