<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          OpenELB負載均衡器

          聯(lián)合創(chuàng)作 · 2023-10-01 07:55

          OpenELB 是一款適用于物理機部署 Kubernetes 的負載均衡器,該負載均衡器使用物理交換機實現(xiàn),利用 BGP 和 ECMP 從而達到性能最優(yōu)和高可用性。我們知道在云上部署的 Kubernetes 環(huán)境下,通常云服務(wù)廠商會提供 cloud LB 插件暴露 Kubernetes 服務(wù)到外網(wǎng),但在物理機部署環(huán)境下由于沒有云環(huán)境,服務(wù)暴露給外網(wǎng)非常不方便,Porter 是一個提供用戶在物理環(huán)境暴露服務(wù)和在云上暴露服務(wù)一致性體驗的插件。該插件提供兩大功能模塊:

          1. LB controller 和 agent: controller 負責(zé)同步 BGP 路由到物理交換機;agent 以 DaemonSet 方式部署到節(jié)點上負責(zé)維護引流規(guī)則;
          2. EIP service,包括 EIP pool 管理和 EIP controller,controller 會負責(zé)更新服務(wù)的 EIP 信息。

          OpenELB 是 KubeSphere 的一個子項目。

          物理部署架構(gòu)

          下圖是物理部署架構(gòu)圖,假設(shè)有一個服務(wù)部署在 node1 (192.168.0.2) 和 node2 (192.168.0.6) 上,需要通過公網(wǎng) IP 1.1.1.1 訪問該服務(wù),服務(wù)部署人員按照示例部署該服務(wù)后,Porter 會自動同步路由信息到 leaf 交換機,進而同步到 spine,border 交換機,互聯(lián)網(wǎng)用戶就可以通過 EIP 1.1.1.1 直接訪問該服務(wù)了。

          node architecture

          插件部署架構(gòu)

          插件通過一個Manager監(jiān)控集群中的 Service 的變化,廣播相關(guān)路由。同時集群中所有節(jié)點都部署有一個 Agent,每當(dāng)有一個 EIP 被使用時,就會在主機上添加一條主機路由規(guī)則,將發(fā)往這個 EIP 的 IP 報文引流到本地。

          porter deployment

          插件邏輯

          該插件以服務(wù)的形式部署在 Kubernetes 集群中時,會與集群的邊界路由器(三層交換機)建立 BGP 連接。每當(dāng)集群中創(chuàng)建了帶有特定注記(一個 annotation 為 lb.kubesphere.io/v1apha1: porter,見示例)的服務(wù)時,就會為該服務(wù)動態(tài)分配 EIP (用戶也可以自己指定 EIP),LB controller 創(chuàng)建路由,并通過 BGP 將路由傳導(dǎo)到公網(wǎng)(私網(wǎng))中,使得外部能夠訪問這個服務(wù)。

          OpenELB controller 是基于 Kubernetes controller runtime 實現(xiàn)的 custom controller,通過 watch service 的變化自動變更路由信息。

          porter architecture

          部署插件

          1. 在物理部署的 K8s 集群上部署
          2. 在青云上用模擬路由器的方式測試

          從代碼構(gòu)建新的插件

          軟件需求

          1. go 1.11,插件使用了 gobgp 創(chuàng)建 BGP 服務(wù)端,gobgp 需要 go 1.11
          2. docker,無版本限制
          3. kustomize,插件使用了 kustomize 動態(tài)生成集群所需的 k8s yaml 文件
          4. 如果插件會推送到遠端私有倉庫,需要提前執(zhí)行 docker login

          步驟

          1. git clone https://github.com/kubesphere/porter.git, 進入代碼目錄
          2. 按照上面教程的要求修改 config.toml (位于 config/bgp/ 下)
          3. (optional)根據(jù)自己需要修改代碼
          4. (optional)根據(jù)自己的需求修改鏡像的參數(shù)(位于 config/manager 下)
          5. (optional)按照模擬教程部署一個Bird主機,修改hack/test.sh中的BirdIP,然后運行make e2e-test進行e2e測試
          6. 修改 Makefile中 的 IMG 名稱,然后 make release,最終的 yaml 文件在 deploy 目錄下
          7. kubectl apply -f deploy/release.yaml 部署插件

          開源許可

          OpenELB is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

          瀏覽 36
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产香蕉一区二区三区 | 亚洲日韩免费在线观看 | 噜噜噜成人精品视频夜色久 | 欧美成人性爱网站 | 日韩黄色一级A片 |