Skip to content

API 参考 (v2beta1)

apps.emqx.io/v2beta1

Package v2beta1 包含 apps v2beta1 API 组的 API Schema 定义

资源类型

BootstrapAPIKey

出现于:

字段描述默认值校验规则
key stringPattern: ^[a-zA-Z\d-_]+$
secret stringMaxLength: 128
MinLength: 3
secretRef SecretRef

Config

出现于:

字段描述默认值校验规则
mode stringMergeEnum: [Merge Replace]
data stringEMQX 配置,HOCON 格式,类似 etc/emqx.conf 文件

EMQX

EMQX 是 emqxes API 的 Schema

出现于:

字段描述默认值校验规则
apiVersion stringapps.emqx.io/v2beta1
kind stringEMQX
metadata ObjectMeta请参阅 Kubernetes API 文档了解 metadata 的字段说明。
spec EMQXSpecSpec 定义该集合中 EMQX 节点的期望标识。
status EMQXStatusStatus 是 EMQX 节点的当前状态,该数据可能存在一定延迟。

EMQXCoreTemplate

出现于:

字段描述默认值校验规则
metadata ObjectMeta请参阅 Kubernetes API 文档了解 metadata 的字段说明。
spec EMQXCoreTemplateSpecEMQX Core 节点期望行为的规格说明。
更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

EMQXCoreTemplateSpec

出现于:

字段描述默认值校验规则
nodeSelector object (keys:string, values:string)NodeSelector 是 Pod 必须满足的节点选择器,Pod 只会被调度到标签匹配的节点上。
更多信息:https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
nodeName stringNodeName 是将 Pod 调度到指定节点的请求。若非空,调度器会在满足资源需求的前提下直接将 Pod 调度到该节点。
affinity AffinityPod 分配的亲和性配置。
参考:https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity
toleRations Toleration array若指定,则为 Pod 的容忍设置。附加此 Toleration 的 Pod 可以容忍匹配 <key,value,effect> 三元组的任意污点。
TODO: 将来应使用 tolerations,此字段仅为兼容旧版本而保留,未来将删除。
tolerations Toleration array若指定,则为 Pod 的容忍设置。附加此 Toleration 的 Pod 可以容忍匹配 <key,value,effect> 三元组的任意污点。
topologySpreadConstraints TopologySpreadConstraint arrayTopologySpreadConstraint 指定如何在给定拓扑中分布匹配的 Pod。
replicas integerReplicas 是指定模板的期望副本数。这些副本是同一模板的实例化,但每个副本也具有一致的标识。默认值为 2。2
minAvailable IntOrString若驱逐后 "selector" 选中的 Pod 中至少还有 "minAvailable" 个可用,则允许该驱逐。例如,指定 "100%" 可防止所有自愿驱逐。XIntOrString: {}
maxUnavailable IntOrString若驱逐后 "selector" 选中的 Pod 中不可用数不超过 "maxUnavailable",则允许该驱逐。例如,指定 0 可防止所有自愿驱逐。与 "minAvailable" 互斥。XIntOrString: {}
command string array入口点数组,不在 shell 中执行。若未提供则使用容器镜像的 ENTRYPOINT。支持变量引用 (VARNAME)$ 转义为 $。更新后不可修改。
更多信息:https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
args string array入口点的参数。若未提供则使用容器镜像的 CMD。支持变量引用 (VARNAME)$ 转义为 $。更新后不可修改。
更多信息:https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
ports ContainerPort array容器暴露的端口列表。此处声明端口主要用于提供信息,不声明不代表该端口无法访问。容器内监听默认 "0.0.0.0" 地址的端口均可从网络访问。更新后不可修改。
env EnvVar array容器中设置的环境变量列表。更新后不可修改。
envFrom EnvFromSource array用于填充容器环境变量的来源列表。来源中定义的键名必须是 C_IDENTIFIER。无效的键在容器启动时以事件形式上报。多个来源存在相同键时,以最后一个来源的值为准。与 Env 中重复键的值以 Env 为准。更新后不可修改。
resources ResourceRequirements容器所需的计算资源。更新后不可修改。
更多信息:https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
podSecurityContext PodSecurityContextSecurityContext 保存 Pod 级别的安全属性和通用容器设置。{ fsGroup:1000 fsGroupChangePolicy:Always runAsGroup:1000 runAsUser:1000 supplementalGroups:[1000] }
containerSecurityContext SecurityContextSecurityContext 定义容器运行时的安全选项。若设置,将覆盖 PodSecurityContext 中的同等字段。
更多信息:https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
{ runAsGroup:1000 runAsNonRoot:true runAsUser:1000 }
initContainers Container array属于 Pod 的初始化容器列表。初始化容器在普通容器启动前按顺序执行。若任一初始化容器失败,Pod 将被视为失败并按 restartPolicy 处理。初始化容器和普通容器的名称在所有容器中必须唯一。初始化容器不支持 Lifecycle 动作、Readiness 探针、Liveness 探针或 Startup 探针。调度时,初始化容器的资源需求按各资源类型取最大请求/限制值,再与普通容器的合计值取较大者。目前初始化容器不支持增删。更新后不可修改。
更多信息:https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
extraContainers Container arrayExtraContainers 表示要添加到 Pod 中的额外容器。
参见 https://github.com/emqx/emqx-operator/issues/252
extraVolumes Volume array参见 https://github.com/emqx/emqx-operator/pull/72
extraVolumeMounts VolumeMount array参见 https://github.com/emqx/emqx-operator/pull/72
livenessProbe Probe容器存活性的定期探测。探测失败时容器将被重启。更新后不可修改。
更多信息:https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
{ failureThreshold:3 httpGet:map[path:/status port:dashboard] initialDelaySeconds:60 periodSeconds:30 }
readinessProbe Probe容器服务就绪状态的定期探测。探测失败时容器将从服务端点列表中移除。更新后不可修改。
更多信息:https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
{ failureThreshold:12 httpGet:map[path:/status port:dashboard] initialDelaySeconds:10 periodSeconds:5 }
startupProbe ProbeStartupProbe 表示 Pod 已成功初始化。若指定,在此探测成功之前不会执行其他探测。若探测失败,Pod 将像 livenessProbe 失败一样被重启。适用于 Pod 生命周期初始阶段需要较长时间加载数据或预热缓存的场景。更新后不可修改。
更多信息:https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
lifecycle Lifecycle管理系统在容器生命周期事件发生时应采取的动作。更新后不可修改。
volumeClaimTemplates PersistentVolumeClaimSpec该字段名为 VolumeClaimTemplates,但实际类型为 PersistentVolumeClaimSpec,命名不佳敬请谅解。PersistentVolumeClaimSpec 描述存储设备的通用属性,并允许指定特定存储提供商的属性。比 EMQXReplicantTemplateSpec 具有更多字段。

