提问人:Phoenix Chao 提问时间:11/7/2023 更新时间:11/8/2023 访问量:28
tide-operator 如何启动 pd 集群?
How does the tide-operator start a pd cluster?
问:
我最近一直在学习 Kubernetes Operator。在部署 etcd 集群时,etcd-operator 使用以下创建方法:
- 引导阶段:启动种子成员。在相应的启动参数中,该选项将设置为 。
--initial-cluster-state
new
- 扩容阶段:逐步创建新的 etcd 节点,并将它们逐一加入到种子成员所在的集群中,直到集群的副本满足大小要求。在此过程中,该选项将设置为 ,并配置相应的选项。
--initial-cluster-state
existing
--initial-cluster
我对 tidb-operator 也很感兴趣。于是,我查看了 tidb-operator 的部署代码。我很好奇 tidb-operator 是如何部署 pd 集群的。
func (pmm *pdMemberManager) getNewPDSetForTidbCluster(tc *v1alpha1.TidbCluster) (*apps.StatefulSet, error) {
…
vols := []corev1.Volume{
annVolume,
{Name: "config",
VolumeSource: corev1.VolumeSource{
ConfigMap: &corev1.ConfigMapVolumeSource{
LocalObjectReference: corev1.LocalObjectReference{
Name: pdConfigMap,
},
Items: []corev1.KeyToPath{{Key: "config-file", Path: "pd.toml"}},
},
},
},
{Name: "startup-script",
VolumeSource: corev1.VolumeSource{
ConfigMap: &corev1.ConfigMapVolumeSource{
LocalObjectReference: corev1.LocalObjectReference{
Name: pdConfigMap,
},
Items: []corev1.KeyToPath{{Key: "startup-script", Path: "pd_start_script.sh"}},
},
},
},
}
…
}
我注意到在部署 pd 集群时,tidb-operator 会将配置项保存在 “/etc/pd/config” 中,包括选项。仅供参考:https://docs-archive.pingcap.com/zh/tidb/v7.0/pd-configuration-file#initial-cluster-state—initial-cluster-state
因此,我有以下问题:
- tidb-operator 是否也使用与 etcd-operator 相同的部署方式来部署集群?
- 如果是这样,为什么会这样设计?我看到这种方法有以下缺点: 一个。此部署方法实质上是通过成员身份更改从单个节点扩展到指定数量的节点。然而,在部署的早期阶段,当节点数量少于三个时,共识本身并不可靠。 b.对于启动多个节点,此部署方法将花费更多时间,因为我需要等待成员身份更改完成。
- 如果 tidb-operator 也使用这种方法来部署,比如 PD 集群,那么设计权衡是什么?
答:
以下是我所知道的:
算子使用 startScript 启动 PD 进程,见代码 https://github.com/pingcap/tidb-operator/blob/v1.5.1/pkg/manager/member/pd_member_manager.go#L900
在 pdStartScriptTplText 中,每个 PD 都会连接到 Discovery 来竞争领导者(仅在 bootstrap 阶段),参见 Discovery 代码 https://github.com/pingcap/tidb-operator/blob/v1.5.1/pkg/discovery/discovery.go
2.1 PD win leader 活动将使用 “--initial-cluster” 初始化 PD 集群
2.2 PD 失去领导者活动将使用 “--join” 加入 PD 集群
PD内部有ETCD保持领导地位,中文社区有中文博客图片见 https://tidb.net/blog/66b475c0
3.1 在 PD 集群本身中保持 bootstrap 领导地位后
评论