配置 kube-proxy 基於 ipvs 模式工作

引言
kube-proxy 目前(v1.17)支持多種工作模式,如:userspace、iptables、ipvs,以及僅在 windows 環境可選的 kernelspace 等。在 linux 環境,未配置 kube-proxy 工作模式的情況下,將優先使用 iptables 模式運行,在不滿足 iptables 模式工作條件時,自動回退到 userspace 模式。在 windows 環境,如未配置工作模式,將使用 userspace 模式運行。

ipvs 相比 iptables 提供了更優的性能,那麼如何在 linux 環境啓用 ipvs 模式呢?

其實很簡單,只需要修改 kube-proxy 的啓動配置(kube-system/kube-proxy ConfigMap),將 mode 修改爲 ipvs 即可:

# kubectl edit cm kube-proxy -n kube-system
    mode: "ipvs"
    nodePortAddresses: null
    oomScoreAdj: null
    portRange: ""
-- INSERT --

保存配置後,爲了保證生效,重啓 kube-proxy 服務(其實 kube-proxy 是支持自動重啓的,奈何博主實驗時並未正常重啓,這是一個已知的 bug…)

# kubectl delete pod -l k8s-app=kube-proxy -n kube-system
pod "kube-proxy-j8586" deleted
pod "kube-proxy-pd4pz" deleted
pod "kube-proxy-ttrv8" deleted

查看 kube-proxy 啓動日誌,發現已經啓用 ipvs:

在這裏插入圖片描述
如果您在設置後,發現並未成功啓用 ipvs,可能是操作系統未達要求的原因,需要在安裝缺失的內核模塊後重試。筆者實驗的操作系統爲 CentOS Linux release 7.6.1810 (Core),直接啓用 ipvs 即可成功。

發佈了261 篇原創文章 · 獲贊 78 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章