EMQXList

EMQXList 包含 EMQX 的列表

字段描述默认值校验规则
apiVersion stringapps.emqx.io/v2beta1
kind stringEMQXList
metadata ListMeta请参阅 Kubernetes API 文档了解 metadata 的字段说明。
items EMQX array

EMQXNode

出现于:

字段描述默认值校验规则
controllerUID UID
podUID UID
node stringEMQX 节点名称,例如:emqx@127.0.0.1
node_status stringEMQX 节点状态,例如:Running
otp_release stringEMQX 使用的 Erlang/OTP 版本,例如:24.2/12.2
version stringEMQX 版本
role stringEMQX 集群节点角色,枚举值:"core" "replicant"
edition stringEMQX 集群节点版本,枚举值:"Opensource" "Enterprise"
connections integerEMQX /api/v5/nodes API 中的 connections 字段表示 MQTT 会话数。
live_connections integerEMQX /api/v5/nodes API 中的 live_connections 字段表示当前连接的 MQTT 客户端数。live_connections 仅在 EMQX 5.1 及以上版本中生效。

EMQXNodesStatus

出现于:

字段描述默认值校验规则
replicas integer
readyReplicas integer
currentRevision string
currentReplicas integer
updateRevision string
updateReplicas integer
collisionCount integer

EMQXReplicantTemplate

出现于:

字段描述默认值校验规则
metadata ObjectMeta请参阅 Kubernetes API 文档了解 metadata 的字段说明。
spec EMQXReplicantTemplateSpecEMQX Replicant 节点期望行为的规格说明。
更多信息:https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
Controller tools 不支持更复杂的校验(oneOf/anyOf/allOf 等),请改用校验规则。https://github.com/kubernetes-sigs/controller-tools/issues/461#issuecomment-1982741599

EMQXReplicantTemplateSpec

出现于:

