Kubernetes 使用 KaiwuDB 简介

本文详细介绍了在Kubernetes上运行云原生数据库KaiwuDB的原因、方式以及优势。K8s通过StatefulSet确保容器的稳定身份,支持数据持久性和自我修复,简化了数据库集群的部署和运维。KaiwuDB利用K8s的自动化功能实现快速故障恢复和滚动升级,同时讨论了在性能和弹性之间的权衡。

为什么选择 Kubernetes

容器是打包和运行应用程序的好方式。在生产环境中,我们需要管理运行应用程序的容器,并确保不会停机。如果一个容器发生故障,则需要启动另一个容器。如果系统处理此行为,会不会更便捷?这就是 Kubernetes(后文简称K8s) 的价值所在,它为你提供了一个可弹性运行分布式系统的框架。K8s 用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 同时,k8s 为你提供了自动部署和回滚、服务发现和负载均衡、存储编排、自我修复、密钥与配置管理等很多功能。即使有一些关于 k8s 复杂性的抱怨,我们仍然坚信它带来的益处远大于复杂性成本。  

Kubernetes 如何维护应用状态

Kubernetes 在其早期阶段主要针对无状态应用程序(不管理自己的持久性数据的应用程序),这一特性直到 k8s 引入了 persistent volumes(持久卷)和 StatefulSet 后得到了提升。通常,当 Kubernetes 容器死亡时,它将被具有新标识(包括新IP地址和主机名)的新容器替换。但是,StatefulSet功能可确保每个 Pod 具有自己的稳定身份(可通过DNS解析),无论它被重启了多少次。这对 KaiwuDB 很有用,因为这意味着每次更换或重启 Pod 时,我们不必将其视为集群中的新节点,也避免了大量数据复制。这对于支持 KaiwuDB 的共识协议和分布式事务非常重要。作为云原生数据库,KaiwuDB 可以容忍丢失单个数据节点的数据丢失,它能检测到集群中缺失的副本,并自动添加新副本。出于降低延迟的考虑,我们推荐您使用本地磁盘作为存储,虽然远程存储允许副本在不丢失数据的情况下移动。  

为什么在 Kubernetes 上使用KaiwuDB 

多数情况下,在 K8s 上部署、运维 KaiwuDB 比在物理机或虚拟机上更方便。这主要因为 KaiwuDB 是单个可执行文件,可通过每个节点提供到数据库的通用网关。每个节点都是全对等的,唯一的区别是该节点管理的是哪部分数据。当遇到间歇性故障或进行滚动升级时, K8s 助力于数据库集群的快速恢复。尽管 K8s 带来许多诸多的便利,我们仍然要权衡 k8s 带给我们的弹性与通过物理机或虚拟机获得更高性能的利弊。即使在物理机或虚拟机上维护数据库需要更多的人工操作,但获得的最佳性能比 k8s 上要好。

KaiwuDB 如何运行在 Kubernetes 上

一、创建数据库集群

1.如果您没有使用网络存储而是本地存储卷时,需要创建3个 persistent volumes(持久卷)来提供给 pod 使用:

$ kubectl apply -f pv0.yaml -f pv1.yaml -f pv2.yaml

可参考以下的持久卷(pv)yaml文件:

apiVersion: v1
kind: PersistentVolume
metadata:
 name: pv-bini-0
 labels:
   app: bini
spec:
 capacity:
   storage: 10Gi
 volumeMode: Filesystem
 accessModes:
 - ReadWriteOnce
 storageClassName: local
 persistentVolumeReclaimPolicy
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值