在 KubeSphere 上部署 Apache Pulsar

作者介紹:徐文濤,StreamNative Content Strategist,熱愛雲原生與開源技術,活躍於本地化/文檔/技術博客貢獻,持有 K8s CKA/CKAD/CKS 認證。

Apache Pulsar 介紹

Apache Pulsar 作爲 Apache 軟件基金會頂級項目,是下一代雲原生分佈式消息流平臺,集消息、存儲、輕量化函數式計算爲一體,採用計算與存儲分離架構設計,支持多租戶、持久化存儲、跨地域複製、分層存儲,具有強一致性、高吞吐、低延時及高可擴展性等流數據存儲特性,是雲原生時代解決實時消息流數據傳輸、存儲和計算的最佳解決方案。

Pulsar 的 Broker 沒有狀態,不存儲數據。BookKeeper 負責存儲數據,其中的 Bookie 支持水平擴容,元數據的信息存儲在 ZooKeeper 上。這種架構也方便容器化的環境進行擴縮容,支持高可用等場景。

KubeSphere 介紹

KubeSphere 是建立在 Kubernetes 之上的面向雲原生應用的分佈式操作系統,完全開源,支持多雲與多集羣管理、應用商店、可觀測性(監控、告警及審計等)和多租戶等功能,提供全棧的 IT 自動化運維能力,簡化企業的 DevOps 工作流。

在 KubeSphere 上安裝 Apache Pulsar

作爲一個以應用爲中心的 K8s 容器平臺,KubeSphere 爲用戶提供多種安裝應用的方式。爲快速部署應用,這裏給大家推薦以下兩種方法:

  • 直接從 KubeSphere 的應用商店中安裝 Pulsar。KubeSphere 從 3.2.0 版本開始便新增了“動態加載應用商店”的功能。想要貢獻應用的小夥伴可以直接向 KubeSphere 的 Helm 倉庫貢獻應用的 Helm Chart,待 PR 審覈通過後應用商店上會加載最新的應用列表。
  • 添加 Apache Pulsar 的 Helm 倉庫至 KubeSphere 的應用倉庫,然後從應用倉庫中安裝 Pulsar 應用模板。此安裝方式類似在命令行使用 helm 相關命令添加倉庫並安裝。

注:KubeSphere 的應用商店與應用的全生命週期管理功能基於開源項目 OpenPitrix。在安裝 Pulsar 前,你需要先在 KubeSphere 中啓用 OpenPitrix

下面我們通過第二種方式在 KubeSphere Console 中添加 Pulsar 的 Helm 倉庫並安裝。

  1. 準備一個 KubeSphere 集羣。你可以直接使用 KubeKey 安裝或通過 ks-installer 在已有 K8s 集羣上搭建 KubeSphere 集羣。同時,請注意 Pulsar 文檔中對 K8s 集羣和 Helm 的版本要求

  2. 創建好企業空間和項目。企業空間是 KubeSphere 中的一種邏輯單元,用於管理項目、DevOps 項目和應用模板等資源,管理員可以管理其中的資源訪問權限;項目指 K8s 中的 Namespace。爲方便演示,本文統一採用 admin 用戶操作。基於 KubeSphere 的多租戶體系,在實際環境中你可以根據組織中每個租戶的職責,創建不同的帳戶並分配相應角色。

  3. 在你的企業空間空間下,點擊應用管理 > 應用倉庫,然後點擊添加。定義倉庫名稱後,添加 https://pulsar.apache.org/charts 倉庫地址。倉庫地址驗證成功後,點擊確定。

  4. 倉庫添加成功後,我們還需要運行一個腳本,創建一些和 Pulsar 相關的 Secret 等資源,方便我們後續訪問 Grafana 和 Pulsar Manager 等工具。先前往你的 K8s 節點,執行以下命令將 pulsar-helm-chart 的 GitHub 倉庫克隆到本地。需要注意的是,在該節點上必須要可以執行 kubectlhelm 命令。

    git clone https://github.com/apache/pulsar-helm-chart
    cd pulsar-helm-chart
    
  5. 執行以下命令運行 prepare_helm_release.sh 腳本。其中 -n 指相關的 Secret 生成的 Namespace,-k 指使用 helm 安裝應用的 release 名稱,這兩個地方需要和我們在 KubeSphere 上指定的項目和應用名稱相對應。有關該腳本可用參數的更多信息,可運行 ./scripts/pulsar/prepare_helm_release.sh --help 查看詳情。

    ./scripts/pulsar/prepare_helm_release.sh -n pulsar -k ks-pulsar
    
  6. 前往 KubeSphere 中所創建的項目,本示例中的項目名爲 pulsar

  7. 點擊應用負載 > 應用,在基於模板的應用標籤頁下,點擊創建。

  8. 選擇從應用模板,在應用模板的下拉列表中選中 Pulsar 的倉庫。點擊 Pulsar 後,我們可以在這裏查看 Chart 文件的一些信息。

  9. 點擊安裝。定義應用名稱(即剛纔執行腳本時的 release 名稱),選擇版本以及安裝位置(如果啓用多集羣功能並添加了多個集羣,這裏還可以選擇 Pulsar 安裝的所在集羣),點擊下一步。

  10. 轉到應用設置頁面,這裏類似於使用 helm 命令時自定義 values.yaml 文件的各項參數。我們設置 namespace 爲項目名稱,initializetrue(僅首次安裝 Pulsar 時需要設置),並啓用 Pulsar Manager(設置 components.pulsar_managertrue),然後點擊安裝。有關這些參數更具體的信息,可參考 Pulsar 文檔

  11. 等待一段時間後,查看 Pulsar 的各項組件是否已正常運行。

