KubeSphere 快速部署 EMQ X 至 Kubernetes 開啓萬物互聯

本文由 青雲的小夥伴撰稿,介紹瞭如何使用 KubeSphere 對 EMQ X 集羣在 Kubernetes 上的進行快速部署與管理。nginx

KubeSphere 應用部署與管理

KubeSphere (kubesphere.io) 是一個開源的以應用爲中心的容器平臺,基於自研的 OpenPitrix 構建了應用商店與應用的生命週期管理,而且在 v2.1 中提供了 3 種應用的快速部署方式:git

  • 企業空間下導入的私有或公有的應用倉庫
  • 平臺全局的應用商店
  • 自制應用,即經過添加多個微服務來編排和構建應用

第三方應用倉庫github

KubeSphere 支持的應用是基於 Helm Chart 打包規範構建的,應用由一個或多個 Kubernetes 工做負載 (Workload) 和服務(Service)組成。經過一鍵導入公有或私有的應用倉庫,能夠快速完成 Helm 應用的可視化編輯、部署、管理與運維安全

應用商店服務器

KubeSphere 應用商店 對內可做爲團隊間共享企業內部的中間件、大數據、業務應用等,對應用的生命週期從業務角度進行全方位管理,以應用模板的形式方便用戶快速地一鍵部署應用至 Kubernetes ;對外可做爲根據行業特性構建行業交付標準、交付流程和交付路徑的基礎,做爲行業通用的應用商店,可根據不一樣需求應對不一樣的業務場景。網絡

自制應用併發

KubeSphere 支持嚮導式 UI,當應用的各個組件進行容器化以後,它能夠幫助開發者經過添加應用的多個微服務組件,快速構建一個微服務類應用,併發布至 Kubernetes。負載均衡

本文先介紹 KubeSphere 支持的 第一種應用部署與管理方式,經過在企業空間導入第三方應用倉庫,快速部署一個 EMQ X 集羣至 Kubernetes,最終訪問 EMQ X 的 Dashboard 服務,同時介紹 EMQ X 自己的特性與部署方式。運維

EMQ X 是什麼

EMQ X (emqx.io) 是一款徹底開源,高度可伸縮,高可用的 分佈式 MQTT 消息服務器,適用於 IoT、M2M 和移動應用程序,可處理 千萬級別的併發客戶端。EMQ X 面向海量的移動/物聯網/車載等終端接入,並實如今 海量物理網設備間快速低延時的消息路由分佈式

部署簡單的 EMQ X 集羣

導入應用倉庫

  1. 建立一個企業空間(Workspace),而後在該企業空間,進入 企業空間管理 → 應用倉庫,點擊 建立應用倉庫

  1. 在添加應用倉庫的建立,填入 https://repos.emqx.io/charts,驗證經過後便可建立。

  1. 建立一個示例項目(Namespace),而後進入該項目中,在 應用負載 → 應用 下點擊 部署新應用

  1. 此時便可看到 KubeSphere 支持的 3 種應用的快速部署方式,選擇 應用倉庫

  1. 點擊查看 EMQ X 應用模板。

  1. 預覽 EMQ X 的 Helm Chart 中的配置文件,而後選擇 部署應用

編輯 Helm Chart

KubeSphere 支持可視化編輯 Helm Chart,在 Values.yaml 參考以下提示,將其中 3 處修改成指定的值:

提示:關於 EMQ X 的 Helm Chart 更詳細的參數釋義,請參考 EMQ X 的官方 EMQ X Chart

namespace: demo-project # 此處替換爲您實際建立的項目名稱
···
image: emqx/emqx:v3.2.3 # 指定 image 爲 emqx/emqx:v3.2.3
···
service:
  type: NodePort # 將 service 從 ClusterIP 改成 NodePort
···

修改完成後點擊 部署 便可將 EMQ X 集羣部署至 Kubernetes。

查看 EMQ X 部署狀態

應用詳情

在應用列表中,能夠看到 EMQ X 的應用狀態,點擊進入該應用,查看該應用的工做負載與服務的狀態。

查看工做負載 → 有狀態副本集

EMQ X 部署成功後,將部署 3 副本的有狀態副本集(Statefulsets),當顯示 運行中 (3/3) 時,說明應用部署成功。

