本文由 青雲的小夥伴撰稿,介紹瞭如何使用 KubeSphere 對 EMQ X 集羣在 Kubernetes 上的進行快速部署與管理。nginx
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 (emqx.io) 是一款徹底開源,高度可伸縮,高可用的 分佈式 MQTT 消息服務器,適用於 IoT、M2M 和移動應用程序,可處理 千萬級別的併發客戶端。EMQ X 面向海量的移動/物聯網/車載等終端接入,並實如今 海量物理網設備間快速低延時的消息路由。分佈式
企業空間管理 → 應用倉庫
,點擊 建立應用倉庫
。https://repos.emqx.io/charts
,驗證經過後便可建立。應用負載 → 應用
下點擊 部署新應用
。應用倉庫
。部署應用
。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 部署成功後,將部署 3 副本的有狀態副本集(Statefulsets),當顯示 運行中 (3/3)
時,說明應用部署成功。
應用負載 → 服務
頁面,便可看到 EMQ X 對外暴露的 NodePort 以及端口映射狀況,服務端口 18083 映射到節點的 NodePort (如 32688) 即 EMQ X Dashboard 可以在集羣外訪問到的端口。<$IP><$NodePort>
訪問 EMQ X Dashboard 服務,使用默認賬密 admin/public
登陸 Dashboard。EMQ X 經過建立 PVC 資源掛載 /opt/emqx/data/mnesia
目錄實現持久化 Pods,在部署 EMQ X 以前,用戶能夠經過部署 Haproxy 或 Nginx-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 集羣服務。
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 是在 Kubernetes 之上構建的以應用爲中心的容器平臺,支持部署和運行在任何基礎設施之上,提供簡單易用的操做界面以及嚮導式操做方式,在下降用戶使用容器調度平臺學習成本的同時,極大減輕開發、測試、運維的平常工做的複雜度,旨在解決 Kubernetes 自己存在的存儲、網絡、安全和易用性等痛點。幫助企業輕鬆應對敏捷開發、自動化運維、應用快速交付、微服務治理、多租戶管理、監控日誌告警、服務與網絡管理業務場景。
更多信息請訪問咱們的官網 emqx.io,或關注咱們的開源項目 github.com/emqx/emqx ,詳細文檔請訪問 官方文檔。