复制成功
请遵守本站许可
REPORT
Chapter_Post // Field_Report

Post_Ref: RL-在KUBERNE

2026.04.08

在-Kubernetes-集群中部署-PostgreSQL

Echo HaoRan
Echo HaoRan
ANALYSIS

🚀 一、准备环境#

确保你的集群运行正常:

PRTCL // BASH
Terminal window
# 查看节点是否全部 Ready
kubectl get nodes -o wide

如果有多个节点,建议选择一个用于运行数据库的 StorageClass(比如 local-path、nfs 或 rook-ceph)。


🧱 二、创建命名空间与持久化存储#

PRTCL // BASH
Terminal window
# 创建一个 YAML 文件,用于定义 PVC(PersistentVolumeClaim,持久卷声明)
cat > postgres-pvc.yaml <<EOF
apiVersion: v1 # API 版本,v1 表示核心 API 组(core group)
kind: PersistentVolumeClaim # 资源类型为 持久卷声明(PVC)
metadata: # 元数据定义部分(对象的名字、命名空间等)
name: postgres-pvc # PVC 名称:postgres-pvc
namespace: postgres # 所属命名空间:postgres
spec: # 具体的规格说明(specification)
accessModes: # 访问模式列表
- ReadWriteOnce # 访问模式:单节点读写(RWO = ReadWriteOnce)
resources: # 资源请求定义
requests: # 定义 PVC 请求的最小资源
storage: 5Gi # 请求 5Gi(5GB)的存储空间
EOF
# 应用该 PVC 定义文件,将其提交给 Kubernetes 集群
kubectl apply -f postgres-pvc.yaml # -f 表示指定文件路径(file)

🧩 三、部署 PostgreSQL(Deployment + Service)#

PRTCL // BASH
Terminal window
# 创建 PostgreSQL 的部署文件(Deployment + Service)
cat > postgres-deploy.yaml <<EOF
apiVersion: apps/v1 # API 版本,apps/v1 用于 Deployment 资源
kind: Deployment # 资源类型为 Deployment(部署控制器)
metadata: # 元数据定义
name: postgres # Deployment 名称
namespace: postgres # 所属命名空间
spec: # 规格说明
replicas: 1 # 副本数量(replicas = 实例数量)
selector: # 选择器,用于匹配 Pod
matchLabels: # 匹配标签(label)
app: postgres # 标签键值对:app=postgres
template: # Pod 模板定义
metadata:
labels: # Pod 标签
app: postgres
spec: # Pod 规格
containers: # 容器定义列表
- name: postgres # 容器名称
image: postgres:15 # 容器镜像版本:PostgreSQL 15
ports: # 暴露端口列表
- containerPort: 5432 # 容器内部端口(PostgreSQL 默认端口)
env: # 环境变量定义
- name: POSTGRES_USER # 数据库用户名变量
value: "admin" # 设置用户名为 admin
- name: POSTGRES_PASSWORD # 数据库密码变量
value: "password123" # 设置密码为 password123
- name: POSTGRES_DB # 数据库名称变量
PRTCL // SH
Terminal window
# 部署
kubectl apply -f postgres-deploy.yaml

🔍 四、验证部署#

PRTCL // BASH
Terminal window
# 查看 Pod 状态
kubectl get pods -n postgres -o wide
# 查看 Service 暴露端口
kubectl get svc -n postgres

假设你的 Node IP 是 192.168.2.100,那么现在数据库可以从外部访问:

PRTCL // PLAINTEXT
Host: 192.168.2.100
Port: 30032
User: admin
Password: password123
Database: mydb

🧪 五、在集群内连接测试#

进入 PostgreSQL 容器内部测试:

PRTCL // BASH
Terminal window
kubectl exec -it -n postgres deploy/postgres -- bash
# 登录数据库
psql -U admin -d mydb
# 在 psql 控制台执行简单查询
\l # 列出数据库
\dt # 列出数据表
\q # 退出

⚙️ 六、删除 PostgreSQL(清理环境)#

PRTCL // BASH
Terminal window
# 删除 Deployment、Service、PVC
kubectl delete -f postgres-deploy.yaml
kubectl delete -f postgres-pvc.yaml
kubectl delete ns postgres

作者:EchoWang

小红书:汪多多是只猫

B 站:汪多多是只猫

公众号:汪多多是只猫

博客:https://blog.echospace.top

R P
Rhine Lab Pioneer Division
Auth_Verified: 2026.04.08
// END OF POST

订阅

通过 RSS 订阅本站,新文章发布时第一时间收到通知。

Follow
Classified
Chapter_06
Protocol_Ref: CC-BY-NC-SA-4.0

在-Kubernetes-集群中部署-PostgreSQL

Author: CHONGXIReleased: 2026.04.08

Licensed under CC BY-NC-SA 4.0

评论

© 2025-2026 EchoSpace
Powered by Astro & echohaoran Non-Collaborative_Entity // Protocol_V.4.21