1、创建pv

vi pgsql-data-pv.yaml
---
kind: PersistentVolume
apiVersion: v1
metadata:
    name: pgsqlpv0001
    labels:
      type: hostpath
spec:
    capacity:
      storage: 5Gi
    accessModes:
    - ReadWriteMany
    hostPath:
      path: "/root/k8s/pgsql/data"

2、创建pvc

vi pgsql-data-pvc.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
    name: pv-postgres
spec:
    accessModes: [ "ReadWriteMany" ]
    resources:
      requests:
        storage: 2Gi

3、创建pgsql deployment

vi postgres-deploy.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgres
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgres
  template:
    metadata:
      labels:
        app: postgres
    spec:
      containers:
        - name: postgres
          image: postgres:10.4
          imagePullPolicy: "IfNotPresent"
          ports:
            - containerPort: 5432
          env:
            - name: PGDATA
              value: /var/lib/postgresql/data/pgdata
            - name: POSTGRES_USER
              value: postgres
            - name: POSTGRES_DATABASE
              value: postgres
            - name: POSTGRES_PASSWORD
              value: "123456"
            - name: POSTGRES_ROOT_PASSWORD
              value: "123456"
          volumeMounts:
            - mountPath: /var/lib/postgresql/data
              name: postgredb
      volumes:
        - name: postgredb
          persistentVolumeClaim:
            claimName: pv-postgres

4、创建NodePort端口暴露

vi pgsql-nodeport.yaml
---
apiVersion: v1
kind: Service
metadata:
  name: postgres-service
spec:
  type: NodePort
  selector:
    app: postgres
  ports:
      # By default and for convenience, the `targetPort` is set to the same value as the `port` field.
    - port: 5432
      targetPort: 5432
      # Optional field
      # By default and for convenience, the Kubernetes control plane will allocate a port from a range (default: 30000-32767)
      nodePort: 30432

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