参考文档:
https://blog.csdn.net/weixin_39750084/article/details/136349711 (主要)
https://blog.csdn.net/qq_14910065/article/details/135351830
创建资源文件 vim postgres.yaml,内容如下:
1apiVersion: v1
2kind: Namespace
3metadata:
4 name: postgres-dev
5---
6apiVersion: v1
7kind: ConfigMap
8metadata:
9 name: postgres-config
10 namespace: postgres-dev
11 labels:
12 app: postgres
13data:
14 POSTGRES_DB: test
15 POSTGRES_USER: root
16 POSTGRES_PASSWORD: "123456"
17---
18kind: PersistentVolume
19apiVersion: v1
20metadata:
21 name: postgres-pv
22 labels:
23 app: postgres
24spec:
25 storageClassName: postgres-sc
26 capacity:
27 storage: 10Gi
28 accessModes:
29 - ReadWriteMany
30 volumeMode: Filesystem
31 hostPath:
32 path: "/home/zhangcong/dev/postgres-data"
33---
34kind: PersistentVolumeClaim
35apiVersion: v1
36metadata:
37 name: postgres-pvc
38 namespace: postgres-dev
39 labels:
40 app: postgres
41spec:
42 storageClassName: postgres-sc
43 accessModes:
44 - ReadWriteMany
45 resources:
46 requests:
47 storage: 10Gi
48---
49apiVersion: apps/v1
50kind: Deployment
51metadata:
52 name: postgres-deployment
53 namespace: postgres-dev
54spec:
55 strategy:
56 type: Recreate
57 selector:
58 matchLabels:
59 app: postgres
60 replicas: 1
61 template:
62 metadata:
63 labels:
64 app: postgres
65 spec:
66 containers:
67 - name: postgres
68 image: postgres:15.6
69 imagePullPolicy: "IfNotPresent"
70 ports:
71 - containerPort: 5432
72 envFrom:
73 - configMapRef:
74 name: postgres-config
75 volumeMounts:
76 - mountPath: /var/lib/postgresql/data
77 name: postgredb
78 volumes:
79 - name: postgredb
80 persistentVolumeClaim:
81 claimName: postgres-pvc
82---
83apiVersion: v1
84kind: Service
85metadata:
86 name: postgres-service
87 namespace: postgres-dev
88 labels:
89 app: postgres
90spec:
91 type: NodePort
92 ports:
93 - port: 5432
94 targetPort: 5432
95 nodePort: 30076
96 protocol: TCP
97 selector:
98 app: postgres
说明:
ConfigMap中保存的是初始化时创建的数据库、用户名和密码,之后可以通过 命令 psql -U root -h 192.168.0.91 -p 30076 test 连接;当然也可以通过数据库工具连接
建议在创建pvc、pv时指定 storageClassName,否则数据库持久化时,可能不知道文件存到哪儿去了
应用资源文件:
1[zhangcong@master k8s]$ kubectl apply -f postgres.yaml
2namespace/postgres-dev created
3configmap/postgres-config created
4persistentvolume/postgres-pv created
5persistentvolumeclaim/postgres-pvc created
6deployment.apps/postgres-deployment created
7service/postgres-service created
评论