Myluzh Blog

K8S 部署单节点EMQX4

发布时间: 2025-3-11 文章作者: myluzh 分类名称: 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



标签: k8s emqx emqx4

发表评论