前提条件是已安装managed-nfs-storage,动态pv。
创建命名空间
apiVersion: v1
kind: Namespace
metadata:
name: test-ns
创建ConfigMap
kind: ConfigMap
apiVersion: v1
metadata:
name: postgresql
namespace: test-ns
annotations:
kubesphere.io/creator: admin
data:
POSTGRES_DATABASE: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_ROOT_PASSWORD: postgres
postgresql.conf: |
listen_addresses = '*'
max_connections = 1024
shared_buffers = 128MB
dynamic_shared_memory_type = posix
max_wal_size = 1GB
min_wal_size = 80MB
log_timezone = 'Etc/UTC'
datestyle = 'iso, mdy'
timezone = 'Etc/UTC'
lc_messages = 'en_US.utf8'
lc_monetary = 'en_US.utf8'
lc_numeric = 'en_US.utf8'
lc_time = 'en_US.utf8'
default_text_search_config = 'pg_catalog.english'
max_locks_per_transaction = 2048
创建有状态副本集StatefulSet
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: postgresql
namespace: test-ns
labels:
k8s-app: postgresql
spec:
serviceName: postgresql
replicas: 1
selector:
matchLabels:
k8s-app: postgresql
template:
metadata:
labels:
k8s-app: postgresql
spec:
containers:
- image: postgres:13.2
name: postgresql
envFrom:
- configMapRef:
name: postgresql
ports:
- containerPort: 5432
name: postgresql
volumeMounts:
- name: postgresql-pvc
mountPath: /var/lib/postgresql/data
volumeClaimTemplates:
- metadata:
name: postgresql-pvc
spec:
accessModes: ["ReadWriteMany"]
storageClassName: managed-nfs-storage
resources:
requests:
storage: 512Mi
创建访问Service
apiVersion: v1
kind: Service
metadata:
namespace: test-ns
labels:
app: postgresql
name: postgresql
spec:
selector:
k8s-app: postgresql
ports:
- name: postgresql-30201
protocol: TCP
targetPort: 5432
port: 5432
nodePort: 30201
type: NodePort
分别创建或集中在一个文件中创建,也可以用KubeSphere等工具执行yaml即可。
用DBeaver连接上去