apps.emqx.io/v1beta4 EmqxEnterprise
支持通过 .spec.persistent
字段配置 EMQX 集群持久化。.spec.persistent
字段的语义及配置与 Kubernetes 的 PersistentVolumeClaimSpec
一致,其配置可以参考文档:PersistentVolumeClaimSpec (opens new window)。
当用户配置了 .spec.persistent
字段时,EMQX Operator 会将 EMQX 容器中 /opt/emqx/data
目录挂载到通过 StorageClass (opens new window) 创建的 PV 和 PVC 中,当 EMQX Pod 被删除时,PV 和 PVC 不会被删除,从而达到保存 EMQX 运行时数据的目的。关于 PV 和 PVC 的更多信息,请参考文档 Persistent Volumes (opens new window)。
将下面的内容保存成 YAML 文件,并通过 kubectl apply
命令部署它
apiVersion: apps.emqx.io/v1beta4
kind: EmqxEnterprise
metadata:
name: emqx-ee
spec:
persistent:
metadata:
name: emqx-ee
spec:
storageClassName: standard
resources:
requests:
storage: 20Mi
accessModes:
- ReadWriteOnce
template:
spec:
emqxContainer:
image:
repository: emqx/emqx-ee
version: 4.4.14
serviceTemplate:
spec:
type: LoadBalancer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
storageClassName
字段表示 StorageClass 的名称,可以使用命令 kubectl get storageclass
获取 Kubernetes 集群已经存在的 StorageClass,也可以根据自己需求自行创建 StorageClass。
等待 EMQX 集群就绪,可以通过 kubectl get
命令查看 EMQX 集群的状态,请确保 STATUS
为 Running
,这个可能需要一些时间
$ kubectl get emqxenterprises
NAME STATUS AGE
emqx-ee Running 8m33s
1
2
3
获取 EMQX 集群的 External IP,访问 EMQX 控制台
$ kubectl get svc emqx-ee -o json | jq '.status.loadBalancer.ingress[0].ip'
192.168.1.200
1
2
3
通过浏览器访问 http://192.168.1.200:18083
,使用默认的用户名和密码 admin/public
登录 EMQX 控制台。
apps.emqx.io/v2alpha1 EMQX
支持通过 .spec.coreTemplate.spec.volumeClaimTemplates
字段配置 EMQX 集群 Core 节点持久化。.spec.coreTemplate.spec.volumeClaimTemplates
字段的语义及配置与 Kubernetes 的 PersistentVolumeClaimSpec
一致,其配置可以参考文档:PersistentVolumeClaimSpec (opens new window) 。
当用户配置了 .spec.coreTemplate.spec.volumeClaimTemplates
字段时,EMQX Operator 会将 PVC(PersistentVolumeClaim) 作为 Volume 挂载到 EMQX Pod 中,PVC 表示用户持久化请求,最终负责存储的是持久化卷(PersistentVolume,PV),PV 和 PVC 是一一对应的。EMQX Operator 使用 StorageClass (opens new window) 动态创建 PV,PV 存储了 EMQX 容器中 /opt/emqx/data
目录下的数据,当用户不再使用 PV 资源时,可以手动删除 PVC 对象,从而允许该 PV 资源被回收再利用。
将下面的内容保存成 YAML 文件,并通过 kubectl apply
命令部署它
apiVersion: apps.emqx.io/v2alpha1
kind: EMQX
metadata:
name: emqx
spec:
image: emqx:5.0
coreTemplate:
spec:
volumeClaimTemplates:
storageClassName: standard
resources:
requests:
storage: 20Mi
accessModes:
- ReadWriteOnce
replicas: 3
listenersServiceTemplate:
spec:
type: LoadBalancer
dashboardServiceTemplate:
spec:
type: LoadBalancer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
storageClassName
字段表示 StorageClass 的名称,可以使用命令 kubectl get storageclass
获取 Kubernetes 集群已经存在的 StorageClass,也可以根据自己需求自行创建 StorageClass。
等待 EMQX 集群就绪,可以通过 kubectl get
命令查看 EMQX 集群的状态,请确保 STATUS
为 Running
,这个可能需要一些时间
$ kubectl get emqx emqx
NAME IMAGE STATUS AGE
emqx emqx:5.0 Running 10m
1
2
3
获取 EMQX 集群的 Dashboard External IP,访问 EMQX 控制台
EMQX Operator 会创建两个 EMQX Service 资源,一个是 emqx-dashboard,一个是 emqx-listeners,分别对应 EMQX 控制台和 EMQX 监听端口。
$ kubectl get svc emqx-dashboard -o json | jq '.status.loadBalancer.ingress[0].ip'
192.168.1.200
1
2
3
通过浏览器访问 http://192.168.1.200:18083
,使用默认的用户名和密码 admin/public
登录 EMQX 控制台。