在 Kubernetes 上使用 KubeBlocks 安装 PostgreSQL
引言
在 Kubernetes 上管理数据库一直是一个挑战,直到 KubeBlocks 的出现!
KubeBlocks 提供了一个 统一的 API,让你可以用相同的方式管理 MySQL、PostgreSQL、MongoDB、Redis、Pulsar、ClickHouse 等数据库,而不需要学习多个数据库运维工具。
在本教程中,我们将专注于 PostgreSQL,并演示如何使用 KubeBlocks 在 Kubernetes 上安装并连接 PostgreSQL 数据库。
为什么选择 KubeBlocks?
Kubernetes 本身擅长管理 无状态应用,但在处理 数据库等有状态应用 时,通常需要:
✅ 找到适配的数据库 Operator
✅ 学习不同的 API 和配置方式
✅ 处理 备份、扩缩容、监控 等运维工作
KubeBlocks 让这一切变得简单!
🔹 统一 API —— 通过相同的命令管理不同的数据库
🔹 高可用 —— 生产级故障恢复能力
🔹 内置监控 —— 预配置 Prometheus & Grafana 监控面板
安装 KubeBlocks
步骤 1:安装 KubeBlocks CLI
首先,安装 KubeBlocks CLI,用于管理数据库集群:
export KB_CLI_VERSION=v0.9.2
curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash -s $KB_CLI_VERSION
验证安装是否成功:
kbcli --help
你应该能看到 KubeBlocks CLI 的可用命令列表。
步骤 2:在 Kubernetes 上部署 KubeBlocks
2.1 安装 KubeBlocks CRDs(自定义资源定义)
export KB_VERSION=v0.9.2
kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/$KB_VERSION/kubeblocks_crds.yaml
2.2 添加 KubeBlocks Helm 仓库
helm repo add kubeblocks https://apecloud.github.io/helm-charts
helm repo update
2.3 使用 Helm 安装 KubeBlocks
helm -n kb-system install kubeblocks kubeblocks/kubeblocks --version 0.9.2 \
--set image.registry=docker.io \
--set dataProtection.image.registry=docker.io \
--set addonChartsImage.registry=docker.io \
--create-namespace
安装完成后,检查 KubeBlocks 是否运行:
kubectl get pods -n kb-system
你应该能看到 KubeBlocks 相关 Pod 处于 Running 状态。
安装 PostgreSQL
步骤 3:使用 KubeBlocks 部署 PostgreSQL 集群
现在,让我们使用 KubeBlocks 快速启动 PostgreSQL 集群!
运行以下命令创建 PostgreSQL 集群:
kbcli cluster create my-postgresql --cluster-definition postgresql
等待几分钟后,检查 PostgreSQL 集群状态:
kubectl get pods -n default
你应该能看到类似以下的输出:
NAME READY STATUS RESTARTS AGE
my-postgresql-postgresql-0 4/4 Running 0 79s
my-postgresql-postgresql-1 4/4 Running 0 79s
表示 PostgreSQL 集群已经成功运行! 🎉
连接 PostgreSQL 并执行 SQL 操作
步骤 4:连接 PostgreSQL
kbcli cluster connect my-postgresql
执行上面的命令后,你会进入 PostgreSQL 交互式 Shell,然后你可以执行 SQL 语句:
CREATE DATABASE testdb;
\c testdb
CREATE TABLE users (id SERIAL PRIMARY KEY, name VARCHAR(100), age INT);
INSERT INTO users (name, age) VALUES ('Alice', 30), ('Bob', 25);
SELECT * FROM users;
你应该能看到 PostgreSQL 返回的查询结果,表示数据库操作成功! 🚀
总结
✅ 安装了 KubeBlocks,并在 Kubernetes 上部署 PostgreSQL
✅ 使用 KubeBlocks 统一 API 快速创建 PostgreSQL 集群
✅ 连接 PostgreSQL 并执行 SQL 操作
为什么 KubeBlocks 是数据库管理的未来?
🚀 支持多种数据库:MySQL、PostgreSQL、MongoDB、Redis、Pulsar、ClickHouse 等
💡 一套 API 统一管理,不需要学习多个数据库运维工具
⚡ 生产级高可用、监控和扩展能力
📢 下一步?
🔹 尝试其他数据库:试试 MySQL、MongoDB 或 Redis
🔹 探索高级功能:如 自动扩缩容、备份恢复
🔹 加入社区:给 KubeBlocks GitHub 点个 ⭐,一起讨论!
💬 有问题? 在评论区交流或加入我们的 Slack 社区!
Happy Coding! 🚀