字段描述默认值校验规则
nodeSelector object (keys:string, values:string)NodeSelector 是 Pod 必须满足的节点选择器,Pod 只会被调度到标签匹配的节点上。
更多信息:https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
nodeName stringNodeName 是将 Pod 调度到指定节点的请求。若非空,调度器会在满足资源需求的前提下直接将 Pod 调度到该节点。
affinity AffinityPod 分配的亲和性配置。
参考:https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity
toleRations Toleration array若指定,则为 Pod 的容忍设置。附加此 Toleration 的 Pod 可以容忍匹配 <key,value,effect> 三元组的任意污点。
TODO: 将来应使用 tolerations,此字段仅为兼容旧版本而保留,未来将删除。
tolerations Toleration array若指定,则为 Pod 的容忍设置。附加此 Toleration 的 Pod 可以容忍匹配 <key,value,effect> 三元组的任意污点。
topologySpreadConstraints TopologySpreadConstraint arrayTopologySpreadConstraint 指定如何在给定拓扑中分布匹配的 Pod。
replicas integerReplicas 是指定模板的期望副本数。这些副本是同一模板的实例化,但每个副本也具有一致的标识。默认值为 2。2
minAvailable IntOrString若驱逐后 "selector" 选中的 Pod 中至少还有 "minAvailable" 个可用,则允许该驱逐。例如,指定 "100%" 可防止所有自愿驱逐。XIntOrString: {}
maxUnavailable IntOrString若驱逐后 "selector" 选中的 Pod 中不可用数不超过 "maxUnavailable",则允许该驱逐。例如,指定 0 可防止所有自愿驱逐。与 "minAvailable" 互斥。XIntOrString: {}
command string array入口点数组,不在 shell 中执行。若未提供则使用容器镜像的 ENTRYPOINT。支持变量引用 (VARNAME)$ 转义为 $。更新后不可修改。
更多信息:https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
args string array入口点的参数。若未提供则使用容器镜像的 CMD。支持变量引用 (VARNAME)$ 转义为 $。更新后不可修改。
更多信息:https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
ports ContainerPort array容器暴露的端口列表。此处声明端口主要用于提供信息,不声明不代表该端口无法访问。容器内监听默认 "0.0.0.0" 地址的端口均可从网络访问。更新后不可修改。
env EnvVar array容器中设置的环境变量列表。更新后不可修改。
envFrom EnvFromSource array用于填充容器环境变量的来源列表。来源中定义的键名必须是 C_IDENTIFIER。无效的键在容器启动时以事件形式上报。多个来源存在相同键时,以最后一个来源的值为准。与 Env 中重复键的值以 Env 为准。更新后不可修改。
resources ResourceRequirements容器所需的计算资源。更新后不可修改。
更多信息:https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
podSecurityContext PodSecurityContextSecurityContext 保存 Pod 级别的安全属性和通用容器设置。{ fsGroup:1000 fsGroupChangePolicy:Always runAsGroup:1000 runAsUser:1000 supplementalGroups:[1000] }
containerSecurityContext SecurityContextSecurityContext 定义容器运行时的安全选项。若设置,将覆盖 PodSecurityContext 中的同等字段。
更多信息:https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
{ runAsGroup:1000 runAsNonRoot:true runAsUser:1000 }
initContainers Container array属于 Pod 的初始化容器列表。初始化容器在普通容器启动前按顺序执行。若任一初始化容器失败,Pod 将被视为失败并按 restartPolicy 处理。初始化容器和普通容器的名称在所有容器中必须唯一。初始化容器不支持 Lifecycle 动作、Readiness 探针、Liveness 探针或 Startup 探针。调度时,初始化容器的资源需求按各资源类型取最大请求/限制值,再与普通容器的合计值取较大者。目前初始化容器不支持增删。更新后不可修改。
更多信息:https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
extraContainers Container arrayExtraContainers 表示要添加到 Pod 中的额外容器。
参见 https://github.com/emqx/emqx-operator/issues/252
extraVolumes Volume array参见 https://github.com/emqx/emqx-operator/pull/72
extraVolumeMounts VolumeMount array参见 https://github.com/emqx/emqx-operator/pull/72
livenessProbe Probe容器存活性的定期探测。探测失败时容器将被重启。更新后不可修改。
更多信息:https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
{ failureThreshold:3 httpGet:map[path:/status port:dashboard] initialDelaySeconds:60 periodSeconds:30 }
readinessProbe Probe容器服务就绪状态的定期探测。探测失败时容器将从服务端点列表中移除。更新后不可修改。
更多信息:https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
{ failureThreshold:12 httpGet:map[path:/status port:dashboard] initialDelaySeconds:10 periodSeconds:5 }
startupProbe ProbeStartupProbe 表示 Pod 已成功初始化。若指定,在此探测成功之前不会执行其他探测。若探测失败,Pod 将像 livenessProbe 失败一样被重启。更新后不可修改。
更多信息:https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
lifecycle Lifecycle管理系统在容器生命周期事件发生时应采取的动作。更新后不可修改。

EMQXSpec

