polardbx.aliyun.com/v1 PolarDBXCluster
使用 PolarDBXCluster 可以自由定义PolarDB-X 企业版集群的拓扑、规格和配置,可以支持超大规模和不同容灾等级的部署。
以下是可配置项及相关的字段的含义:
apiVersion: polardbx.aliyun.com/v1
kind: PolarDBXCluster
metadata:
name: full
spec:
# **Optional**
#
# 是否使用 DN-0 作为共享 GMS 以节省资源,默认值 false
#
# 不推荐在生产集群使用
shareGMS: false
# **Optional**
#
# PolarDB-X 集群所支持的 MySQL 协议版本,默认值 8.0
# 可选值:5.7, 8.0
protocolVersion: 8.0
# **Optional**
#
# PolarDB-X 集群在 Kubernetes 内对外暴露的服务名,默认为 .metadata.name
serviceName: full
# **Optional**
#
# PolarDB-X 集群在 Kubernetes 内对外暴露的服务类型,默认为 ClusterIP
# 可选值参考 Service 的类型
#
# 注:云上的 Kubernetes 集群可使用 LoadBalancer 来绑定 LB
serviceType: LoadBalancer
# **Optional**
#
# PolarDB-X 集群是否为只读实例,默认为 false
readonly: false
# **Optional**
#
# PolarDB-X 只读实例所属主实例的名称,默认为空
# 当本实例不为只读实例时,此字段无效
primaryCluster: pxc-master
# **Optional**
#
# PolarDB-X 集群是否为独占规格,默认为 false
# 本字段请在创建时确定,创建后不可修改
exclusive: false
# **Optional**
#
# PolarDB-X 主实例附属的只读实例,仅在本实例不为只读时生效
# 当本实例创建时,根据以下信息创建出与本实例规格和参数相同的只读实例
# 本字段不可修改,且仅在创建时有效
initReadonly:
- # 只读实例 CN 数
cnReplicas: 1
# **Optional**
#
# 只读实例后缀名,不填则会生成随机后缀
name: readonly
# **Optional**
#
# 只读实例参数
extraParams:
AttendHtap: "true"
# **Optional**
#
# PolarDB-X 集群安全配置
security:
# **Optional**
#
# TLS 相关配置,暂不生效
tls:
secretName: tls-secret
# **Optional**
#
# 指定用于编码内部密码的 key,引用指定 Secret 的 key
encodeKey:
name: ek-secret
key: key
# *Optional**
#
# PolarDB-X 初始账号配置
privileges:
- username: admin
password: "123456"
type: SUPER
# PolarDB-X 集群配置
config:
# CN 相关配置
cn:
# 静态配置,修改会导致 CN 集群重建
static:
# 启用协程, OpenJDK 暂不支持,需使用 dragonwell
EnableCoroutine: false
# 启用备库一致读
EnableReplicaRead: false
# 启用 JVM 的远程调试
EnableJvmRemoteDebug: false
# 自定义 CN 静态配置,key-value 结构
ServerProperties:
processors: 8
# 是否在该(只读)实例 CN 上开启 MPP 能力,主实例 CN 默认开启
# 当该参数开启时,该实例会参与多机并行(MPP),同时分担主实例的读流量,反之则不参与
AttendHtap: false
# 动态配置,修改并 apply 会由 operator 自动推送,key-value 结构
dynamic:
CONN_POOL_IDLE_TIMEOUT: 30
# 冷数据存储,目前支持 OSS 和 NFS
coldDataFileStorage:
- engine: oss
- engine: external_disk
# DN 相关配置
dn:
# DN my.cnf 配置,覆盖模板部分
mycnfOverwrite: |-
loose_binlog_checksum: crc32
# DN 日志清理间隔
logPurgeInterval: 5m
# 日志与数据分离存储
logDataSeparation: false
columnar:
# 列存存储,目前支持 OSS 和 NFS
columnarDataFileStorage:
- engine: oss
- engine: external_disk
# PolarDB-X 集群拓扑
topology:
# 集群使用的镜像版本 (tag),默认为空(由 operator 指定)
version: v1.0
# 集群部署规则
rules:
# 预定义节点选择器
selectors:
- name: zone-a
nodeSelector:
nodeSelectorTerms:
- matchExpressions:
- key: topology.kubernetes.io/zone
operator: In
values:
- cn-hangzhou-a
- name: zone-b
nodeSelector:
nodeSelectorTerms:
- matchExpressions:
- key: topology.kubernetes.io/zone
operator: In
values:
- cn-hangzhou-b
- name: zone-c
nodeSelector:
nodeSelectorTerms:
- matchExpressions:
- key: topology.kubernetes.io/zone
operator: In
values:
- cn-hangzhou-c
components:
# **Optional**
#
# GMS 部署规则,默认和 DN 一致
gms:
# 堆叠部署结构,operator 尝试在节点选择器指定的节点中,堆叠部署
# 每个存储节点的子节点以达到较高资源利用率的方式,仅供测试使用
rolling:
replicas: 3
selector:
reference: zone-a
# 节点组部署结构,可以指定每个 DN 的子节点的节点组和节点选择器,
# 从而达成跨区、跨城等高可用部署结构
nodeSets:
- name: cand-zone-a
role: Candidate
replicas: 1
selector:
reference: zone-a
- name: cand-zone-b
role: Candidate
replicas: 1
selector:
reference: zone-b
- name: log-zone-c
role: Voter
replicas: 1
selector:
reference: zone-c
# **Optional**
#
# DN 部署规则,默认为 3 节点,所有节点可部署
dn:
nodeSets:
- name: cands
role: Candidate
replicas: 2
- name: log
role: Voter
replicas: 1
# **Optional**
#
# CN 部署规则,同样按组划分 CN 节点
cn:
- name: zone-a
# 合法值:数字、百分比、(0, 1] 分数,不填写为剩余 replica(只能有一个不填写)
# 总和不能超过 .topology.nodes.cn.replicas
replicas: 1
selector:
reference: zone-a
- name: zone-b
replicas: 1 / 3
selector:
reference: zone-b
- name: zone-c
replicas: 34%
selector:
reference: zone-c
# **Optional**
#
# CDC 部署规则,同 CN
cdc:
- name: half
replicas: 50%
selector:
reference: zone-a
- name: half
# 带 + 表示向上取整
replicas: 50%+
selector:
reference: zone-b
nodes:
# **Optional**
#
# GMS 规格配置,默认和 DN 相同
gms:
template:
# 存储节点引擎,默认 galaxy
engine: galaxy
# 存储节点镜像,默认由 operator 指定
image: polardbx-engine-2.0:latest
# 存储节点 Service 类型,默认为 ClusterIP
serviceType: ClusterIP
# 存储节点 Pod 是否适用宿主机网络,默认为 true
hostNetwork: true
# 存储节点磁盘空间限制,不填写无限制(软限制)
diskQuota: 10Gi
# 存储节点子节点使用的资源,默认为 4c8g
resources:
limits:
cpu: 4
memory: 8Gi
# **Optional**
#
# DN 规格配置
dn:
# DN 数量配置,默认为 2
replicas: 2
template:
resources:
limits:
cpu: 4
memory: 8Gi
# IO 相关限制,支持 BPS 和 IOPS 限制
limits.io:
iops: 1000
bps: 10Mi
# CN 规格配置,参数解释同 DN
cn:
replicas: 3
template:
image: polardbx-sql:latest
hostNetwork: false
resources:
limits:
cpu: 4
memory: 8Gi
# CDC 规格配置,参数解释同 CN,可不配置代表不启动 CDC 能力
cdc:
replicas: 2
template:
image: polardbx-cdc:latest
hostNetwork: false
resources:
limits:
cpu: 4
memory: 8Gi
groups:
- name: "group1"
replicas: 1
template:
image: polardbx-cdc:latest
hostNetwork: false
resources:
limits:
cpu: 4
memory: 8Gi
config:
envs:
cluster_type: "BINLOG_X"
binlogx_stream_group_name: "group1"