RDBMSとNoSQLのメリットを併せ持つクラウドネイティブなNewSQLデータベース 「TiDB」をKubernetesで動かしてみよう!
2022 Online/Spring 53 Advanced StatefulSet を使う もともと Kubernetes では StatefulSet という仕組みがあり、tidb- operator も基本的にはこの StatefulSet を使って tidb や tikv のコンポー ネントを作成します StatefulSet は Pod を指定された数だけシーケンシャルに作成します の名前の末尾の数字が増えていき、Pod が減る時 は末尾の数字が大きいものから減っていきます Open Source Conference 2022 Online/Spring 54 Advanced StatefulSet を使う StatefulSet だと、例えばこんな時困ることになります mypod-0 mypod-1 mypod-2 mypod-3 mypod-0 mypod-1 mypod-2 mypod-3 Online/Spring 55 Advanced StatefulSet を使う つまり、通常の StatefulSet だとこういう状態にすることはできません mypod-0 mypod-4 mypod-2 mypod-3 特定の番号の Pod (今回の例だと 1 ) だけ欠番にして通常通り運用したい・・・ そんな願いを叶えてくれるのが Advanced StatefulSet になります ... Open0 码力 | 71 页 | 6.65 MB | 1 年前3Greenplum for Kubernetes PGConf India 2019
Master StatefulSet master-0 master-1 Greenplum Cluster Namespace: default Kubernetes Cluster Primary StatefulSet segment-a-0 segment-a-1 Mirror StatefulSet segment-b-0 segment-b-1 Master StatefulSet master-0 master-1 Greenplum Cluster Namespace: default Kubernetes Cluster Primary StatefulSet segment-a-0 segment-a-1 Mirror StatefulSet segment-b-0 segment-b-1 Master StatefulSet master-0 master-1 Greenplum Cluster Namespace: default Kubernetes Cluster Primary StatefulSet segment-a-0 segment-a-1 Mirror StatefulSet segment-b-0 segment-b-10 码力 | 26 页 | 1.75 MB | 1 年前302 TiDB Operator 架构与实现 付业成
pod, deployment, statefulset, etc. - But it does not know how to operate a TiDB cluster... Kubernetes Pattern - Declarative Model PingCAP.com - Kubernetes has pod, deployment, statefulset, etc. - But it It’s ok to upgrade a High Availability system like TiDB directly. But, to avoid spikes we use StatefulSet partition to perform a phased roll out. - Upgrade PD - Upgrade TiKV - Upgrade TiDB PingCAP successfully, scale in the StatefulSet Scaling In - PD PingCAP.com - Delete the TiKV store via PD API first - Wait for the store to be tombstoned - Scale the statefulset Scaling In - TiKV PingCAP0 码力 | 47 页 | 1.73 MB | 5 月前3Greenplum on Kubernetes 容器化MPP数据库
资源分配:CPU,内存,磁盘 ○ 资源调度:Pod → Node ● Pod管理 ○ 无状态计算资源组:Deployment ○ 有状态计算资源组:StatefulSet ● Pod持久存储 ○ 通过PVC申请PV存储资源 ● StatefulSet ○ Pod网络地址不变 ○ Pod与PV映射关系不变 Kubernetes 网络资源 Service ● Service ○ 定义统一网络地址 Segment Pod Segment Instance Segment Pod Segment Instance Master StatefulSet (2) Primary Segment StatefulSet (N) Mirror Segment StatefulSet (N) Cluster PV (N) Database Service (Active Master) Greenplum Master节点示例 Segment节点示例 Greenplum on Kubernetes Greenplum on Kubernetes ● 存储计算分离 ○ PV持久化存储资源 ○ StatefulSet/Pod弹性扩展计算资源 ● 数据库服务层 ○ Service统一Master & Standby Master地址 ● 服务发现机制 ○ 所有节点地址名不变 ● 跨云能力 ○ 容器应用对基础设施透明0 码力 | 33 页 | 1.93 MB | 1 年前3Kubernetes Operator 实践 - MySQL容器化
有状态服务 服务调度 状态保存 带来的新挑战 服务调度 状态存储 集群管理 成员管理 扩缩容 故障迁移 高可用 CoreOS 提出了 operator Deployment StatefulSet PV/PVC StorageClass ?? 站在 Kubernetes 的肩膀上 An Operator is an application-specific controller mysql-7c46782dr mysql-577ck9s8f StatefulSet mysql-0 mysql-1 mysql-2 • Pod 名随机 • Pod 启动无序 • Pod 扩容无限制 如何调度 MySQL MySQL 更像“宠物”,使用 StatefulSet 调度 MySQL 容器 VS Deployment 散养 StatefulSet 精养 MySQL 容器化系统架构 REST bootstrap_group MGR 在 operator 的实现 部署 • Operator 在 pod 启动前注入 MGR 参数 故障迁移 • 依赖 statefulset 自愈 扩缩容 • 直接使用 statefulset 扩缩容 MySQL 容器化系统架构 REST CLI Kubernetes Master API Server Scheduler Controller0 码力 | 42 页 | 4.77 MB | 1 年前3ClickHouse on Kubernetes
8123:32351/TCP,9000:32694/TCP 38s NAME DESIRED CURRENT AGE statefulset.apps/chi-demo-01-demo-0-0 1 1 37s Next let’s add a shard apiVersion: "clickhouse NAME DESIRED CURRENT AGE statefulset.apps/chi-demo-01-demo-0-0 1 1 2m statefulset.apps/chi-demo-01-demo-1-0 1 1 33s How to access0 码力 | 34 页 | 5.06 MB | 1 年前3ClickHouse on Kubernetes
8123:31609/TCP,9000:32086/TCP 52s NAME DESIRED CURRENT AGE statefulset.apps/chi-a82946-2946-0-0 1 1 52s Next let’s add a shard apiVersion: "clickhouse0 码力 | 29 页 | 3.87 MB | 1 年前3
共 7 条
- 1