k8s 之跨雲集羣通訊方案設計

問題描述

    由於特殊原因 我們的生產環境分佈在兩個不同的 k8s 集羣中
這兩個集羣服務的特點爲,
    1. 跨雲 (一個騰訊雲 一個阿里雲) 

    2. 跨網段 (廢話 -_-)

    3. 業務量較大且較爲核心 

    4. 兩端業務獨立運行且沒有交互

    但是因爲業務整合的要求 兩個集羣的服務有了相互訪問的訴求
並且產品和業務同學提出瞭如下幾個訴求,
    1. 請求調用務必簡單方便

    2. 穩定 

    3. 安全 

    4. 快速實現 (業務迭代週期短)

解決思路

1. 將跨雲的服務遷移整合到一個集羣中去

    理論上來說這是最好的方案 將集羣整合爲一個 然後直接通過內網方式進行通訊

dpi1nb

2. 跨集羣的服務按照第三方服務接入來設計統一的鑑權方式

    兩個集羣的服務把對方都視爲第三方來處理 實現一套完整的第三方鑑權方案流程 服務層通過該方案通訊

UxUsM2

3. 通過 vpn+slb 的方式讓兩個集羣達到內網訪問的效果

    (兩個集羣分別爲 k1,k2)
    1. 在兩個集羣之間配置一條獨享的 vpn 隧道
   (關鍵步驟 用於打通跨雲 k8s 集羣網絡 保證雙方網絡互通 並且因爲 vpn 的關係還可以保證網絡安全問題)
    2. 在兩個集羣各自配置一個 slb 資源; k1 對應 s1;k2 對應 s2

    3. 在 k1 中配置 n1(ng-ingress) 指向 s1; 在 k2 中配置 n2(ng-ingress) 指向 s2;
    4. 業務同學開發服務 (a-server) 只需要簡單實現業務邏輯即可 不需要增加任何鑑權授權等邏輯
    5. 在兩個集羣中把需要暴露的服務 (a-server) 直接配置到對應的 ng-ingress 上 之後跨集羣之中通過域名就可以實現跨集羣的通訊了
    (例如 k1 的服務 a 配置了 a.com 域名 k2 集羣的服務就可以直接通過)

pfXgMY

後記

    以上就是關於處理跨雲集羣通訊的方案分享 如果有更好的方案歡迎和我一起討論

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/IkXF48K3dyjVgTAQpxkrhw