云原生数据基础设施之kubeblocks

一、kubeblocks简介

参考文档:https://kubeblocks.io/docs/release-0.9/user_docs/overview/introduction

1.KubeBlocks 是什么?

KubeBlocks 是基于 Kubernetes 的云原生数据基础设施,将顶级云服务提供商的大规模生产经验与增强的可用性和稳定性改进相结合,帮助用户轻松构建容器化、声明式的关系型、NoSQL、流计算和向量型数据库服务。

KubeBlocks 的名字源自 Kubernetes(K8s)和乐高积木,致力于让 K8s 上的数据基础设施管理就像搭乐高积木一样,既高效又有趣。

2.为什么需要 KubeBlocks?

Kubernetes 已经成为容器编排的事实标准。它利用 ReplicaSet 提供的可扩展性和可用性以及 Deployment 提供的推出和回滚功能来管理日益增加的无状态工作负载。然而,管理有状态工作负载给 Kubernetes 带来了巨大的挑战。
尽管 StatefulSet 提供了稳定的持久存储和唯一的网络标识符,但这些功能对于复杂的有状态工作负载来说远远不够。 为了应对这些挑战,并解决复杂性问题,KubeBlocks 引入了 ReplicationSet 和 ConsensusSet,具备以下能力: 1.基于角色的更新顺序可减少因升级版本、缩放和重新启动而导致的停机时间。 2.维护数据复制的状态,并自动修复复制错误或延迟。

3.主要功能

支持多云,与 AWS、GCP、Azure、阿里云等云平台兼容。
支持 MySQL、PostgreSQL、Redis、MongoDB、Kafka 等 32 个主流数据库和流计算引擎。
提供生产级性能、弹性、可扩展性和可观察性。
简化 day-2 操作,例如升级、扩展、监控、备份和恢复。
包含强大且直观的命令行工具。
仅需几分钟,即可建立一个适用于生产环境的完整数据基础设施。

二、安装 KubeBlocks

版本要求 1.22,具体根据官方文档

1.安装kbcli

curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash
kbcli version
echo "source <(kbcli completion bash)" >> ~/.bashrc
.  ~/.bashrc

2.安装KubeBlocks

需要等待几分钟

#查看可用的版本
kbcli kubeblocks list-versions
#使用 --version 指定版本,如果不指定则是最新版本
kbcli kubeblocks install --version=x.x.x

#验证 KubeBlocks 安装

kbcli kubeblocks status

KubeBlocks is deployed in namespace: kb-system,version: 0.9.0

KubeBlocks Workloads:
NAMESPACE   KIND         NAME                           READY PODS   CPU(CORES)   MEMORY(BYTES)   CREATED-AT                   
kb-system   Deployment   kb-addon-snapshot-controller   1/1          N/A          N/A             Aug 05,2024 13:40 UTC+0800   
kb-system   Deployment   kubeblocks                     1/1          N/A          N/A             Aug 05,2024 13:38 UTC+0800   
kb-system   Deployment   kubeblocks-dataprotection      1/1          N/A          N/A             Aug 05,2024 13:38 UTC+0800   

KubeBlocks Addons:
NAME                           STATUS     TYPE   PROVIDER   
alertmanager-webhook-adaptor   Disabled   Helm   N/A        
apecloud-mysql                 Enabled    Helm   N/A        
apecloud-otel-collector        Disabled   Helm   N/A        
aws-load-balancer-controller   Disabled   Helm   N/A        
csi-driver-nfs                 Disabled   Helm   N/A        
csi-hostpath-driver            Disabled   Helm   N/A        
csi-s3                         Disabled   Helm   N/A        
external-dns                   Disabled   Helm   N/A        
fault-chaos-mesh               Disabled   Helm   N/A        
grafana                        Disabled   Helm   N/A        
kafka                          Enabled    Helm   N/A        
kubebench                      Disabled   Helm   N/A        
kubeblocks-csi-driver          Disabled   Helm   N/A        
llm                            Disabled   Helm   N/A        
loki                           Disabled   Helm   N/A        
migration                      Disabled   Helm   N/A        
minio                          Disabled   Helm   N/A        
mongodb                        Enabled    Helm   N/A        
mysql                          Enabled    Helm   N/A        
nvidia-gpu-exporter            Disabled   Helm   N/A        
nyancat                        Disabled   Helm   N/A        
postgresql                     Enabled    Helm   N/A        
prometheus                     Disabled   Helm   N/A        
pulsar                         Enabled    Helm   N/A        
pyroscope-server               Disabled   Helm   N/A        
qdrant                         Disabled   Helm   N/A        
redis                          Enabled    Helm   N/A        
snapshot-controller            Enabled    Helm   N/A        
victoria-metrics-agent         Disabled   Helm   N/A   

3.插件启用/禁用

#查看支持的插件
kbcli addon list

#启用插件
kbcli addon enable plugin-name

#禁用插件
kbcli addon disable plugin-name

三、安装MySQL验证kubeblocks

1.安装MySQL

kubectl create namespace mysql-demo
kbcli cluster create mysql mysql-demo -n mysql-demo  #集群名称mysql-demo,我这里由于演示只创建一个节点,如果创建集群,参考官方文档
kubectl get pods -n mysql-demo 
NAME                 READY   STATUS    RESTARTS   AGE
mysql-demo-mysql-0   4/4     Running   0          6m41s

2.连接MySQL

#kbcli 方式
kbcli cluster connect mysql-demo -n mysql-demo  #会自动登录MySQL

#kubectl方式
kubectl get secrets -n mysql-demo |grep credential
mysql-demo-conn-credential                  Opaque   5      28m

kubectl get secrets -n mysql-demo mysql-demo-conn-credential -o  jsonpath='{.data.\username}' | base64 -d
root
kubectl get secrets -n mysql-demo mysql-demo-conn-credential -o  jsonpat.data.\password}' | base64 -d
rtbc8zdd

kubectl exec -ti -n mysql-demo mysql-demo-mysql-0 -- bash
mysql -uroot -p
posted @ 2024-08-05 15:46  百衲本  阅读(28)  评论(0编辑  收藏  举报
cnblogs_post_body { color: black; font: 0.875em/1.5em "微软雅黑" , "PTSans" , "Arial" ,sans-serif; font-size: 15px; } cnblogs_post_body h1 { text-align:center; background: #333366; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 23px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } cnblogs_post_body h2 { text-align:center; background: #006699; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 20px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } cnblogs_post_body h3 { background: #2B6695; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 18px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } 回到顶部 博客侧边栏 回到顶部 页首代码 回到顶部 页脚代码