DBCluster 自定义资源定义

规范架构

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
可选
资源是否由控制器进行了协调。