K8S 部署单节点EMQX4
myluzh 发布于 阅读:519 Kubernetes
0x01 部署单节点emqx
1、部署yaml
apiVersion: apps/v1 kind: StatefulSet metadata: name: emqx namespace: base spec: serviceName: "emqx-headless" replicas: 1 selector: matchLabels: app: emqx template: metadata: labels: app: emqx spec: containers: - name: emqx image: 172.30.82.223:5443/base/emqx/emqx:4.4.1 ports: - containerPort: 1883 name: mqtt - containerPort: 8083 name: mqtt-ws - containerPort: 8883 name: mqtts - containerPort: 8084 name: mqtt-wss - containerPort: 18083 name: dashboard volumeMounts: - name: emqx-data mountPath: /opt/emqx/data - name: emqx-etc mountPath: /opt/emqx/etc volumeClaimTemplates: - metadata: name: emqx-data spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 10Gi - metadata: name: emqx-etc spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 1Gi --- apiVersion: v1 kind: Service metadata: name: emqx-headless namespace: base spec: clusterIP: None selector: app: emqx ports: - port: 1883 name: mqtt - port: 8083 name: mqtt-ws - port: 8883 name: mqtts - port: 8084 name: mqtt-wss - port: 18083 name: dashboard --- apiVersion: v1 kind: Service metadata: name: emqx-dashboard-nodeport namespace: base spec: type: NodePort selector: app: emqx ports: - port: 18083 targetPort: 18083 #nodePort: 30083 name: dashboard-nodeport
2、配置文件复制
已经把/opt/emqx/data跟/opt/emqx/etc持久化出来了,指定了默认的storegeclass,如果启动容器提示配置文件没找到,是因为EMQX容器启动时会生成默认配置文件,容器启动前就进行持久卷挂载,配置文件就为空。
(1)方案1:需要新建个docker。通过docker cp 复制 把默认配置复制到pvc里面去,。
# 创建一个临时的emqx容器 docker run -d --name emqx-temp 172.30.82.223:5443/base/emqx/emqx:4.4.1 # 把emqx容器默认的配置文件都复制到持久化的pvc路径下面去 docker cp emqx-temp:/opt/emqx/etc/. /opt/local-path-provisioner/pvc-e250eb69-cc03-4481-a089-20e7591fbeab_base_emqx-etc-emqx-0/ docker cp emqx-temp:/opt/emqx/data/. /opt/local-path-provisioner/pvc-b492589d-bde7-44e6-93c5-8ad84e43d762_base_emqx-data-emqx-0/ # 停止并且移除临时的emqx容器 docker stop emqx-temp && docker rm emqx-temp
3、更改配置文件
Dashboard密码在/emqx/etc/plugins/emqx_dashboard.conf,默认为admin,public,可以进行修改。
bash-5.1$ cat /opt/emqx/etc/plugins/emqx_dashboard.conf | grep dashboard dashboard.default_user dashboard.default_user.login = admin dashboard.default_user.password = c1d5MfZWYuzj89edk
客户端连接密码在/opt/emqx/etc/plugins/emqx_auth_mnesia.conf,按需修改。
bash-5.1$ grep -v '^#' /opt/emqx/etc/plugins/emqx_auth_mnesia.conf auth.mnesia.password_hash = plain auth.client.1.clientid = sxhl_user auth.client.1.password = GHrdnn9s8 auth.user.1.username = sxhl_user auth.user.1.password = GHrdnn9s8