首次提交:初始化项目
This commit is contained in:
429
009-基础设施/001-pg16/README.md
Normal file
429
009-基础设施/001-pg16/README.md
Normal file
@@ -0,0 +1,429 @@
|
||||
# PostgreSQL 16 K3s 部署指南
|
||||
|
||||
本目录包含在 K3s 集群中部署 PostgreSQL 16 数据库的完整配置文件。
|
||||
|
||||
## 📋 目录结构
|
||||
|
||||
```
|
||||
001-pg16/
|
||||
├── README.md # 本文件 - 部署说明
|
||||
└── k8s/ # K8s 配置文件目录
|
||||
├── namespace.yaml # infrastructure 命名空间
|
||||
├── secret.yaml # 数据库密码
|
||||
├── configmap.yaml # 初始化脚本
|
||||
├── pvc.yaml # 持久化存储卷声明
|
||||
├── deployment.yaml # PostgreSQL 部署配置
|
||||
├── service.yaml # 服务配置
|
||||
└── README.md # K8s 配置详细说明
|
||||
```
|
||||
|
||||
## 🚀 快速部署
|
||||
|
||||
### 前置条件
|
||||
|
||||
1. **已安装 K3s**
|
||||
```bash
|
||||
# 检查 K3s 是否运行
|
||||
sudo systemctl status k3s
|
||||
|
||||
# 检查节点状态
|
||||
sudo kubectl get nodes
|
||||
```
|
||||
|
||||
2. **配置 kubectl 权限**(可选,避免每次使用 sudo)
|
||||
```bash
|
||||
# 方法1:复制配置到用户目录(推荐)
|
||||
mkdir -p ~/.kube
|
||||
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
|
||||
sudo chown $USER:$USER ~/.kube/config
|
||||
chmod 600 ~/.kube/config
|
||||
|
||||
# 验证配置
|
||||
kubectl get nodes
|
||||
```
|
||||
|
||||
### 一键部署
|
||||
|
||||
```bash
|
||||
# 进入配置目录
|
||||
cd /path/to/001-pg16/k8s
|
||||
|
||||
# 部署所有资源
|
||||
kubectl apply -f .
|
||||
|
||||
# 或者使用 sudo(如果未配置 kubectl 权限)
|
||||
sudo kubectl apply -f .
|
||||
```
|
||||
|
||||
### 查看部署状态
|
||||
|
||||
```bash
|
||||
# 查看 Pod 状态
|
||||
kubectl get pods -n infrastructure
|
||||
|
||||
# 查看 Pod 详细信息
|
||||
kubectl describe pod -n infrastructure -l app=pg16
|
||||
|
||||
# 查看初始化日志(实时)
|
||||
kubectl logs -n infrastructure -l app=pg16 -f
|
||||
|
||||
# 查看服务状态
|
||||
kubectl get svc -n infrastructure
|
||||
|
||||
# 查看 PVC 状态
|
||||
kubectl get pvc -n infrastructure
|
||||
```
|
||||
|
||||
## ✅ 验证部署
|
||||
|
||||
### 1. 检查 Pod 是否运行
|
||||
|
||||
```bash
|
||||
kubectl get pods -n infrastructure
|
||||
```
|
||||
|
||||
期望输出:
|
||||
```
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
pg16-xxxxxxxxx-xxxxx 1/1 Running 0 2m
|
||||
```
|
||||
|
||||
### 2. 验证数据库创建
|
||||
|
||||
```bash
|
||||
# 统计数据库总数(应该是 303 个)
|
||||
kubectl exec -n infrastructure -l app=pg16 -- psql -U postgres -c "SELECT count(*) FROM pg_database;"
|
||||
|
||||
# 查看前 10 个数据库
|
||||
kubectl exec -n infrastructure -l app=pg16 -- psql -U postgres -c "SELECT datname FROM pg_database WHERE datname LIKE 'pg0%' ORDER BY datname LIMIT 10;"
|
||||
|
||||
# 查看最后 10 个数据库
|
||||
kubectl exec -n infrastructure -l app=pg16 -- psql -U postgres -c "SELECT datname FROM pg_database WHERE datname LIKE 'pg2%' ORDER BY datname DESC LIMIT 10;"
|
||||
```
|
||||
|
||||
期望结果:
|
||||
- 总数据库数:303 个(300 个业务数据库 + postgres + template0 + template1)
|
||||
- 数据库命名:pg001, pg002, ..., pg300
|
||||
- 数据库所有者:fei
|
||||
|
||||
### 3. 测试数据库连接
|
||||
|
||||
```bash
|
||||
# 方法1:直接在 Pod 内执行 SQL
|
||||
kubectl exec -n infrastructure -l app=pg16 -- psql -U fei -d pg001 -c "SELECT current_database(), version();"
|
||||
|
||||
# 方法2:进入 Pod 交互式操作
|
||||
kubectl exec -it -n infrastructure -l app=pg16 -- bash
|
||||
# 在 Pod 内执行
|
||||
psql -U fei -d pg001
|
||||
# 退出
|
||||
\q
|
||||
exit
|
||||
```
|
||||
|
||||
## 🔌 连接数据库
|
||||
|
||||
### 集群内部连接
|
||||
|
||||
从集群内其他 Pod 连接:
|
||||
|
||||
```
|
||||
主机: pg16.infrastructure.svc.cluster.local
|
||||
端口: 5432
|
||||
用户: fei
|
||||
密码: feiks..
|
||||
数据库: pg001 ~ pg300
|
||||
```
|
||||
|
||||
连接字符串示例:
|
||||
```
|
||||
postgresql://fei:feiks..@pg16.infrastructure.svc.cluster.local:5432/pg001
|
||||
```
|
||||
|
||||
### 集群外部连接
|
||||
|
||||
#### 方法1:使用 NodePort(推荐)
|
||||
|
||||
```bash
|
||||
# 获取节点 IP
|
||||
kubectl get nodes -o wide
|
||||
|
||||
# 使用 NodePort 连接
|
||||
psql -h <节点IP> -U fei -d pg001 -p 30432
|
||||
```
|
||||
|
||||
连接信息:
|
||||
- 主机:节点 IP 地址
|
||||
- 端口:30432
|
||||
- 用户:fei
|
||||
- 密码:feiks..
|
||||
|
||||
#### 方法2:使用 Port Forward
|
||||
|
||||
```bash
|
||||
# 转发端口到本地
|
||||
kubectl port-forward -n infrastructure svc/pg16 5432:5432
|
||||
|
||||
# 在另一个终端连接
|
||||
psql -h localhost -U fei -d pg001 -p 5432
|
||||
```
|
||||
|
||||
## 📊 数据库信息
|
||||
|
||||
### 默认配置
|
||||
|
||||
- **PostgreSQL 版本**: 16
|
||||
- **命名空间**: infrastructure
|
||||
- **数据库数量**: 300 个(pg001 ~ pg300)
|
||||
- **超级用户**: fei(密码:feiks..)
|
||||
- **系统用户**: postgres(密码:adminks..)
|
||||
- **持久化存储**: 20Gi(使用 K3s 默认 local-path StorageClass)
|
||||
|
||||
### 资源配置
|
||||
|
||||
- **CPU 请求**: 500m
|
||||
- **CPU 限制**: 2000m
|
||||
- **内存请求**: 512Mi
|
||||
- **内存限制**: 2Gi
|
||||
|
||||
### 服务端口
|
||||
|
||||
- **ClusterIP 服务**: pg16(端口 5432)
|
||||
- **NodePort 服务**: pg16-nodeport(端口 30432)
|
||||
|
||||
## 🔧 常用操作
|
||||
|
||||
### 查看日志
|
||||
|
||||
```bash
|
||||
# 查看最近 50 行日志
|
||||
kubectl logs -n infrastructure -l app=pg16 --tail=50
|
||||
|
||||
# 实时查看日志
|
||||
kubectl logs -n infrastructure -l app=pg16 -f
|
||||
|
||||
# 查看上一次容器的日志(如果 Pod 重启过)
|
||||
kubectl logs -n infrastructure -l app=pg16 --previous
|
||||
```
|
||||
|
||||
### 进入容器
|
||||
|
||||
```bash
|
||||
# 进入 PostgreSQL 容器
|
||||
kubectl exec -it -n infrastructure -l app=pg16 -- bash
|
||||
|
||||
# 直接进入 psql
|
||||
kubectl exec -it -n infrastructure -l app=pg16 -- psql -U postgres
|
||||
```
|
||||
|
||||
### 重启 Pod
|
||||
|
||||
```bash
|
||||
# 删除 Pod(Deployment 会自动重建)
|
||||
kubectl delete pod -n infrastructure -l app=pg16
|
||||
|
||||
# 或者重启 Deployment
|
||||
kubectl rollout restart deployment pg16 -n infrastructure
|
||||
```
|
||||
|
||||
### 扩缩容(不推荐用于数据库)
|
||||
|
||||
```bash
|
||||
# 查看当前副本数
|
||||
kubectl get deployment pg16 -n infrastructure
|
||||
|
||||
# 注意:PostgreSQL 不支持多副本,保持 replicas=1
|
||||
```
|
||||
|
||||
## 🗑️ 卸载
|
||||
|
||||
### 删除部署(保留数据)
|
||||
|
||||
```bash
|
||||
# 删除 Deployment 和 Service
|
||||
kubectl delete deployment pg16 -n infrastructure
|
||||
kubectl delete svc pg16 pg16-nodeport -n infrastructure
|
||||
|
||||
# PVC 和数据会保留
|
||||
```
|
||||
|
||||
### 完全卸载(包括数据)
|
||||
|
||||
```bash
|
||||
# 删除所有资源
|
||||
kubectl delete -f k8s/
|
||||
|
||||
# 或者逐个删除
|
||||
kubectl delete deployment pg16 -n infrastructure
|
||||
kubectl delete svc pg16 pg16-nodeport -n infrastructure
|
||||
kubectl delete pvc pg16-data -n infrastructure
|
||||
kubectl delete configmap pg16-init-script -n infrastructure
|
||||
kubectl delete secret pg16-secret -n infrastructure
|
||||
kubectl delete namespace infrastructure
|
||||
```
|
||||
|
||||
**⚠️ 警告**: 删除 PVC 会永久删除所有数据库数据,无法恢复!
|
||||
|
||||
## 🔐 安全建议
|
||||
|
||||
### 修改默认密码
|
||||
|
||||
部署后建议立即修改默认密码:
|
||||
|
||||
```bash
|
||||
# 进入 Pod
|
||||
kubectl exec -it -n infrastructure -l app=pg16 -- psql -U postgres
|
||||
|
||||
# 修改 fei 用户密码
|
||||
ALTER USER fei WITH PASSWORD '新密码';
|
||||
|
||||
# 修改 postgres 用户密码
|
||||
ALTER USER postgres WITH PASSWORD '新密码';
|
||||
|
||||
# 退出
|
||||
\q
|
||||
```
|
||||
|
||||
然后更新 Secret:
|
||||
|
||||
```bash
|
||||
# 编辑 secret.yaml,修改密码(需要 base64 编码)
|
||||
echo -n "新密码" | base64
|
||||
|
||||
# 更新 Secret
|
||||
kubectl apply -f k8s/secret.yaml
|
||||
```
|
||||
|
||||
### 网络安全
|
||||
|
||||
- 默认配置使用 NodePort 30432 暴露服务
|
||||
- 生产环境建议:
|
||||
- 使用防火墙限制访问 IP
|
||||
- 或者删除 NodePort 服务,仅使用集群内部访问
|
||||
- 配置 NetworkPolicy 限制访问
|
||||
|
||||
```bash
|
||||
# 删除 NodePort 服务(仅保留集群内访问)
|
||||
kubectl delete svc pg16-nodeport -n infrastructure
|
||||
```
|
||||
|
||||
## 🐛 故障排查
|
||||
|
||||
### Pod 无法启动
|
||||
|
||||
```bash
|
||||
# 查看 Pod 状态
|
||||
kubectl describe pod -n infrastructure -l app=pg16
|
||||
|
||||
# 查看事件
|
||||
kubectl get events -n infrastructure --sort-by='.lastTimestamp'
|
||||
|
||||
# 查看日志
|
||||
kubectl logs -n infrastructure -l app=pg16
|
||||
```
|
||||
|
||||
常见问题:
|
||||
- **ImagePullBackOff**: 无法拉取镜像,检查网络连接
|
||||
- **CrashLoopBackOff**: 容器启动失败,查看日志
|
||||
- **Pending**: PVC 无法绑定,检查存储类
|
||||
|
||||
### PVC 无法绑定
|
||||
|
||||
```bash
|
||||
# 查看 PVC 状态
|
||||
kubectl describe pvc pg16-data -n infrastructure
|
||||
|
||||
# 查看 StorageClass
|
||||
kubectl get storageclass
|
||||
|
||||
# 检查 local-path-provisioner
|
||||
kubectl get pods -n kube-system | grep local-path
|
||||
```
|
||||
|
||||
### 数据库连接失败
|
||||
|
||||
```bash
|
||||
# 检查服务是否正常
|
||||
kubectl get svc -n infrastructure
|
||||
|
||||
# 检查 Pod 是否就绪
|
||||
kubectl get pods -n infrastructure
|
||||
|
||||
# 测试集群内连接
|
||||
kubectl run -it --rm debug --image=postgres:16 --restart=Never -- psql -h pg16.infrastructure.svc.cluster.local -U fei -d pg001
|
||||
```
|
||||
|
||||
### 初始化脚本未执行
|
||||
|
||||
如果发现数据库未创建 300 个数据库:
|
||||
|
||||
```bash
|
||||
# 查看初始化日志
|
||||
kubectl logs -n infrastructure -l app=pg16 | grep -i "init\|create database"
|
||||
|
||||
# 检查 ConfigMap 是否正确挂载
|
||||
kubectl exec -n infrastructure -l app=pg16 -- ls -la /docker-entrypoint-initdb.d/
|
||||
|
||||
# 查看脚本内容
|
||||
kubectl exec -n infrastructure -l app=pg16 -- cat /docker-entrypoint-initdb.d/01-init.sh
|
||||
```
|
||||
|
||||
**注意**: PostgreSQL 初始化脚本只在首次启动且数据目录为空时执行。如果需要重新初始化:
|
||||
|
||||
```bash
|
||||
# 删除 Deployment 和 PVC
|
||||
kubectl delete deployment pg16 -n infrastructure
|
||||
kubectl delete pvc pg16-data -n infrastructure
|
||||
|
||||
# 重新部署
|
||||
kubectl apply -f k8s/
|
||||
```
|
||||
|
||||
## 📝 备份与恢复
|
||||
|
||||
### 备份单个数据库
|
||||
|
||||
```bash
|
||||
# 备份 pg001 数据库
|
||||
kubectl exec -n infrastructure -l app=pg16 -- pg_dump -U fei pg001 > pg001_backup.sql
|
||||
|
||||
# 备份所有数据库
|
||||
kubectl exec -n infrastructure -l app=pg16 -- pg_dumpall -U postgres > all_databases_backup.sql
|
||||
```
|
||||
|
||||
### 恢复数据库
|
||||
|
||||
```bash
|
||||
# 恢复单个数据库
|
||||
cat pg001_backup.sql | kubectl exec -i -n infrastructure -l app=pg16 -- psql -U fei pg001
|
||||
|
||||
# 恢复所有数据库
|
||||
cat all_databases_backup.sql | kubectl exec -i -n infrastructure -l app=pg16 -- psql -U postgres
|
||||
```
|
||||
|
||||
### 数据持久化
|
||||
|
||||
数据存储在 K3s 的 local-path 存储中,默认路径:
|
||||
```
|
||||
/var/lib/rancher/k3s/storage/pvc-<uuid>_infrastructure_pg16-data/
|
||||
```
|
||||
|
||||
## 📚 更多信息
|
||||
|
||||
- PostgreSQL 官方文档: https://www.postgresql.org/docs/16/
|
||||
- K3s 官方文档: https://docs.k3s.io/
|
||||
- Kubernetes 官方文档: https://kubernetes.io/docs/
|
||||
|
||||
## 🆘 获取帮助
|
||||
|
||||
如有问题,请检查:
|
||||
1. Pod 日志: `kubectl logs -n infrastructure -l app=pg16`
|
||||
2. Pod 状态: `kubectl describe pod -n infrastructure -l app=pg16`
|
||||
3. 事件记录: `kubectl get events -n infrastructure`
|
||||
|
||||
---
|
||||
|
||||
**版本信息**
|
||||
- PostgreSQL: 16
|
||||
- 创建日期: 2026-01-29
|
||||
- 最后更新: 2026-01-29
|
||||
112
009-基础设施/001-pg16/k8s/README.md
Normal file
112
009-基础设施/001-pg16/k8s/README.md
Normal file
@@ -0,0 +1,112 @@
|
||||
# PostgreSQL 16 K3s 部署配置
|
||||
|
||||
## 文件说明
|
||||
|
||||
- `namespace.yaml` - 创建 infrastructure 命名空间
|
||||
- `secret.yaml` - 存储 PostgreSQL 密码等敏感信息
|
||||
- `configmap.yaml` - 存储初始化脚本(创建用户和 300 个数据库)
|
||||
- `pvc.yaml` - 持久化存储声明(20Gi)
|
||||
- `deployment.yaml` - PostgreSQL 16 部署配置
|
||||
- `service.yaml` - 服务暴露(ClusterIP + NodePort)
|
||||
|
||||
## 部署步骤
|
||||
|
||||
### 1. 部署所有资源
|
||||
|
||||
```bash
|
||||
kubectl apply -f namespace.yaml
|
||||
kubectl apply -f secret.yaml
|
||||
kubectl apply -f configmap.yaml
|
||||
kubectl apply -f pvc.yaml
|
||||
kubectl apply -f deployment.yaml
|
||||
kubectl apply -f service.yaml
|
||||
```
|
||||
|
||||
或者一次性部署:
|
||||
|
||||
```bash
|
||||
kubectl apply -f .
|
||||
```
|
||||
|
||||
### 2. 查看部署状态
|
||||
|
||||
```bash
|
||||
# 查看 Pod 状态
|
||||
kubectl get pods -n infrastructure
|
||||
|
||||
# 查看 Pod 日志
|
||||
kubectl logs -n infrastructure -l app=pg16 -f
|
||||
|
||||
# 查看服务
|
||||
kubectl get svc -n infrastructure
|
||||
```
|
||||
|
||||
### 3. 访问数据库
|
||||
|
||||
**集群内访问:**
|
||||
```bash
|
||||
# 使用 ClusterIP 服务
|
||||
psql -h pg16.infrastructure.svc.cluster.local -U postgres -p 5432
|
||||
```
|
||||
|
||||
**集群外访问:**
|
||||
```bash
|
||||
# 使用 NodePort(端口 30432)
|
||||
psql -h <节点IP> -U postgres -p 30432
|
||||
```
|
||||
|
||||
**使用 kubectl port-forward:**
|
||||
```bash
|
||||
kubectl port-forward -n infrastructure svc/pg16 5432:5432
|
||||
psql -h localhost -U postgres -p 5432
|
||||
```
|
||||
|
||||
## 配置说明
|
||||
|
||||
### 存储
|
||||
- 使用 k3s 默认的 `local-path` StorageClass
|
||||
- 默认申请 20Gi 存储空间
|
||||
- 数据存储在 `/var/lib/postgresql/data/pgdata`
|
||||
|
||||
### 资源限制
|
||||
- 请求:512Mi 内存,0.5 核 CPU
|
||||
- 限制:2Gi 内存,2 核 CPU
|
||||
|
||||
### 初始化
|
||||
- 自动创建超级用户 `fei`
|
||||
- 自动创建 300 个数据库(pg001 到 pg300)
|
||||
|
||||
### 服务暴露
|
||||
- **ClusterIP 服务**:集群内部访问,服务名 `pg16`
|
||||
- **NodePort 服务**:集群外部访问,端口 `30432`
|
||||
|
||||
## 数据迁移
|
||||
|
||||
### 从现有 Docker 数据迁移
|
||||
|
||||
如果你有现有的 pgdata 数据,可以:
|
||||
|
||||
1. 先部署不带数据的 PostgreSQL
|
||||
2. 停止 Pod
|
||||
3. 将数据复制到 PVC 对应的主机路径
|
||||
4. 重启 Pod
|
||||
|
||||
```bash
|
||||
# 查找 PVC 对应的主机路径
|
||||
kubectl get pv
|
||||
|
||||
# 停止 Pod
|
||||
kubectl scale deployment pg16 -n infrastructure --replicas=0
|
||||
|
||||
# 复制数据到主机路径(通常在 /var/lib/rancher/k3s/storage/)
|
||||
# 然后重启
|
||||
kubectl scale deployment pg16 -n infrastructure --replicas=1
|
||||
```
|
||||
|
||||
## 卸载
|
||||
|
||||
```bash
|
||||
kubectl delete -f .
|
||||
```
|
||||
|
||||
注意:删除 PVC 会删除所有数据,请谨慎操作。
|
||||
19
009-基础设施/001-pg16/k8s/configmap.yaml
Normal file
19
009-基础设施/001-pg16/k8s/configmap.yaml
Normal file
@@ -0,0 +1,19 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: pg16-init-script
|
||||
namespace: infrastructure
|
||||
data:
|
||||
01-init.sh: |
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# 创建超级用户 fei
|
||||
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
||||
CREATE USER fei WITH SUPERUSER PASSWORD 'feiks..';
|
||||
EOSQL
|
||||
|
||||
# 创建 300 个数据库
|
||||
for i in $(seq -w 1 300); do
|
||||
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -c "CREATE DATABASE pg${i} OWNER fei;"
|
||||
done
|
||||
76
009-基础设施/001-pg16/k8s/deployment.yaml
Normal file
76
009-基础设施/001-pg16/k8s/deployment.yaml
Normal file
@@ -0,0 +1,76 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: pg16
|
||||
namespace: infrastructure
|
||||
labels:
|
||||
app: pg16
|
||||
spec:
|
||||
replicas: 1
|
||||
strategy:
|
||||
type: Recreate
|
||||
selector:
|
||||
matchLabels:
|
||||
app: pg16
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: pg16
|
||||
spec:
|
||||
containers:
|
||||
- name: postgres
|
||||
image: postgres:16
|
||||
ports:
|
||||
- containerPort: 5432
|
||||
name: postgres
|
||||
env:
|
||||
- name: POSTGRES_USER
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: pg16-secret
|
||||
key: POSTGRES_USER
|
||||
- name: POSTGRES_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: pg16-secret
|
||||
key: POSTGRES_PASSWORD
|
||||
- name: PGDATA
|
||||
value: /var/lib/postgresql/data/pgdata
|
||||
volumeMounts:
|
||||
- name: postgres-data
|
||||
mountPath: /var/lib/postgresql/data
|
||||
- name: init-scripts
|
||||
mountPath: /docker-entrypoint-initdb.d
|
||||
resources:
|
||||
requests:
|
||||
memory: "512Mi"
|
||||
cpu: "500m"
|
||||
limits:
|
||||
memory: "2Gi"
|
||||
cpu: "2000m"
|
||||
livenessProbe:
|
||||
exec:
|
||||
command:
|
||||
- pg_isready
|
||||
- -U
|
||||
- postgres
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 5
|
||||
readinessProbe:
|
||||
exec:
|
||||
command:
|
||||
- pg_isready
|
||||
- -U
|
||||
- postgres
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 5
|
||||
timeoutSeconds: 3
|
||||
volumes:
|
||||
- name: postgres-data
|
||||
persistentVolumeClaim:
|
||||
claimName: pg16-data
|
||||
- name: init-scripts
|
||||
configMap:
|
||||
name: pg16-init-script
|
||||
defaultMode: 0755
|
||||
4
009-基础设施/001-pg16/k8s/namespace.yaml
Normal file
4
009-基础设施/001-pg16/k8s/namespace.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: infrastructure
|
||||
12
009-基础设施/001-pg16/k8s/pvc.yaml
Normal file
12
009-基础设施/001-pg16/k8s/pvc.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: pg16-data
|
||||
namespace: infrastructure
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 20Gi
|
||||
storageClassName: local-path
|
||||
10
009-基础设施/001-pg16/k8s/secret.yaml
Normal file
10
009-基础设施/001-pg16/k8s/secret.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: pg16-secret
|
||||
namespace: infrastructure
|
||||
type: Opaque
|
||||
stringData:
|
||||
POSTGRES_PASSWORD: "adminks.."
|
||||
POSTGRES_USER: "postgres"
|
||||
FEI_PASSWORD: "feiks.."
|
||||
34
009-基础设施/001-pg16/k8s/service.yaml
Normal file
34
009-基础设施/001-pg16/k8s/service.yaml
Normal file
@@ -0,0 +1,34 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: pg16
|
||||
namespace: infrastructure
|
||||
labels:
|
||||
app: pg16
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 5432
|
||||
targetPort: 5432
|
||||
protocol: TCP
|
||||
name: postgres
|
||||
selector:
|
||||
app: pg16
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: pg16-nodeport
|
||||
namespace: infrastructure
|
||||
labels:
|
||||
app: pg16
|
||||
spec:
|
||||
type: NodePort
|
||||
ports:
|
||||
- port: 5432
|
||||
targetPort: 5432
|
||||
nodePort: 30432
|
||||
protocol: TCP
|
||||
name: postgres
|
||||
selector:
|
||||
app: pg16
|
||||
Reference in New Issue
Block a user