创建命名空间
apiVersion: v1
kind: Namespace
metadata:
name: postgres
创建ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
name: postgres
namespace: postgres
labels:
app: postgres
data:
POSTGRES_DATABASE: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_ROOT_PASSWORD: postgres
创建存储PV
apiVersion: v1
kind: PersistentVolume
metadata:
name: postgres-pv
spec:
capacity:
storage: 4Gi
accessModes:
- ReadWriteOnce
storageClassName: nfs
persistentVolumeReclaimPolicy: Retain
nfs:
path: /home/.k8s/data
server: 10.89.35.19
创建存储挂载PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-pvc
namespace: postgres
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 4Gi
storageClassName: nfs
创建Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: postgres
name: postgres
namespace: postgres
spec:
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
containers:
- image: postgres:13.2
name: postgres
envFrom:
- configMapRef:
name: postgres
ports:
- containerPort: 5432
name: postgredb
volumeMounts:
- name: postgres
mountPath: /var/lib/postgresql/data
subPath: postgres
volumes:
- name: postgres
persistentVolumeClaim:
claimName: postgres-pvc
创建Service
apiVersion: v1
kind: Service
metadata:
name: postgres
namespace: postgres
labels:
app: postgres
spec:
type: NodePort
selector:
app: postgres
ports:
- port: 5432
targetPort: 5432
nodePort: 30201
将yaml文件配置,按顺序放在同一文件中postgresql-k8s.yaml
执行kubectl apply -f postgresql-k8s.yaml