靈雀云劉夢馨:Kubernetes 網絡改進的三項實踐分享
原創【51CTO.com原創稿件】由51CTO主辦的WOT全球軟件與運維技術峰會于5月18日至19日在北京·粵財JW萬豪酒店盛大召開。本次大會匯聚了海內外近百位一線技術***和創新開拓者,開啟了一次圍繞軟件與運維方向的技術干貨與實踐經驗分享的饕餮盛宴。
在5月19日下午的開源與容器技術分論壇上,靈雀云Kubernetes***專家劉夢馨帶來了《Kubernetes 網絡更進一步》的主題演講。
劉夢馨的演講圍繞Kubernetes 網絡模型、Kubernetes網絡模型問題和網絡改進三部分展開。他表示,Kubernetes網絡模型在功能、性能和穩定性方面均存在一些問題,靈雀云通過固定IP、IP虛擬服務器(IP Virtual Server,簡寫為IPVS)和自研Ingress的方式加以改進。
靈雀云Kubernetes***專家 劉夢馨
自研CNI IPAM插件 解決K8s功能問題
首先,在功能方面,Kubernetes 網絡模型由于IP不固定,無法對IP資源進行精細管控,無法使用基于IP的監控和基于IP的安全策略,此外,一些IP發現的服務部署十分困難,給運維人員增加了很大的工作難度。例如由于IP不固定,令很多采用IP固定來做的傳統監控和審計機制全部失效。此外,很多軟件是對MAC地址進行授權,IP地址不固定無法購買授權,IP固定的需求在一定場景下客觀存在。
為了解決這一問題,靈雀云把IP當做重要資源,進行單獨管理。靈雀云自研的CNI IPAM 插件,實現了IP導入和IP權限管理功能,可以進行網段的添加和刪除,可在Kubernetes進行網段的精細化配置。例如,給某個業務或者某幾個用戶分配一個網關,先對IP進行網關設置,路由設置以及DNS設置;有了網段之后,進行IP添加或刪除,哪些IP可用都可以由管理員指定,經過權限和配額之后順利創建服務。
IPVS解決K8S大流量下性能線性下降問題
其次,在性能方面,由于Kubernetes最早是基于Iptables來做的,Iptables 沒有增量更新功能,更新一條規則需要整體flush,更新時間長,這段時間之內流量會有不同程度的影響;Iptables規則串行,沒有預料到Kubernetes這種在一個機器上會有很多規則的情況,流量需要經過所有規則的匹配,匹配之后再進行轉發,否則對時間、CPN和內存都是極大的消耗,尤其在大規模情況下對性能的影響十分明顯。
劉夢馨介紹指出,Kubernetes升級到1.8或1.9版本以后,安裝時可以選擇IPVS模式,它是對Iptables的替換,在IPVS模式下添加規則是增量式的,不會強制進行全量更新,也不會進行串行的匹配,會通過一定的規則進行哈希map映射,很快地映射到對應的規則,不會出現大規模情況下性能線性下降的狀況。目前,IPVS在Kubernetes社區仍處于試用階段,劉夢馨表示,靈雀云已經開始試用IPVS功能,從使用情況來看,性能十分穩定,預計很快會將方案推廣給用戶。
自研OpenResty Ingress 解決K8S穩定性問題
***,在穩定性方面,Kubernetes網絡缺少健康檢查功能,NodePort 屏蔽了Pod的直接訪問,上層健康檢查失效,網絡分區、網絡問題導致的轉發異常時有發生。
靈雀云采用自研的OpenResty Ingress,方便新增功能,可以進行多端口監聽。官方的Nginx Ingress只能監聽80和43端口,但很多客戶要對更多的端口進行監聽,如根據端口區分的服務,靈雀云對此進行了一些改動,其自研的Ingress支持多端口功能。另外,原始Ingress的轉化功能較少且配置復雜,需要不斷更改Nginx config。對于reload,靈雀云用OpenResty實現lua的代碼庫,在lua的代碼里進行流量調度,并設定了特定的DSL流量調度語言,可以通過簡單的程序代碼實現特定的流量規則,在Ingress流量規則方面進行了豐富擴展。
在演講的***,劉夢馨列舉了一個用簡單程序代碼實現特定流量規則的實例:
規則:域名是 www.baidu.com 或者 baidu.com,路徑是 /search, 源 IP 為 114.114.114.114,header 中 uid 在 100 到 999 或者 10000 到 11000 之間的請求
- (AND (IN HOST www.baidu.com baidu.com) (EQ URL /search) (EQ SRC_IP 114.114.114.114) (OR (RANGE HEADER uid 100 999) (RANGE HEADER uid 10000 11000)))
可以看出,只需簡單的配置域名、路徑、特定范圍內的IP等信息,Dsl就可以實現比較復雜的規則。
靈雀云是一家專注容器服務和企業級PaaS的服務商,始終保持著對技術的敏銳和前瞻性理解,在容器領域,靈雀云是國內最早將Kubernetes產品化的專業服務商,推出了基于Kubernetes的產品Alauda EE,打造客戶容器環境核心系統以及在DevOps和微服務方面的***實踐。未來,靈雀云將依托強大的產品和服務能力,為傳統企業數字化轉型保駕護航。
【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】