K8S部署单节点EMQX4
myluzh 发布于 阅读:614 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