訪問 EMQ X Dashboard 服務

  1. 應用負載 → 服務 頁面,便可看到 EMQ X 對外暴露的 NodePort 以及端口映射狀況,服務端口 18083 映射到節點的 NodePort (如 32688) 即 EMQ X Dashboard 可以在集羣外訪問到的端口。

  1. 使用 <$IP><$NodePort> 訪問 EMQ X Dashboard 服務,使用默認賬密 admin/public 登陸 Dashboard。

  1. 在首頁的監控列表便可看到 EMQ X Broker 的系統信息,包括 3 Nodes 和 3 Stats 監控信息,狀態顯示 Running。用戶可經過 Web 控制檯,查看服務器 運行狀態、統計數據、鏈接(Connections)、會話(Sessions)、主題(Topics)、訂閱(Subscriptions)、插件(Plugins) 等信息。關於 EMQ X 的詳細使用請參考 EMQ X 官方文檔 (docs.emqx.io)。

  1. EMQ X 的 3 個 Nodes IP 正好對應着 EMQ X Statefulsets 的 3 個 Pod IP。

部署持久化的 EMQ X 集羣

EMQ X 經過建立 PVC 資源掛載 /opt/emqx/data/mnesia 目錄實現持久化 Pods,在部署 EMQ X 以前,用戶能夠經過部署 HaproxyNginx-PLUS 等負載均衡器,而後在 Kubernetes 中建立 PV 或 StorageClass。

在 KubeSphere 部署一個持久化的 EMQ X 集羣步驟與上述步驟相似,所以這裏僅提示參數配置。在準備好負載均衡器後,只須要在可視化編輯 Helm Chart 的 Values.yaml 中指定 StorageClass 相關參數便可。

···
namespace: demo-project # 此處替換爲您實際建立的項目名稱
···
persistence
  enabled=true # 此處設爲 true
  ···
  storageClass: local # 可經過 KubeSphere 頁面或 kubectl get sc 查看存儲類型
  ···
  image: emqx/emqx:v3.2.3 # 指定 image 爲 emqx/emqx:v3.2.3
  ···
service:
  type: NodePort # 將 service 從 ClusterIP 改成 NodePort
  ···

部署完成後,能夠看到 emqx Service 的 ClusterIP 爲 10.233.28.52 (以實際部署時爲準)。將負載均衡監聽的 URL 的 188三、888三、8080、808三、808四、18083 端口轉發到 emqx Service 的 ClusterIP。

提示:若是有 TLS 鏈接的須要,推薦在負載均衡器終結 SSL 鏈接。客戶端與負載均衡器之間 TLS 安全鏈接,負載均衡器與 EMQ X 之間普通 TCP 鏈接。

完成後使用 <$IP><$NodePort> 或集羣內訪問 <$ClusterIP>:<$Port> 便可訪問持久化的 EMQ X 集羣服務。

擴容 EMQ X 集羣

KubeSphere 支持一鍵快速擴展 EMQ X 集羣,進入 工做負載 → 有狀態副本集,點擊擴容的 Button 將 EMQ X 副本數擴容至 5。注意,EMQ X 的節點數量建議爲 單數

一鍵進入容器終端

若在運維 EMQ X 集羣的過程當中,須要快速進入容器終端,可在 EMQ X 的有狀態副本詳情頁找到其中一個 Pod,點擊進入指定 Pod 下的容器中。

總結

本文介紹了 KubeSphere 支持的 第一種應用部署與管理方式,經過在企業空間導入了 EMQ X 應用倉庫,並快速部署到了 Kubernetes。將來,EMQ X + KubeSphere 可做爲物聯網應用場景下快速落地容器微服務的解決方案。

下一期文章將主要介紹第二種方式 - 應用商店與應用的生命週期管理,如何使用開發者或 ISV 角色用戶,將 Helm 應用的 上傳提交、應用審覈、測試部署、應用上架、應用升級、應用下架 做爲一個完整的流程來演示。

關於 KubeSphere

KubeSphere 是在 Kubernetes 之上構建的以應用爲中心容器平臺,支持部署和運行在任何基礎設施之上,提供簡單易用的操做界面以及嚮導式操做方式,在下降用戶使用容器調度平臺學習成本的同時,極大減輕開發、測試、運維的平常工做的複雜度,旨在解決 Kubernetes 自己存在的存儲、網絡、安全和易用性等痛點。幫助企業輕鬆應對敏捷開發、自動化運維、應用快速交付、微服務治理、多租戶管理、監控日誌告警、服務與網絡管理業務場景。


更多信息請訪問咱們的官網 emqx.io,或關注咱們的開源項目 github.com/emqx/emqx ,詳細文檔請訪問 官方文檔

相關文章
相關標籤/搜索