背景:一个主机上有多快磁盘,为避免 k8s 扩容/缩容到同一个物理机上造成多数副本失效(默认3副本),k8s中的反亲和性不太适合同一套 k8s 中多个namespace的场景,所以想到了可以使用给 tikv 打标签的方式,但是在使用 tiup 部署时必须指定 host(对k8s来说就是 pod 名),所有有两个问题:
- pod 名称可否自定义
- 如何给pod指定标签
背景:一个主机上有多快磁盘,为避免 k8s 扩容/缩容到同一个物理机上造成多数副本失效(默认3副本),k8s中的反亲和性不太适合同一套 k8s 中多个namespace的场景,所以想到了可以使用给 tikv 打标签的方式,但是在使用 tiup 部署时必须指定 host(对k8s来说就是 pod 名),所有有两个问题:
确认一下,你是用tiup在k8s上部署的么?有木有尝试 TiDB Operator?参考:https://docs.pingcap.com/zh/tidb-in-kubernetes/stable,1.1开始支持为 tidb-operator chart 配置 nodeSelector、亲和力和容忍度 #855
使用的是 TiDB Operator 的方式部署的集群,nodeSelector 参数可以解决同 namespace 扩缩容到不同主机,但能否解决不同 namespace 是否能复用同一套 k8s 集群,打个比方:
一共有12个主机,编号分别为 h1-12,一套 k8s集群,两套 namespace 分别对应 A 业务 和 B 业务,如果配置了亲和性
业务 A 对应 h1-6 再扩容就会向 h7 上扩容
由于配置了亲和性 业务 B 是否会继续使用 h1-7 的主机资源,这个不确定哈
我的理解,为亲和性所设置的标签跟命名空间是没关系的,你的想法可以尝试测试一下。
嗯嗯,还有一个点我一直想不明白
方式一、给 tikv 打标签的方式是根据 pd与kv 节点存储元信息来调度 region
方式二、k8s 的方式是通过亲和性的方式来线性扩展
方式一和方式二最主要的区别就是 同一个主机上是否能同时放两个 store
方式一:可以
方式二:不可以,只能线性扩展
1.pod名称建好后,不能修改
2.pod标签kubectl lables -n tidb-admin pod xxx xx=xx