diff --git a/zh/configure-a-tidb-cluster.md b/zh/configure-a-tidb-cluster.md index 0f59f0357..ed6e5568b 100644 --- a/zh/configure-a-tidb-cluster.md +++ b/zh/configure-a-tidb-cluster.md @@ -215,6 +215,30 @@ TiDB Operator 支持为 PD、TiDB、TiKV、TiCDC 挂载多块 PV,可以用于 +
+ +为 PD 微服务挂载 PV,以 `tso` 微服务为例: + +> **注意:** +> +> PD 从 v8.0.0 版本开始支持[微服务模式](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(实验特性)。 + +```yaml + pd: + mode: "ms" + pdms: + - name: "tso" + config: | + [log.file] + filename = "/pdms/log/tso.log" + storageVolumes: + - name: log + storageSize: "10Gi" + mountPath: "/pdms/log" +``` + +
+ > **注意:** @@ -251,6 +275,30 @@ spec: > > 如果 Kubernetes 集群节点个数少于 3 个,将会导致有一个 PD Pod 处于 Pending 状态,而 TiKV 和 TiDB Pod 也都不会被创建。Kubernetes 集群节点个数少于 3 个时,为了使 TiDB 集群能启动起来,可以将默认部署的 PD Pod 个数减小到 1 个。 +#### 部署 PD 微服务 + +> **注意:** +> +> PD 从 v8.0.0 版本开始支持[微服务模式](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(实验特性)。 + +如果要在集群中开启 PD 微服务,需要在 `${cluster_name}/tidb-cluster.yaml` 文件中配置 `spec.pd.mode` 与 `spec.pdms`: + +```yaml +spec: + pd: + mode: "ms" + pdms: + - name: "tso" + baseImage: pingcap/pd + replicas: 2 + - name: "scheduling" + baseImage: pingcap/pd + replicas: 1 +``` + +- `spec.pd.mode` 用于开启或关闭 PD 微服务。设置为 `"ms"` 时表示开启 PD 微服务,设置为 `""` 或删除该字段时,表示关闭 PD 微服务。 +- `spec.pdms.config` 用于配置 PD 微服务,具体的配置参数与 `spec.pd.config` 相同。要获取 PD 微服务可配置的所有参数,请参考 [PD 配置文件描述](https://docs.pingcap.com/zh/tidb/stable/pd-configuration-file)。 + #### 部署 TiProxy 部署方法与 PD 一致。此外,还需要修改 `spec.tiproxy` 来手动指定 TiProxy 组件的数量。 @@ -381,6 +429,42 @@ spec: > - 为了兼容 `helm` 部署,如果你是通过 CR 文件部署 TiDB 集群,即使你不设置 Config 配置,也需要保证 `Config: {}` 的设置,从而避免 PD 组件无法正常启动。 > - PD 部分配置项在首次启动成功后会持久化到 etcd 中且后续将以 etcd 中的配置为准。因此 PD 在首次启动后,这些配置项将无法再通过配置参数来进行修改,而需要使用 SQL、pd-ctl 或 PD server API 来动态进行修改。目前,[在线修改 PD 配置](https://docs.pingcap.com/zh/tidb/stable/dynamic-config#在线修改-pd-配置)文档中所列的配置项中,除 `log.level` 外,其他配置项在 PD 首次启动之后均不再支持通过配置参数进行修改。 +##### 配置 PD 微服务 + +> **注意:** +> +> PD 从 v8.0.0 版本开始支持[微服务模式](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(实验特性)。 + +你可以通过 TidbCluster CR 的 `spec.pd.mode` 与 `spec.pdms` 来配置 PD 微服务参数。目前 PD 支持 `tso` 和 `scheduling` 这两个微服务,配置示例如下: + +```yaml +spec: + pd: + mode: "ms" + pdms: + - name: "tso" + baseImage: pingcap/pd + replicas: 2 + config: | + [log.file] + filename = "/pdms/log/tso.log" + - name: "scheduling" + baseImage: pingcap/pd + replicas: 1 + config: | + [log.file] + filename = "/pdms/log/scheduling.log" +``` + +其中,`spec.pdms` 用于配置 PD 微服务,具体的配置参数与 `spec.pd.config` 相同。要获取 PD 微服务可配置的所有参数,请参考 [PD 配置文件描述](https://docs.pingcap.com/zh/tidb/stable/pd-configuration-file)。 + +> **注意:** +> +> - 为了兼容 `helm` 部署,如果你的 TiDB 集群是通过 CR 文件部署的,即使你不设置 `config` 配置,也需要保证 `config: {}` 的设置,避免 PD 微服务组件无法正常启动。 +> - 如果在部署 TiDB 集群时就启用了 PD 微服务模式,PD 微服务的部分配置项会持久化到 etcd 中且后续将以 etcd 中的配置为准。 +> - 如果在现有 TiDB 集群中启用 PD 微服务模式,PD 微服务的部分配置会沿用 PD 的配置并持久化到 etcd 中,后续将以 etcd 中的配置为准。 +> - 因此,PD 微服务在首次启动后,这些配置项将无法再通过配置参数来进行修改,而需要使用 [SQL](https://docs.pingcap.com/zh/tidb/stable/dynamic-config#在线修改-pd-配置)、[pd-ctl](https://docs.pingcap.com/tidb/stable/pd-control#config-show--set-option-value--placement-rules) 或 PD server API 来动态进行修改。目前,[在线修改 PD 配置](https://docs.pingcap.com/zh/tidb/stable/dynamic-config#在线修改-pd-配置)文档中所列的配置项中,除 `log.level` 外,其他配置项在 PD 微服务首次启动之后均不再支持通过配置参数进行修改。 + #### 配置 TiProxy 配置参数 你可以通过 TidbCluster CR 的 `spec.tiproxy.config` 来配置 TiProxy 配置参数。 diff --git a/zh/deploy-tidb-cluster-across-multiple-kubernetes.md b/zh/deploy-tidb-cluster-across-multiple-kubernetes.md index 8bbb7c6aa..a79ca26d4 100644 --- a/zh/deploy-tidb-cluster-across-multiple-kubernetes.md +++ b/zh/deploy-tidb-cluster-across-multiple-kubernetes.md @@ -509,12 +509,13 @@ EOF 2. 以步骤 1 为例,按顺序进行如下升级操作: - 1. 如果集群中部署了 TiProxy,为所有部署了 TiProxy 的 Kubernetes 集群升级 TiProxy 版本。 - 2. 如果集群中部署了 TiFlash,为所有部署了 TiFlash 的 Kubernetes 集群升级 TiFlash 版本。 - 3. 升级所有 Kubernetes 集群的 TiKV 版本。 - 4. 如果集群中部署了 Pump,为所有部署了 Pump 的 Kubernetes 集群升级 Pump 版本。 - 5. 升级所有 Kubernetes 集群的 TiDB 版本。 - 6. 如果集群中部署了 TiCDC,为所有部署了 TiCDC 的 Kubernetes 集群升级 TiCDC 版本。 + 1. 如果集群中部署了 [PD 微服务](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(从 TiDB v8.0.0 版本开始支持),为所有部署了 PD 微服务的 Kubernetes 集群升级 PD 微服务版本。 + 2. 如果集群中部署了 TiProxy,为所有部署了 TiProxy 的 Kubernetes 集群升级 TiProxy 版本。 + 3. 如果集群中部署了 TiFlash,为所有部署了 TiFlash 的 Kubernetes 集群升级 TiFlash 版本。 + 4. 升级所有 Kubernetes 集群的 TiKV 版本。 + 5. 如果集群中部署了 Pump,为所有部署了 Pump 的 Kubernetes 集群升级 Pump 版本。 + 6. 升级所有 Kubernetes 集群的 TiDB 版本。 + 7. 如果集群中部署了 TiCDC,为所有部署了 TiCDC 的 Kubernetes 集群升级 TiCDC 版本。 ## 退出和回收已加入的 TidbCluster @@ -524,6 +525,10 @@ EOF 以上面文档创建的第二个 TidbCluster 为例,先将 PD、TiKV、TiDB 的副本数设置为 0,如果开启了 TiFlash、TiCDC、TiProxy、Pump 等其他组件,也请一并将其副本数设为 `0`: +> **注意:** +> +> PD 从 v8.0.0 版本开始支持微服务模式。如果配置了 PD 微服务,也需要将 PD 微服务 `pdms` 配置中对应组件的 `replicas` 值设置为 `0`。 + {{< copyable "shell-regular" >}} ```bash diff --git a/zh/enable-tls-between-components.md b/zh/enable-tls-between-components.md index c1c8d7518..f0275da00 100644 --- a/zh/enable-tls-between-components.md +++ b/zh/enable-tls-between-components.md @@ -157,6 +157,33 @@ aliases: ['/docs-cn/tidb-in-kubernetes/dev/enable-tls-between-components/'] ... ``` + > **注意:** + > + > PD 从 v8.0.0 版本开始支持[微服务模式](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(实验特性)。如需部署 PD 微服务,并不需要为 PD 微服务的各个组件生成证书,只需要在 `pd-server.json` 文件的 `hosts` 字段中添加微服务相关的 hosts 配置即可。以 `scheduling` 微服务为例,你需要进行以下配置: + > + > ``` json + > ... + > "CN": "TiDB", + > "hosts": [ + > "127.0.0.1", + > "::1", + > "${cluster_name}-pd", + > ... + > "*.${cluster_name}-pd-peer.${namespace}.svc", + > // 以下是为 `scheduling` 微服务添加的 hosts 配置 + > "${cluster_name}-scheduling", + > "${cluster_name}-scheduling.${cluster_name}", + > "${cluster_name}-scheduling.${cluster_name}.svc", + > "${cluster_name}-scheduling-peer", + > "${cluster_name}-scheduling-peer.${cluster_name}", + > "${cluster_name}-scheduling-peer.${cluster_name}.svc", + > "*.${cluster_name}-scheduling-peer", + > "*.${cluster_name}-scheduling-peer.${cluster_name}", + > "*.${cluster_name}-scheduling-peer.${cluster_name}.svc", + > ], + > ... + > ``` + 其中 `${cluster_name}` 为集群的名字,`${namespace}` 为 TiDB 集群部署的命名空间,用户也可以添加自定义 `hosts`。 最后生成 PD Server 端证书: @@ -1428,6 +1455,35 @@ aliases: ['/docs-cn/tidb-in-kubernetes/dev/enable-tls-between-components/'] 然后使用 `kubectl apply -f tidb-cluster.yaml` 来创建 TiDB 集群。 + > **注意:** + > + > PD 从 v8.0.0 版本开始支持[微服务模式](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(实验特性),如需部署 PD 微服务,需要为各个微服务配置 `cert-allowed-cn`。以 Scheduling 服务为例,你需要进行以下配置: + > + > - 更新 `pd.mode` 为 `ms` + > - 为 `scheduling` 微服务配置 `security` 字段 + > + > ```yaml + > pd: + > baseImage: pingcap/pd + > maxFailoverCount: 0 + > replicas: 1 + > requests: + > storage: "10Gi" + > config: + > security: + > cert-allowed-cn: + > - TiDB + > mode: "ms" + > pdms: + > - name: "scheduling" + > baseImage: pingcap/pd + > replicas: 1 + > config: + > security: + > cert-allowed-cn: + > - TiDB + > ``` + 2. 创建 Drainer 组件并开启 TLS 以及 CN 验证。 - 第一种方式:创建 Drainer 的时候设置 `drainerName`: diff --git a/zh/get-started.md b/zh/get-started.md index f4c1362ac..8f710a02d 100644 --- a/zh/get-started.md +++ b/zh/get-started.md @@ -348,6 +348,32 @@ tidbcluster.pingcap.com/basic created 如果要将 TiDB 集群部署到 ARM64 机器上,可以参考[在 ARM64 机器上部署 TiDB 集群](deploy-cluster-on-arm64.md)。 +> **注意:** +> +> PD 从 v8.0.0 版本开始支持[微服务模式](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(实验特性)。如需部署 PD 微服务,可以按照如下方式进行部署: +> +> ``` shell +> kubectl create namespace tidb-cluster && \ +> kubectl -n tidb-cluster apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/master/examples/basic/pd-micro-service-cluster.yaml +> ``` +> +> 查看 Pod 状态: +> +> ``` shell +> watch kubectl get po -n tidb-cluster +> ``` +> +> ``` +> NAME READY STATUS RESTARTS AGE +> basic-discovery-6bb656bfd-xl5pb 1/1 Running 0 9m +> basic-pd-0 1/1 Running 0 9m +> basic-scheduling-0 1/1 Running 0 9m +> basic-tidb-0 2/2 Running 0 7m +> basic-tikv-0 1/1 Running 0 8m +> basic-tso-0 1/1 Running 0 9m +> basic-tso-1 1/1 Running 0 9m +> ``` + ### 部署独立的 TiDB Dashboard {{< copyable "shell-regular" >}} diff --git a/zh/modify-tidb-configuration.md b/zh/modify-tidb-configuration.md index 3210a8684..ecd9737cf 100644 --- a/zh/modify-tidb-configuration.md +++ b/zh/modify-tidb-configuration.md @@ -43,6 +43,18 @@ PD 中[支持在线修改的配置项](https://docs.pingcap.com/zh/tidb/stable/d 对于部署在 Kubernetes 中的 TiDB 集群,如需修改 PD 配置参数,需要使用 [SQL](https://docs.pingcap.com/zh/tidb/stable/dynamic-config/#在线修改-pd-配置)、[pd-ctl](https://docs.pingcap.com/tidb/stable/pd-control#config-show--set-option-value--placement-rules) 或 PD server API 来动态进行修改。 +### 修改 PD 微服务配置 + +> **注意:** +> +> PD 从 v8.0.0 版本开始支持[微服务模式](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(实验特性)。 + +在 PD 微服务各个组件首次启动成功后,PD 的部分配置项会持久化到 etcd 中,且后续将以 etcd 中的配置为准。因此,在 PD 微服务各个组件首次启动后,这些配置项将无法再通过 TidbCluster CR 来进行修改。 + +PD 微服务各个组件中[支持在线修改的配置项](https://docs.pingcap.com/zh/tidb/stable/dynamic-config#在线修改-pd-配置)里,除 `log.level` 外,其他配置项在 PD 微服务各个组件首次启动之后均不再支持通过 TidbCluster CR 进行修改。 + +对于部署在 Kubernetes 中的 TiDB 集群,如需修改 PD 微服务配置参数,你可以使用 [SQL](https://docs.pingcap.com/zh/tidb/stable/dynamic-config#在线修改-pd-配置)、[pd-ctl](https://docs.pingcap.com/tidb/stable/pd-control#config-show--set-option-value--placement-rules) 或 PD server API 来进行动态修改。 + ## 修改 TiProxy 组件配置 修改 TiProxy 组件的配置永远不会重启 Pod。如果你想要重启 Pod,需要手动杀死 Pod,或更改 Pod 镜像等配置,来手动触发重启。 diff --git a/zh/scale-a-tidb-cluster.md b/zh/scale-a-tidb-cluster.md index 20465eff4..ff55d47fd 100644 --- a/zh/scale-a-tidb-cluster.md +++ b/zh/scale-a-tidb-cluster.md @@ -158,7 +158,7 @@ watch kubectl -n ${namespace} get pod -o wide 本小节介绍如何对 PD、TiKV、TiDB、TiProxy、TiFlash、TiCDC 进行垂直扩缩容。 -- 如果要对 PD、TiKV、TiDB、TiProxy 进行垂直扩缩容,通过 kubectl 修改集群所对应的 `TidbCluster` 对象的 `spec.pd.resources`、`spec.tikv.resources`、`spec.tidb.resources` 至期望值。 +- 如果要对 PD、TiKV、TiDB、TiProxy 进行垂直扩缩容,通过 kubectl 修改集群所对应的 `TidbCluster` 对象的 `spec.pd.resources`、`spec.tikv.resources`、`spec.tidb.resources`、`spec.tiproxy.replicas` 至期望值。 - 如果要对 TiFlash 进行垂直扩缩容,修改 `spec.tiflash.resources` 至期望值。 @@ -179,6 +179,46 @@ watch kubectl -n ${namespace} get pod -o wide > - 如果在垂直扩容时修改了资源的 `requests` 字段,并且 PD、TiKV、TiFlash 使用了 `Local PV`,那升级后 Pod 还会调度回原节点,如果原节点资源不够,则会导致 Pod 一直处于 `Pending` 状态而影响服务。 > - TiDB 是一个可水平扩展的数据库,推荐通过增加节点个数发挥 TiDB 集群可水平扩展的优势,而不是类似传统数据库升级节点硬件配置来实现垂直扩容。 +### 扩缩容 PD 微服务组件 + +> **注意:** +> +> PD 从 v8.0.0 版本开始支持[微服务模式](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(实验特性)。 + +PD 微服务通常用于解决 PD 出现性能瓶颈的问题,提高 PD 服务质量。可通过 [PD 微服务常见问题](https://docs.pingcap.com/zh/tidb/dev/pd-microservices#常见问题)判断是否需要进行 PD 微服务扩缩容操作。 + +- 目前,PD 微服务模式可将 PD 的时间戳分配和集群调度功能拆分为 `tso` 微服务和 `scheduling` 微服务单独部署。 + - `tso` 微服务为主备架构,如遇到瓶颈建议采用垂直扩缩容。 + - `scheduling` 微服务为调度组件,如遇到瓶颈建议采用水平扩缩容。 + +- 如果要对 PD 微服务各个组件进行垂直扩缩容,可以使用 `kubectl` 命令修改集群所对应的 `TidbCluster` 对象的 `spec.pdms.resources` 至期望值。 + +- 如果要对 PD 微服务各个组件进行水平扩缩容,可以使用 `kubectl` 命令修改集群所对应的 `TidbCluster` 对象的 `spec.pdms.replicas` 至期望值。 + +以下步骤以 `scheduling` 微服务为例说明如何进行水平扩缩容: + +1. 按需修改 `TidbCluster` 对象的 `replicas` 值。例如,执行以下命令可将 `scheduling` 的 `replicas` 值设置为 `3`: + + ```shell + kubectl patch -n ${namespace} tc ${cluster_name} --type merge --patch '{"spec":{"pdms":{"name":"scheduling", "replicas":3}}}' + ``` + +2. 查看 Kubernetes 集群中对应的 TiDB 集群配置是否已对应更新: + + ```shell + kubectl get tidbcluster ${cluster_name} -n ${namespace} -oyaml + ``` + + 上述命令输出的 `TidbCluster` 中,`spec.pdms` 的 `scheduling.replicas` 值预期应与你之前配置的值一致。 + +3. 观察 `TidbCluster` Pod 是否新增或者减少: + + ```shell + watch kubectl -n ${namespace} get pod -o wide + ``` + + PD 微服务组件通常需要 10 到 30 秒左右的时间完成扩容或者缩容。 + ## 扩缩容故障诊断 -无论是水平扩缩容、或者是垂直扩缩容,都可能遇到资源不够时造成 Pod 出现 Pending 的情况。可以参考 [Pod 处于 Pending 状态](deploy-failures.md#pod-处于-pending-状态)来进行处理。 +无论是水平扩缩容、或者是垂直扩缩容,都可能遇到资源不够时造成 Pod 出现 Pending 的情况。可以参考 [Pod 处于 Pending 状态](deploy-failures.md#pod-处于-pending-状态)来进行处理。 \ No newline at end of file diff --git a/zh/suspend-tidb-cluster.md b/zh/suspend-tidb-cluster.md index 16b29b9db..e6bd9b1fb 100644 --- a/zh/suspend-tidb-cluster.md +++ b/zh/suspend-tidb-cluster.md @@ -62,6 +62,10 @@ summary: 了解如何通过配置挂起 Kubernetes 上的 TiDB 集群。 * TiProxy * PD +> **注意:** +> +> 如果集群中部署了 [PD 微服务](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(从 TiDB v8.0.0 版本开始支持),PD 微服务组件的 Pod 会在删除 PD 之后被删除。 + ## 恢复 TiDB 集群 在 TiDB 集群或组件被挂起后,如果你需要恢复 TiDB 集群,执行以下步骤: diff --git a/zh/upgrade-a-tidb-cluster.md b/zh/upgrade-a-tidb-cluster.md index 4066f6b1c..e291272e3 100644 --- a/zh/upgrade-a-tidb-cluster.md +++ b/zh/upgrade-a-tidb-cluster.md @@ -14,6 +14,10 @@ Kubernetes 提供了[滚动更新功能](https://kubernetes.io/docs/tutorials/ku 使用滚动更新时,TiDB Operator 会按 PD、TiProxy、TiFlash、TiKV、TiDB 的顺序,串行地删除旧版本的 Pod,并创建新版本的 Pod。当新版本的 Pod 正常运行后,再处理下一个 Pod。 +> **注意:** +> +> 当集群中部署了 [PD 微服务](https://docs.pingcap.com/zh/tidb/dev/pd-microservices)(从 TiDB v8.0.0 版本开始支持)时,如果采用滚动更新来升级 TiDB 集群,TiDB Operator 会按照 PD 各个微服务组件、PD、TiKV、TiDB 的顺序,串行地删除旧版本的 Pod 并创建新版本的 Pod。当新版本的 Pod 正常运行后,再处理下一个 Pod。 + 滚动更新中,TiDB Operator 会自动处理 PD 和 TiKV 的 Leader 迁移。因此,在多节点的部署拓扑下(最小环境:PD \* 3、TiKV \* 3、TiDB \* 2),滚动更新 TiKV、PD 不会影响业务正常运行。对于有连接重试功能的客户端,滚动更新 TiDB 同样不会影响业务。 > **警告:**