在树莓派上通过K3S部署EMQ X edge集群

本文详细介绍如何在树莓派上部署k3s集群,并通过Helm安装EMQX消息代理形成集群。文章涵盖树莓派硬件需求、k3s集群搭建步骤、Helm客户端与Tiller服务器的安装配置,以及EMQX集群的部署与状态检查。
摘要由CSDN通过智能技术生成

环境

k3s需要raspberrypi可以正常访问google,如果没有条件的话推荐在AWS上尝试部署。

HostnameIP角色硬件
raspberrypi192.168.1.99server树莓派3
emqx1192.168.1.100agent树莓派3
emqx2192.168.1.101agent树莓派3

准备

在树莓派上部署k3s集群

1.下载k3s,k3s支持x86_64,armhf和arm64,树莓派上应该安装armhf

$ wget https://github.com/rancher/k3s/releases/download/v0.2.0/k3s-armhf
$ mv k3s-armhf /usr/local/bin/k3s
$ chmod +x /usr/local/bin/k3s

2.启动Server

$ sudo k3s server

3.加入集群

a.在Server节点上查看 /var/lib/rancher/k3s/server/node-token 获取node token

$ NODE_TOKEN=$(sudo cat /var/lib/rancher/k3s/server/node-token)

b.在agent节点上执行 sudo k3s agent --server https://192.168.1.99:6443 --token ${NODE_TOKEN} 加入k3s集群。

4.(可选)外部设备使用 kubectl 管理 k3s集群

a.选取任意能与集群通信并安装了kubectl 的外部设备

b.拷贝/etc/rancher/k3s/k3s.yaml文件到外部设备的 ~/.kube/config

c.修改 ~/.kube/config, 将 https://localhost:6443 替换为https://192.168.1.99:6443

d.使用 kubectl 管理集群

$ kubectl get nodes
NAME         STATUS  ROLES  AGE  VERSION
emqx2        Ready   <none>  29m  v1.13.4-k3s.1
emqx1         Ready   <none>  29m  v1.13.4-k3s.1
raspberrypi Ready   <none>  31m   v1.13.4-k3s.1

安装HELM

安装helm客户端
  • 通过访问:https://github.com/kubernetes/helm/releases。下载 Helm 的合适的版本。

    1.此文下载 helm-v2.8.0-linux-amd64.tgz 版本;

    2.解压缩文件:tar -zxvf helm-v2.8.0-linux-amd64.tgz

    3.将解压缩后的 helm 移至/usr/local/bin 目录下:mv linux-amd64/helm /usr/local/bin/helm

    注意

    最好在安装kubectl命令行工具的机器上安装Helm客户端;或者将安装kubectl 命令行工具生成的配置文件($HOME/.kube/config)复制到 Helm 客户端所安装的机器上( $HOME/.kube/config )。

安装 Tiller 服务器

创建一个名为 tiller 的 Service Account

$ kubectl create serviceaccount tiller --namespace kube-system

授予名为 tiller 的 Service Account 集群管理员角色 cluster-admin:

  • 将 tiller 绑定至集群管理员角色的的 yaml 文件如下所示:
$ cat <<EOF >rbac-config.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system
EOF
  • 通过执行 kubectl create -f将授予 tiller 集群管理员角色:
$ kubectl create -f rbac-config.yaml

安装 Tiller 服务器

$ helm init --service-account tiller
验证安装

在安装完成后,可以通过执行如下命令来检查是安装成功:

$ helm version 

如果正确显示 Helm 客户端和 Tiller 服务器的版本,这表示安装成功。

或者通过执行 kubectl 的如下命令来查看是否已正常按照 Tiller 服务器:

$ kubectl get pods -n kube-system 

部署EMQX集群

1.通过Helm部署EMQX

$ git clone https://github.com/emqx/emqx-chart $ cd emqx-chart $ helm install --name myemqx --set deployment.image="emqx/emqx-edge:latest" . 

关于此仓库更多的设置,请查看README

2.查看EMQX的集群状态

a.查看pods列表

$ kubectl get pods |grep myemqx myemqx-emqx-chart-54974fc5f5-v8chq           1/1     Running   0          2m9s myemqx-emqx-chart-54974fc5f5-zz9gc           1/1     Running   0          2m9s 

b.使用emqx_ctl cluster status查看集群状态

$ kubectl exec myemqx-emqx-chart-54974fc5f5-v8chq /opt/emqx/bin/emqx_ctl cluster status Cluster status: [{running_nodes,['emqx@10.42.2.11','emqx@10.42.1.15']}]

更多信息请访问我们的官网 emqx.io,或关注我们的开源项目 github.com/emqx/emqx ,详细文档请访问 官方文档

转载于:https://my.oschina.net/u/4174826/blog/3082818

Docker 可以帮助你在 Linux 服务器上部署 EMQx 集群,这是一种开源的 MQTT 消息代理服务。以下是使用 Docker 在两台服务器上搭建 EMQx 集群的基本步骤: 1. **安装 Docker**: 确保两台服务器都已安装 Docker,并配置好必要的网络设置以便容器间通信。 2. **拉取 EMQx 镜像**: 使用命令 `docker pull emq/emq` 或者 `emq/emqx` 来获取最新的 EMQx 容器镜像。 3. **创建网络**: 创建一个专用于 EMQx 集群的 Docker 网络,例如 `docker network create emqx_net`。 4. **启动单节点**: 在每台服务器上运行 EMQx 容器,指定端口映射、数据卷存储等配置。比如: ``` docker run -d --name emqx_node1 \ -p 1883:1883 -p 8081:8081 \ --network emqx_net \ emq/emqx ``` 这里 `-p` 参数暴露了 EMQx 的 MQTT 和 Web 界面端口。 5. **启用自动发现**: EMQx 提供了一个自动发现机制,通常通过环境变量 `EMQX_NODE__NAME` 和 `EMQX_NODE__CLUSTER__ADDR`。例如: ``` docker run -e EMQX_NODE__NAME=node1 -e EMQX_NODE__CLUSTER__ADDR="node1:1883" ... ``` 每个节点都需要一个唯一的名称。 6. **启动第二节点**: 同样,在另一台服务器上,修改节点名并添加到集群地址列表: ``` docker run -e EMQX_NODE__NAME=node2 -e EMQX_NODE__CLUSTER__ADDR="node1:1883,node2:1883" ... ``` 7. **验证集群**: 登录到任意节点的 Web 控制面板 (`http://your_server_ip:8081`),检查集群是否正常工作,各个节点是否连接在一起。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值