规范架构
DBClusterSpec 定义 DBCluster 的期望状态。
DBCluster:
metadata:
name: string
spec:
availability:
autoFailoverTriggerThreshold: integer
autoHealTriggerThreshold: integer
enableAutoFailover: boolean
enableAutoHeal: boolean
healthcheckPeriodSeconds: integer
replayReplicationSlotsOnStandbys: boolean
numberOfStandbys: integer
primarySpec:
adminUser:
passwordRef:
name: string
dbLoadBalancerOptions:
gcp:
loadBalancerIP: string
loadBalancerType: string
loadBalancerInterface: string
onprem:
loadBalancerIP: string
loadBalancerType: string
loadBalancerInterface: string
parameters: object
resources:
cpu: integer or string
memory: string or integer
disks:
- name: string
path: string
tls:
certSecret:
name: string
字段 类型必需或可选 |
说明 |
|---|---|
availability
| |
object可选 | Availability 包含用于 DBCluster 高可用性 (HA) 功能的可调整设置。 |
availability.autoFailoverTriggerThreshold
| |
integer可选 | AutoFailoverTriggerThreshold 是主实例上触发自动故障切换的连续健康检查失败次数。如果设置为 0,则会使用系统默认值。使用 EnableAutoFailover 标志可停用自动故障切换。 |
availability.autoHealTriggerThreshold
| |
integer可选 | AutoHealTriggerThreshold 是启动自动修复的连续备用实例健康检查失败次数。如需停用自动修复,请使用 EnableAutoHeal 标志。默认值为 5。 |
availability.enableAutoFailover
| |
boolean可选 | EnableAutoFailover 表示如果检测到主实例健康状况不佳且备用实例健康状况良好,则此 DBCluster 会触发故障切换。如果设置为 true,则会启用自动故障切换。如果设置为 false,则即使系统检测到主实例健康状况不佳,也不会触发自动故障切换。默认值为 true。 启用后,如果对于给定阈值,系统检测到主实例健康状况不佳,则会触发故障切换。仅当这是高可用性 DBCluster 且备用实例健康状况良好时,此功能才适用。 |
availability.enableAutoHeal
| |
boolean可选 | EnableAutoHeal 表示如果检测到备用实例健康状况不佳,则此 DBCluster 会触发自动修复。如果设置为 true,则会启用自动修复。如果设置为 false,则即使系统检测到备用实例健康状况不佳,也不会触发自动修复。默认值为 true。 启用后,如果对于给定阈值,系统检测到备用实例健康状况不佳,则会触发自动修复。仅当这是高可用性 DBCluster 时,此功能才适用。 |
availability.healthcheckPeriodSeconds
| |
integer可选 | HealthcheckPeriodSeconds 是健康检查探测器在再次检查主实例和备用实例的健康状况并相应地更新状态之前等待的秒数。 |
availability.replayReplicationSlotsOnStandbys
| |
boolean可选 | 将 replayReplicationSlotsOnStandbys 设置为 true 可让 HA 备用实例通过 WAL 文件重放复制槽。我们还建议在上游复制资源上启用 LogReplicationSlot 字段,以便在 WAL 文件中记录相应的复制槽。此配置有助于确保在主 DBCluster 上发生 HA 故障切换或切换时,新的 HA 主实例会保留尚未被这些复制槽消耗掉的 WAL 文件。请注意,修改此字段会导致所有 HA 备用实例重启。 |
availability.numberOfStandbys
| |
integer可选 | NumberOfStandbys 是应为此 DBCluster 创建的备用实例的数量。如果设置为大于 0 的任何值,则系统会对集群启用高可用性,并创建指定数量的备用实例。允许的备用实例数量上限为 5。如需查看此 DBCluster 的当前高可用性状态,请查看 DBCluster 状态下的 HAReady 条件。如果 HAReady 为 true,则表示设置已完成并已就绪。如果设置为 0,则系统会对集群停用高可用性,并删除所有现有的备用实例。支持 0 到 5 之间的任意数字(包括 0 和 5)。默认值为 0。 |
databaseVersion
| |
string必需 | DatabaseVersion 是集群所需的数据库版本,例如“18.1.0”。此字段为必需字段。此版本会应用于数据库集群的所有实例。 |
primarySpec
| |
object必需 | PrimarySpec 包含数据库集群的主实例的规范。主实例包含为数据库集群的读写端点提供服务的计算和存储资源。 |
primarySpec.adminUser
| |
object必需 | AdminUser 表示管理员用户规范。这是控制平面创建的初始数据库用户。其他数据库用户由最终用户直接管理。此字段还可用于重置初始用户的密码。 |
primarySpec.adminUser.passwordRef
| |
object必需 | PasswordRef 是包含管理员用户密码的 Secret 的名称。此值在初始预配或密码重置期间用于为管理员用户设置相应密码。Secret 必须位于与数据库集群相同的项目中。Secret 的名称必须遵循以下模式:db-pw-。此外,密码的键(在 Secret 中)必须与数据库集群名称相同。 |
primarySpec.adminUser.passwordRef.name
| |
string必需 | 引用对象的名称。 |
primarySpec.dbLoadBalancerOptions
| |
object可选 | DBLoadBalancerOptions 允许用户提供负载平衡器的详细信息。 |
primarySpec.dbLoadBalancerOptions.gcp
| |
object可选 | 包含 LoadBalancer 的 Google Cloud 特有属性。 |
primarySpec.dbLoadBalancerOptions.gcp.loadBalancerIP
| |
string可选 | LoadBalancerIP 是静态 IP 地址。如需了解详情,请参阅配置静态外部 IP 地址。 |
primarySpec.dbLoadBalancerOptions.gcp.loadBalancerType
| |
string可选 | 负载平衡器可以是内部的,也可以是外部的。 |
primarySpec.dbLoadBalancerOptions.gcp.loadBalancerInterface
| |
string可选 | LoadBalancerInterface 是负载平衡器要使用的网络接口。 |
primarySpec.dbLoadBalancerOptions.onprem
| |
object可选 | 包含 LoadBalancer 的本地属性。 |
primarySpec.dbLoadBalancerOptions.onprem.loadBalancerIP
| |
string可选 | LoadBalancerIP 是静态 IP 地址。 |
primarySpec.dbLoadBalancerOptions.onprem.loadBalancerType
| |
string可选 | 负载平衡器可以是内部的,也可以是外部的。 |
primarySpec.dbLoadBalancerOptions.onprem.loadBalancerInterface
| |
string可选 | LoadBalancerInterface 是负载平衡器要使用的网络接口。 |
primarySpec.parameters
| |
object可选 | Parameters 可用于为数据库集群设置数据库参数。参数采用与数据库引擎定义的参数名称/值相对应的键值对。 |
primarySpec.resources
| |
object必需 | 数据库进程的资源规范。当资源中的任何字段发生更改时,操作器会使用新的资源规范重启数据库实例。 |
primarySpec.resources.cpu
| |
integer or string必需 | 分配给数据库进程的 CPU 数量。 |
primarySpec.resources.disks
| |
object必需 | 分配给数据库进程的磁盘的规范。 |
primarySpec.resources.disks.name
| |
string必需 | 磁盘的名称。此字段为必填字段。允许的值包括:DataDisk 和 ObsDisk。 |
primarySpec.resources.disks.path
| |
string必需 | 磁盘将装载到文件系统中的路径 |
primarySpec.resources.memory
| |
string or integer必需 | 分配给数据库进程的内存量。 |
tls
| |
object可选 | TLS 是集群的所需服务器证书配置。默认情况下,此字段为空,系统会为集群生成新的自签名 CA 和叶证书。 |
tls.certSecret
| |
object可选 | CertSecret 引用同一命名空间中的证书 Secret。此 Secret 必须包含 ca.crt(CA 证书)、tls.key(服务器私钥)和 tls.crt(服务器叶证书)条目。此 Secret 用于为作为数据库集群一部分的数据库实例设置 TLS 配置。 |
tls.certSecret.name
| |
string可选 | 引用对象的名称。 |
状态架构
DBClusterStatus 定义观察到的 DBCluster 状态。
conditions:
- lastTransitionTime: string
message: string
observedGeneration: integer
reason: string
status: string
type: string
criticalIncidents:
- code: string
createTime: string
message: string
messageTemplateParams: object
resource:
component: string
location:
cluster: string
group: string
kind: string
name: string
namespace: string
version: string
stackTrace:
- component: string
message: string
transientUntil: string
latestFailoverStatus:
failoverName: string
status:
conditions:
- lastTransitionTime: string
message: string
observedGeneration: integer
reason: string
status: string
type: string
createTime: string
criticalIncidents:
- code: string
createTime: string
message: string
messageTemplateParams: object
resource:
component: string
location:
cluster: string
group: string
kind: string
name: string
namespace: string
version: string
stackTrace:
- component: string
message: string
transientUntil: string
endTime: string
internal:
attempt: integer
lastPhaseChangeTime: string
newPrimary: string
newPrimaryZone: string
oldPrimary: string
phase: string
observedGeneration: integer
reconciled: boolean
startTime: string
state: string
instanceList:
- name: string
host: string
deletionTimestamp: string
role: string
observedGeneration: integer
phase: string
primary:
allocatedResources:
cpu: integer or string
memory: integer or string
conditions:
- lastTransitionTime: string
message: string
observedGeneration: integer
reason: string
status: string
type: string
endpoint: string
endpoints:
- name: string
value: string
phase: string
url: string
reconciled: boolean
字段 类型必需或可选 |
说明 |
|---|---|
conditions
| |
list (object)可选 | Conditions 表示实体当前状态的最新可用观察结果。 |
conditions[]
| |
object可选 | Conditions 包含此 API 资源当前状态的一个方面的详细信息。 |
conditions[].lastTransitionTime
| |
string必需 | lastTransitionTime 是条件上次从一种状态转换到另一种状态的时间,这在底层条件更改时发生。如果底层条件更改的时间未知,则使用 API 字段更改的时间。 |
conditions[].message
| |
string必需 | message 是人类可读的消息,指示有关转换的详细信息。此字段可以为空字符串。 |
conditions[].observedGeneration
| |
integer可选 | observedGeneration 表示设置条件所基于的 .metadata.generation。例如,如果 .metadata.generation 为 12,但 .status.conditions[x].observedGeneration 为 9,则表示条件相对于实例的当前状态已过时。 |
conditions[].reason
| |
string必需 | reason 包含一个程序化标识符,指示条件上次转换的原因。特定条件类型的生成者可以为此字段定义预期值和含义,以及这些值是否被视为有保证的 API。值必须是 CamelCase 字符串。此字段不得为空。 |
conditions[].status
| |
string必需 | 条件的状态,为 True、False、Unknown 之一。 |
conditions[].type
| |
string必需 | 条件的类型,采用 CamelCase 或 foo.example.com/CamelCase 形式。许多 .condition.type 值(例如 Available)在各个资源中是一致的,但由于任意条件都可能会有用(请参阅 .node.status.conditions),因此能够解决冲突非常重要。它匹配的正则表达式为 (dns1123SubdomainFmt/)?(qualifiedNameFmt)。 |
criticalIncidents
| |
object可选 | CriticalIncidents 是所有活跃的严重突发事件的扁平列表。 |
criticalIncidents[]
| |
object可选 | CriticalIncident 包含有关正在进行的严重突发事件的所有信息。 |
criticalIncidents[].code
| |
string必需 | Code 是此特定错误的错误代码。错误代码是 DBSE+数字字符串,例如“DBSE1012”。 |
criticalIncidents[].createTime
| |
string必需 | CreateTime 是在源头创建此突发事件时的时间戳。 |
criticalIncidents[].message
| |
string可选 | Message 描述发生的突发事件或错误。 |
criticalIncidents[].messageTemplateParams
| |
object可选 | MessageTemplateParams 包含在界面中生成人性化数据驱动型消息版本所需的键值对。 |
criticalIncidents[].resource
| |
object必需 | 资源包含有关报告突发事件的数据库服务组件的信息,以及有关 Kubernetes 资源的信息。 |
criticalIncidents[].resource.component
| |
string必需 | Component 是报告突发事件的数据库服务子系统的内部标识符。 |
criticalIncidents[].resource.location
| |
object可选 | 位置 |
criticalIncidents[].resource.location.cluster
| |
string可选 | Cluster 是受影响的 Kubernetes 资源的集群名称。 |
criticalIncidents[].resource.location.group
| |
string可选 | Group 是集群管理器资源的组名称。 |
criticalIncidents[].resource.location.kind
| |
string可选 | Kind 是 Kubernetes 资源的种类。 |
criticalIncidents[].resource.location.name
| |
string可选 | Name 是受影响的 Kubernetes 资源的名称。 |
criticalIncidents[].resource.location.namespace
| |
string可选 | Namespace 是受影响的 Kubernetes 资源的命名空间。 |
criticalIncidents[].resource.location.version
| |
string可选 | Version 是 Kubernetes 资源的版本。 |
criticalIncidents[].stackTrace
| |
object可选 | StackTrace 包含来自堆栈轨迹的消息的非结构化列表。 |
criticalIncidents[].stackTrace.component
| |
string可选 | Component 是记录消息的数据库服务组件的名称。 |
criticalIncidents[].stackTrace.message
| |
string可选 | 记录的消息。 |
criticalIncidents[].transientUntil
| |
string可选 | 如果存在,则 TransientUntil 指示在指定时间之前,问题必须被视为暂时性问题。 |
latestFailoverStatus
| |
object可选 | LatestFailoverStatus 是数据库集群最近更新的故障切换的状态。此状态是数据库集群当前或最近更新的故障切换操作状态的副本。这可用于方便地监控正在运行的故障切换操作的状态。 |
latestFailoverStatus.failoverName
| |
string可选 | FailoverName 是最新故障切换的名称。 |
latestFailoverStatus.status
| |
object可选 | Status 表示数据库集群的最新故障切换状态。 |
latestFailoverStatus.status.conditions
| |
object可选 | Conditions 表示实体当前状态的最新可用观察结果。 |
latestFailoverStatus.status.conditions.lastTransitionTime
| |
string必需 | lastTransitionTime 是条件上次从一种状态转换到另一种状态的时间,这在底层条件更改时发生。如果该信息未知,则可以使用 API 字段更改的时间。 |
latestFailoverStatus.status.conditions.message
| |
string必需 | message 是人类可读的消息,指示有关转换的详细信息。这可能是空字符串。 |
latestFailoverStatus.status.conditions.observedGeneration
| |
integer可选 | observedGeneration 表示设置条件所基于的 .metadata.generation。例如,如果 .metadata.generation 为 12,但 .status.conditions[x].observedGeneration 为 9,则表示条件相对于实例的当前状态已过时。 |
latestFailoverStatus.status.conditions.reason
| |
string必需 | reason 包含一个程序化标识符,指示条件上次转换的原因。特定条件类型的生成者可以为此字段定义预期值和含义,以及这些值是否被视为有保证的 API。值应为 CamelCase 字符串。 此字段不得为空。 |
latestFailoverStatus.status.conditions.status
| |
string必需 | 条件的状态,为 True、False、Unknown 之一。 |
latestFailoverStatus.status.conditions.type
| |
string必需 | 条件的类型,采用 CamelCase 或 foo.example.com/CamelCase 形式。许多 .condition.type 值(例如 Available)在各个资源中是一致的,但由于任意条件都可能会有用(请参阅 .node.status.conditions),因此能够解决冲突非常重要。它匹配的正则表达式为 (dns1123SubdomainFmt/)?(qualifiedNameFmt)。 |
latestFailoverStatus.status.createTime
| |
string可选 | CreateTime 是创建内部故障切换工作流机制的时间。 |
latestFailoverStatus.status.criticalIncidents
| |
object可选 | CriticalIncidents 是所有活跃的严重突发事件的扁平列表。 |
latestFailoverStatus.status.criticalIncidents.code
| |
string必需 | Code 是此特定错误的错误代码。错误代码是 DBSE+数字字符串,例如“DBS1012”。 |
latestFailoverStatus.status.criticalIncidents.createTime
| |
string必需 | CreateTime 是在源头创建此突发事件时的时间戳。 |
latestFailoverStatus.status.criticalIncidents.message
| |
string可选 | Message 描述发生的突发事件或错误。 |
latestFailoverStatus.status.criticalIncidents.messageTemplateParams
| |
object可选 | MessageTemplateParams 包含在界面中生成人性化数据驱动型消息版本所需的键值对。 |
latestFailoverStatus.status.criticalIncidents.resource
| |
object必需 | 该资源包含有关报告突发事件的数据库服务组件的信息,以及有关集群管理器资源的信息。 |
latestFailoverStatus.status.criticalIncidents.resource.component
| |
string必需 | Component 是报告突发事件的数据库服务子系统的内部标识符。 |
latestFailoverStatus.status.criticalIncidents.resource.location
| |
object可选 | 位置 |
latestFailoverStatus.status.criticalIncidents.resource.location.cluster
| |
string可选 | Cluster 是受影响的集群管理器资源的集群名称。 |
latestFailoverStatus.status.criticalIncidents.resource.location.group
| |
string可选 | Group 是集群管理器资源的组名称。 |
latestFailoverStatus.status.criticalIncidents.resource.location.kind
| |
string可选 | Kind 是集群管理器资源的种类。 |
latestFailoverStatus.status.criticalIncidents.resource.location.name
| |
string可选 | Name 是受影响的集群管理器资源的名称。 |
latestFailoverStatus.status.criticalIncidents.resource.location.namespace
| |
string可选 | Namespace 是受影响的集群管理器资源的命名空间。 |
latestFailoverStatus.status.criticalIncidents.resource.location.version
| |
string可选 | Group 是集群管理器资源的版本。 |
latestFailoverStatus.status.criticalIncidents.stackTrace
| |
object可选 | StackTrace 包含来自堆栈轨迹的消息的非结构化列表。 |
latestFailoverStatus.status.criticalIncidents.stackTrace.component
| |
string可选 | Component 是记录消息的数据库服务组件的名称。 |
latestFailoverStatus.status.criticalIncidents.stackTrace.message
| |
string可选 | 记录的消息。 |
latestFailoverStatus.status.criticalIncidents.transientUntil
| |
string可选 | 如果存在,则 TransientUntil 指示在指定时间之前,问题必须被视为暂时性问题。 |
latestFailoverStatus.status.endTime
| |
string可选 | EndTime 是故障切换达到最终状态的时间。 |
latestFailoverStatus.status.internal
| |
object可选 | Internal 由系统控制器使用。请勿依赖此部分中的信息。 |
latestFailoverStatus.status.internal.attempt
| |
integer必需 | Attempt 用于重试逻辑,默认值为 0。 |
latestFailoverStatus.status.internal.lastPhaseChangeTime
| |
string可选 | LastPhaseChangeTime 是 L1 故障切换上次更改为新阶段的时间。这用于超时逻辑。 |
latestFailoverStatus.status.internal.newPrimary
| |
string必需 | NewPrimary 是您尝试故障切换到的实例。 |
latestFailoverStatus.status.internal.newPrimaryZone
| |
string可选 | NewPrimaryZone 是我们尝试故障切换到的可用区。 |
latestFailoverStatus.status.internal.oldPrimary
| |
string必需 | OldPrimary 是故障切换开始时的主实例。 |
latestFailoverStatus.status.internal.phase
| |
string可选 | Phase 用于跟踪故障切换的当前状态。 |
latestFailoverStatus.status.observedGeneration
| |
integer可选 | 控制器观察到的生成。 |
latestFailoverStatus.status.reconciled
| |
boolean可选 | 资源是否由控制器进行了协调。 |
latestFailoverStatus.status.startTime
| |
string可选 | StartTime 是故障切换操作开始的时间。 |
latestFailoverStatus.status.state
| |
string可选 | State 是故障切换操作的当前状态。值包括 InProgress、Success 和 Failed。InProgress 表示故障切换仍在进行中。Success 表示故障切换已完成。成功提升了新的主实例后,故障切换便完成。“Failed”表示操作器无法提升新的主实例。可能需要手动修复 DBCluster。 |
instanceList
| |
list (object)可选 | InstanceList 列出了实例及其基本信息。 |
instanceList[]
| |
object可选 | 包含列表中各个实例的相关信息。 |
instanceList[].name
| |
string可选 | 名称是实例的名称。 |
instanceList[].host
| |
string可选 | 主机是实例的主机名或 IP。 |
instanceList[].deletionTimestamp
| |
string可选 | DeletionTimestamp 是对象将被删除的时间。 |
instanceList[].role
| |
string可选 | 角色是指实例在数据库集群中的角色。 |
observedGeneration
| |
integer可选 | 内部:控制器观察到的生成。 |
phase
| |
string可选 | Phase 是 DBCluster 的当前状态的摘要 |
primary
| |
object可选 | Primary 包含主实例的状态。 |
primary.allocatedResources
| |
object可选 | AllocatedResources 表示内存、CPU 和磁盘的当前配置。 |
primary.allocatedResources.cpu
| |
integer or string必需 | 分配给数据库进程的 CPU 数量。 |
primary.allocatedResources.memory
| |
string or integer必需 | 分配给数据库进程的内存量。 |
primary.conditions
| |
object必需 | Conditions 表示实例当前状态的最新可用观测结果。 |
primary.conditions.lastTransitionTime
| |
string必需 | lastTransitionTime 是条件上次从一种状态转换到另一种状态的时间,这在底层条件更改时发生。如果底层条件更改的时间未知,则可以使用 API 字段更改的时间。 |
primary.conditions.message
| |
string必需 | message 是人类可读的消息,指示有关转换的详细信息。此字段可以为空字符串。 |
primary.conditions.observedGeneration
| |
integer可选 | observedGeneration 表示设置条件所基于的 .metadata.generation。例如,如果 .metadata.generation 为 12,但 .status.conditions[x].observedGeneration 为 9,则表示条件相对于实例的当前状态已过时。 |
primary.conditions.reason
| |
string必需 | reason 包含一个程序化标识符,指示条件上次转换的原因。特定条件类型的生成者可以为此字段定义预期值和含义,以及这些值是否被视为有保证的 API。值应为 CamelCase 字符串。 此字段不得为空。 |
primary.conditions.status
| |
string必需 | 条件的状态,为 True、False、Unknown 之一。 |
primary.conditions.type
| |
string必需 | 条件的类型,采用 CamelCase 或 foo.example.com/CamelCase 形式。许多 .condition.type 值(例如 Available)在各个资源中是一致的,但由于任意条件都可能会有用(请参阅 .node.status.conditions),因此能够解决冲突非常重要。它匹配的正则表达式为 (dns1123SubdomainFmt/)?(qualifiedNameFmt)。 |
primary.endpoint
| |
string可选 | Endpoint 是可用于建立数据库连接的地址。已弃用:请改用 Endpoints 字段。 |
primary.endpoints
| |
object可选 | Endpoints 包含您可以通过其访问此实例的所有端点。 |
primary.endpoints.name
| |
string必需 | Name 包含端点的名称。 |
primary.endpoints.value
| |
string可选 | Value 包含端点信息。 |
primary.endpoints.value
| |
string可选 | Value 包含端点信息。 |
primary.phase
| |
string可选 | Phase 是实例的当前状态的摘要。 |
reconciled
| |
boolean可选 | 资源是否由控制器进行了协调。 |