本文旨在描述如何部署 VoltMesh 集群,以充當(dāng)部署至現(xiàn)有 Kubernetes 基礎(chǔ)架構(gòu)中的出海應(yīng)用工作負(fù)載的高可用型Ingress 和 Egress Controller。
本文提供了兩種設(shè)計方式:
設(shè)計一利用 BGP (Calico) 實現(xiàn)最佳負(fù)載均衡性能,同時提供最大冗余
設(shè)計二利用 NodePort 服務(wù)實現(xiàn)最大兼容性,但負(fù)載均衡特性欠佳,出口流量可能會丟失冗余
在此設(shè)計中,將 1 個三節(jié)點 VoltMesh 集群部署至現(xiàn)有 Kubernetes 集群前端,并安裝Calico CNI 網(wǎng)絡(luò)插件,以便為應(yīng)用工作負(fù)載提供進(jìn)出流量路由和網(wǎng)絡(luò)安全防護(hù)。盡管這一解決方案設(shè)計側(cè)重于 Calico,但也可在未封裝的情況下替代其他支持 BGP 的 CNI 插件。
您可以通過 Volterra 服務(wù)發(fā)現(xiàn)與 Kubernetes API 服務(wù)器的集成自動發(fā)現(xiàn)應(yīng)用端點,從而執(zhí)行實時檢測。隨著應(yīng)用工作負(fù)載不斷橫向擴展和收縮,這些應(yīng)用端點或 Pod IP 將自動在 VoltMesh 源池中進(jìn)行添加和刪除,有助于實現(xiàn)零接觸負(fù)載均衡器重新配置。
通過服務(wù)發(fā)現(xiàn)識別應(yīng)用 Pod IP 后,VoltMesh 集群和應(yīng)用 Pod 之間的 3 層路由將通過 Pod IP 路由的 BGP 通告啟用。該集群中的所有 VoltMesh 節(jié)點將直接對等互連 Calico 節(jié)點,或通過中間的“架頂式”路由器對等互連。VoltMesh 支持eBGP 和 iBGP 對等互連。
在直接對等互連 VoltMesh 節(jié)點與 Calico 節(jié)點時,請務(wù)必注意 VoltMesh 不是路由反射器服務(wù)器 —Calico 節(jié)點之間的內(nèi)部對等互連對于在 Kubernetes 集群內(nèi)共享 Pod IP 信息必不可少,這樣方可避免向每個 Pod 到 Pod 請求添加額外的跳數(shù),甚至破壞 Pod 到 Pod 通信。內(nèi)部對等互連可通過全網(wǎng)狀部署(適用于小規(guī)模部署)或通過充當(dāng)路由反射器的指定Calico 節(jié)點(適用于大中規(guī)模部署)實現(xiàn)。
為了針對應(yīng)用工作負(fù)載啟用 VoltMesh Egress Controller 功能,VoltMesh 集群需要檢查離開 Kubernetes 集群的所有流量,以便在 3、4 和 7 層應(yīng)用可配置的安全策略。
如果直接對等互連 VoltMesh 節(jié)點與 Calico 節(jié)點,則集群中的單個 VoltMesh 節(jié)點將成為所有離開 Kubernetes 集群的流量的默認(rèn)網(wǎng)關(guān)或“下一跳”。默認(rèn)路由通過 BGP 從 VoltMesh 集群通告給所有 Kubernetes 節(jié)點,并由 Calico 安裝至主機操作系統(tǒng)。如果用作默認(rèn)網(wǎng)關(guān)的 VoltMesh 節(jié)點因任何原因發(fā)生故障,VoltMesh 集群均可檢測到,并通過 BGP 自動將新的網(wǎng)關(guān)地址傳播到 Kubernetes 節(jié)點。
通過中間路由器對等互連 VoltMesh 節(jié)點可以在 VoltMesh 集群和路由器之間創(chuàng)建等價多路徑 (ECMP) 路由,以支持出口流量通過所有三個 VoltMesh 節(jié)點而非單個節(jié)點進(jìn)行路由,從而充分利用全主配置,而非主/備/備配置。由 VoltMesh 集群通過 BGP 傳播的默認(rèn)網(wǎng)關(guān)不會通告給 Kubernetes 節(jié)點,每個 Kubernetes 節(jié)點的下一跳仍然是路由器。
虛擬 IP 或 VIP 均被用于部署在 VoltMesh 集群上的所有 HTTP(S) 和 TCP 負(fù)載均衡器。當(dāng)一個 VoltMesh 節(jié)點發(fā)生故障時,每個 VIP 均可使用 VRRP 實現(xiàn)高可用性,并通過 BGP 進(jìn)行通告。
這一設(shè)計能夠為關(guān)鍵任務(wù)應(yīng)用提供高可用性和容錯性,是推薦的部署配置。