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 ,详细文档请访问 官方文档

相关文章
相关标签/搜索