EMQXSpec 定义 EMQX 的期望状态

出现于:

字段描述默认值校验规则
image stringEMQX 镜像名称。
更多信息:https://kubernetes.io/docs/concepts/containers/images
imagePullPolicy PullPolicy镜像拉取策略,可选 Always、Never、IfNotPresent。指定 :latest 标签时默认为 Always,否则默认为 IfNotPresent。更新后不可修改。
更多信息:https://kubernetes.io/docs/concepts/containers/images#updating-images
imagePullSecrets LocalObjectReference arrayImagePullSecrets 是同命名空间下用于拉取镜像的 Secret 引用列表(可选)。若指定,这些 Secret 将传递给各拉取器实现。
更多信息:https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
serviceAccountName stringService Account 名称,用于将 ReplicaSet 或 StatefulSet 与指定的 Service Account 关联以进行身份验证。
更多信息:https://kubernetes.io/docs/concepts/security/service-accounts
bootstrapAPIKeys BootstrapAPIKey arrayEMQX bootstrap 用户,更新后不可修改。
config ConfigEMQX 配置
clusterDomain stringcluster.local
revisionHistoryLimit integer为支持回滚而保留的旧 ReplicaSet、旧 StatefulSet 和旧 PersistentVolumeClaim 的数量。使用指针以区分显式零值和未指定。默认值为 3。3
updateStrategy UpdateStrategyUpdateStrategy 描述 EMQX 蓝绿升级策略的对象{ evacuationStrategy:map[connEvictRate:1000 sessEvictRate:1000 waitTakeover:10] initialDelaySeconds:10 type:Recreate }
coreTemplate EMQXCoreTemplateCoreTemplate 描述将要创建的 EMQX Core 节点{ spec:map[replicas:1] }
replicantTemplate EMQXReplicantTemplateReplicantTemplate 描述将要创建的 EMQX Replicant 节点
dashboardServiceTemplate ServiceTemplateDashboardServiceTemplate 描述将要创建的 EMQX Dashboard 服务,该服务始终选择 EMQX Core 节点
listenersServiceTemplate ServiceTemplateListenersServiceTemplate 描述将要创建的 EMQX 监听器服务。若 EMQX Replicant 节点存在,该服务将选择 Replicant 节点;否则选择 Core 节点

EMQXStatus

EMQXStatus 定义 EMQX 的观测状态

出现于:

字段描述默认值校验规则
conditions Condition array表示 EMQX 自定义资源当前状态的最新可用观测信息。
coreNodes EMQXNode array
coreNodesStatus EMQXNodesStatus
replicantNodes EMQXNode array
replicantNodesStatus EMQXNodesStatus
nodeEvacuationsStatus NodeEvacuationStatus array

EvacuationStrategy

出现于:

字段描述默认值校验规则
waitTakeover integerMinimum: 0
connEvictRate integer仅在 EMQX Enterprise 中生效。1000Minimum: 1
sessEvictRate integer仅在 EMQX Enterprise 中生效。1000Minimum: 1

KeyRef

出现于:

字段描述默认值校验规则
secretName string
secretKey stringPattern: ^[a-zA-Z\d-_]+$

NodeEvacuationStats

出现于:

字段描述默认值校验规则
initial_sessions integer
initial_connected integer
current_sessions integer
current_connected integer

NodeEvacuationStatus

出现于:

字段描述默认值校验规则
node string
stats NodeEvacuationStats
state string
session_recipients string array
session_goal integer
session_eviction_rate integer
connection_goal integer
connection_eviction_rate integer

Rebalance

Rebalance 是 rebalances API 的 Schema

出现于:

字段描述默认值校验规则
apiVersion stringapps.emqx.io/v2beta1
kind stringRebalance
metadata ObjectMeta请参阅 Kubernetes API 文档了解 metadata 的字段说明。
spec RebalanceSpec
status RebalanceStatus

RebalanceCondition

RebalanceCondition 描述 EMQX 重平衡任务的当前状态。

出现于:

字段描述默认值校验规则
type RebalanceConditionType重平衡条件类型的状态,可选 Processing、Complete、Failed。
status ConditionStatus条件状态,可选 True、False、Unknown。
lastUpdateTime Time该条件最后一次更新的时间。
lastTransitionTime Time条件最后一次从一个状态转换到另一个状态的时间。
reason string条件最后一次转换的原因。
message string描述转换详情的人类可读消息。

RebalanceConditionType

底层类型: string

出现于:

字段描述
Processing
Completed
Failed

RebalanceList

RebalanceList 包含 Rebalance 的列表