使用 Pulsar Manager 創建 Tenant、Namespace 以及 Topic

Pulsar 集羣搭建好後,我們可以使用 Web 工具 Pulsar Manager 來管理 Pulsar 中的租戶(Tenant)、命名空間(Namespace)以及主題(Topic)。這些資源可用來確保同一個組織中不同部門間數據的相互隔離,如下圖所示。

  1. 前往應用負載 > 服務,進入暴露 Pulsar Manager 的 Service 的詳情頁面,並根據其中 LoadBalancer 類型的 IP 地址加端口號訪問 Pulsar Manager。這裏注意,根據部署環境的不同你可能還需要配置相應的防火牆或端口轉發規則。
  2. 通過默認帳號密碼 pulsar/pulsar 登錄,然後添加環境。Service URL 這裏填 Broker 的 Service 地址與端口號,本示例中爲 http://ks-pulsar-broker:8080
  3. 進入 Pulsar Manager 的 Dashboard 後,在不同菜單下分別添加 Tenant、Namespace 以及 Topic。定義 Topic 時我們需要選擇該 Topic 的類型(持久化或非持久化),並指定 Topic 下的分區(Partition)數量。在 Pulsar 中,Topic 的格式爲:{persistent | non-persistent}😕/tenant/namespace/topic。我們需要先記錄下這些信息,後面向該 Topic 發送信息時會用到。

向 Pulsar 集羣發送信息並消費

現在我們創建好了相關資源,可以嘗試向 Pulsar 集羣發送信息並消費。

  1. 在本地先下載好 Pulsar 的二進制文件,然後解壓。

  2. 進入 Pulsar 目錄後修改 conf/client.conf 文件中的 webServiceUrl 和 brokerServiceUrl 地址,用於將 Pulsar 客戶端和 Pulsar 集羣綁定。本示例中啓用了代理訪問集羣,這裏的地址需要填代理所暴露的 IP 地址。我們可以在 KubeSphere 的服務頁面找到代理的 Service,並查看其詳情頁面中的 IP 地址。

    webServiceUrl=http://34.71.201.104:8080
    brokerServiceUrl=pulsar://34.71.201.104:6650
    
  3. 修改完後,在 Pulsar 目錄下執行以下命令創建訂閱並消費信息,命令中的 kubesphere/kubesphere/kubesphere 對應剛纔在 Pulsar Manager 中所創建的 Tenant、Namespace 以及 Topic。

    ./bin/pulsar-client consume -s sub kubesphere/kubesphere/kubesphere -n 0
    

注意:運行前請務必確保已安裝適用的 Java JRE/JDK 版本

  1. 再打開一個命令行窗口,執行以下命令生產信息。

    ./bin/pulsar-client produce kubesphere/kubesphere/kubesphere -m “Hello KubeSphere and Pulsar” -n 10
    
  2. 可以看到消息已經成功消費。

通過 Grafana 監控 Pulsar 指標

Pulsar 的 Helm Chart 在部署時會安裝 Grafana 提供與 Pulsar 相關的可觀測性指標,便於我們進行後續的運維分析。

  1. 與訪問 Pulsar Manager 類似,前往應用負載 > 服務,進入暴露 Grafana 的 Service 的詳情頁面,並根據其中 LoadBalancer 類型的 IP 地址加端口號訪問 Grafana。
  2. 通過默認帳號密碼 pulsar/pulsar 登錄。在左上角選擇一個 Dashboard 以查看 Pulsar 相關指標。
  3. 可以看到相關數據成功顯示在 Grafana 上。

總結

本文演示了在 KubeSphere 上部署 Apache Pulsar 的操作步驟。藉助 Pulsar 天然適配雲原生環境的特性,我們可以藉助 KubeSphere 運維友好的操作界面輕鬆部署並管理 Pulsar。感興趣的朋友可以閱讀 KubeSpherePulsar 的官方文檔瞭解更多信息。

6 月 25 日線上 Meetup 預告

6 月 25 日,KubeSphere 社區聯合 Apache Pulsar 社區,共同組織一場線上的 Meetup,總共四個議題,現在已開啓報名,歡迎大家掃描海報中的二維碼報名!

本文由博客一文多發平臺 OpenWrite 發佈!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章