Appearance
安装 MetalLB
shell
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.15.3/config/manifests/metallb-native.yamlmetallb-config.yaml
yaml
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: my-manual-pool
namespace: metallb-system
spec:
addresses:
- 192.168.30.61/32
- 192.168.30.63/32
- 192.168.30.64/32
- 192.168.30.65/32
autoAssign: false
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: my-l2-adv
namespace: metallb-system
spec:
ipAddressPools:
- my-manual-poolshell
kubectl apply -f metallb-config.yaml部署 CloudNativePG (CNPG) Operator
shell
kubectl apply --server-side -f \
https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-1.29/releases/cnpg-1.29.0.yaml创建一个独立的命名空间:
shell
kubectl create namespace postgresql创建postgres-cluster.yaml
yaml
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: my-pg-cluster
namespace: postgresql
spec:
instances: 3 # 1个主实例 + 2个备实例
storage:
size: 100Gi # 根据你的数据量调整
storageClass: <your-storage-class> # 替换为你的存储类,例如 local-path, standard
# 其他生产配置(建议添加)
# bootstrap:
# initdb:
# database: appdb
# owner: appuser
---
apiVersion: v1
kind: Service
metadata:
name: my-pg-cluster-lb
namespace: postgresql
spec:
type: LoadBalancer
loadBalancerIP: 192.168.30.61 # 手动指定 IP
selector:
cnpg.io/cluster: my-pg-cluster # 自动匹配上面的集群
ports:
- port: 5432
targetPort: 5432