使用K3s 从零部署 CloudNativePG:打造 Homelab 统一 PostgreSQL 平台
K3s 从零部署 CloudNativePG:打造 Homelab 统一 PostgreSQL 平台
前言
在很多 CloudNativePG 教程中,通常只会介绍如何安装 Operator 并创建一个 PostgreSQL 集群。
但在实际 Homelab 场景中,我们更希望:
- 整个 K3s 集群共用一套 PostgreSQL 服务
- 支持 Spring Boot 项目
- 支持 Gitea
- 支持 Immich
- 支持未来新增应用
- 能够通过固定 IP 从局域网访问数据库
- 保留未来扩容多节点 K3s 的能力
因此本文不只是介绍 CloudNativePG 的安装,而是介绍如何将其建设为 Homelab 的统一 PostgreSQL 平台。
环境说明
K3s 节点
1 | 192.168.31.215 |
路由器
小米路由器
DHCP 配置:
1 | 192.168.31.5 - 192.168.31.229 |
MetalLB 地址规划
1 | 192.168.31.230 postgres |
本文中 PostgreSQL 固定使用:
1 | 192.168.31.230 |
最终架构
1 | 家庭局域网 |
集群外通过 LoadBalancer 访问。
集群内通过 Service DNS 访问。
安装 MetalLB
添加 Helm Repo:
1 | helm repo add metallb https://metallb.github.io/metallb |
安装:
1 | helm install metallb metallb/metallb \ |
确认:
1 | kubectl get pods -n metallb-system |
1 | NAME READY STATUS RESTARTS AGE |
安装完成后创建地址池:
1 | apiVersion: metallb.io/v1beta1 |
安装 CloudNativePG
CloudNativePG 提供了一个非常强大的 kubectl 插件,可以帮助你轻松查看数据库状态、进行主备切换、查看日志等。
在你的控制端(或 K3s 节点上)运行以下命令安装:
1 | curl -sSfL https://github.com/cloudnative-pg/cloudnative-pg/raw/main/hack/install-cnpg-plugin.sh | sudo sh -s -- -b /usr/local/bin |
如果你是中国用户,你可以使用gh-proxy来加速
1 | curl -sSfL https://gh-proxy.com/https://github.com/cloudnative-pg/cloudnative-pg/raw/main/hack/install-cnpg-plugin.sh | sudo sh -s -- -b /usr/local/bin |
验证:
1 | kubectl cnpg version |
使用helm来部署CNPG Operator:
1 | # 添加并更新仓库 |
创建 PostgreSQL 集群
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Damingerdai's Blog!