字段描述默认值校验规则
apiVersion stringapps.emqx.io/v2beta1
kind stringRebalanceList
metadata ListMeta请参阅 Kubernetes API 文档了解 metadata 的字段说明。
items Rebalance array

RebalancePhase

底层类型: string

出现于:

字段描述
Processing
Completed
Failed

RebalanceSpec

RebalanceSpec 定义 Rebalance 的期望状态

出现于:

字段描述默认值校验规则
instanceKind stringInstanceKind 用于区分 EMQX 和 EMQXEnterprise。设为 "EMQX" 表示 EMQX CR 为 v2beta1;设为 "EmqxEnterprise" 表示 EmqxEnterprise CR 为 v1beta4。EMQX
instanceName stringInstanceName 表示 EMQX CR 的名称,仅对 EMQX Enterprise 生效。Required: {}
rebalanceStrategy RebalanceStrategyRebalanceStrategy 表示 EMQX 重平衡的策略。
更多信息:https://docs.emqx.com/en/enterprise/v4.4/advanced/rebalancing.html#rebalancing
Required: {}

RebalanceState

RebalanceState 定义 EMQX 观测到的重平衡状态

出现于:

字段描述默认值校验规则
state string表示 EMQX 集群重平衡的状态。
session_eviction_rate integer表示节点会话迁移速率(每秒)。
recipients string array表示重平衡的目标节点。
node string表示重平衡的调度节点。
donors string array表示重平衡的源节点。
coordinator_node string表示当前正在执行重平衡的节点。
connection_eviction_rate integer表示节点连接迁移速率(每秒)。

RebalanceStatus

RebalanceStatus 表示 Rebalance 的当前状态

出现于:

字段描述默认值校验规则
conditions RebalanceCondition array对象当前状态的最新可用观测信息。Rebalance 失败时条件 type 为 "Failed"、status 为 false;处理中时 type 为 "Processing"、status 为 true;完成时 type 为 "Complete"、status 为 true。
phase RebalancePhase表示 Rebalance 的阶段。
rebalanceStates RebalanceState array
startedTime Time表示重平衡任务开始的时间。
completedTime Time表示重平衡任务完成的时间。

RebalanceStrategy

RebalanceStrategy 表示 EMQX 重平衡的策略

出现于:

字段描述默认值校验规则
connEvictRate integerConnEvictRate 表示源节点客户端断开速率(每秒),对应 EMQX Rebalancing 中的 conn-evict-rate,值必须大于 0。Minimum: 1
Required: {}
sessEvictRate integerSessEvictRate 表示源节点会话迁移速率(每秒),对应 conn-evict-rate,值必须大于 0,默认值为 500。500
waitTakeover integerWaitTakeover 表示所有连接断开后等待客户端重连并接管会话的时间(秒),对应 wait-takeover,值必须大于 0,默认值为 60 秒。60
waitHealthCheck integerWaitHealthCheck 表示等待负载均衡器将源节点从活跃后端列表中移除的时间(秒),超过等待时间后重平衡任务启动,对应 wait-health-check,值必须大于 0,默认值为 60 秒。60
absConnThreshold integerAbsConnThreshold 表示检查连接均衡的绝对阈值,对应 abs-conn-threshold,值必须大于 0,默认值为 1000。1000
relConnThreshold stringRelConnThreshold 表示检查连接均衡的相对阈值,对应 rel-conn-threshold。由于浮点类型在各语言中支持程度不一,该字段定义为字符串类型,值必须大于 "1.0",默认值为 "1.1"。1.1
absSessThreshold integerAbsSessThreshold 表示检查会话连接均衡的绝对阈值,对应 abs-sess-threshold,值必须大于 0,默认值为 1000。1000
relSessThreshold stringRelSessThreshold 表示检查会话连接均衡的相对阈值,对应 rel-sess-threshold。由于浮点类型在各语言中支持程度不一,该字段定义为字符串类型,值必须大于 "1.0",默认值为 "1.1"。1.1

SecretRef

出现于:

字段描述默认值校验规则
key KeyRef
secret KeyRef

ServiceTemplate

出现于:

字段描述默认值校验规则
enabled booleanEMQX Operator 将为 EMQX 节点创建服务。使用指针以区分 false 和未指定。true
metadata ObjectMeta请参阅 Kubernetes API 文档了解 metadata 的字段说明。
spec ServiceSpecSpec 定义服务的行为。
https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

UpdateStrategy

出现于:

字段描述默认值校验规则
type stringRecreateEnum: [Recreate]
initialDelaySeconds integer启动连接迁移前的等待秒数。
evacuationStrategy EvacuationStrategy连接迁移超时前的等待秒数。