亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

pg operator原生additionalVolumes實現

2023-05-25 09:08:18
18
0
實現過程
postgres-operator支持在postgresqls cr中定義additionalVolumes,用于為pod中指定容器的指定路徑做獨立掛載,詳細使用如下:
apiVersion: acid.zalan.do/v1
kind: postgresql
metadata:
  name: pg1
  namespace: po
spec:
  ...
  volume:
    size: 1Gi
    storageClass: local-path
  additionalVolumes:
    - name: log
      mountPath: /home/postgres/pgdata/pgroot/pg_log    #容器內掛載路徑
      targetContainers:
        - postgres
      volumeSource:
        PersistentVolumeClaim:
          claimName: pg-log
          readyOnly: false
     其中volumnSource就是通用的hostpath、emptydir、網絡存儲、配置文件、pvc等,不包括指定storageclass;
     以上使用pvc方式實現分目錄掛載前提就是預先創建pvc;
     operator內部實現additionalVolumes的處理在generateStatefulSet->generatePodTemplate,具體細節如下:
     如果postgres CR中additionalVolumes不為空,那么operator對additionalVolumes中每一層進行以下解析:
                如果mountpath是/home/postgres/pgdata,那么略過該掛載;(pgdata默認用postgresqls cr中spec.volume下的配置)
                如果targetContainers是空,那么默認選擇postgres容器;
                如果targetContainers是all,表示掛載適用于所有容器(包括postgres  sidecar  exporter等);
                此外targetContainers還可以配置多個容器,但該方式與配置為all互斥;
          將additionalVolumes中name及volumnsource配置生成到podTemplate/spec/volumns下;
          將additionalVolumes中name及mountPath組成VolumeMounts結構,生成到指定container的volumeMounts中;
 
       實際創建集群后, 反映在sts中如下:
kind: StatefulSet
apiVersion: apps/v1
metadata:
  name: pg1
  namespace: po
spec:
    ......
    spec:
      volumes:
        - name: dshm
          emptyDir:
            medium: Memory
        - name: log
          persistentVolumeClaim:
            claimName: pg-log
      containers:
        - name: postgres
          image: spilo-14:2.1-p4
          ......
          volumeMounts:
            - name: pgdata
              mountPath: /home/postgres/pgdata
            - name: dshm
              mountPath: /dev/shm
            - name: log
              mountPath: /home/postgres/pgdata/pgroot/pg_log
          terminationMessagePath: /dev/termination-log
          ......
  volumeClaimTemplates:
    - kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: pgdata
        creationTimestamp: null
        annotations:
          volume.beta.kubernetes.io/storage-class: local-path
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 1Gi
        storageClassName: local-path
        volumeMode: Filesystem
      status:
        phase: Pending
    ......
使用效果
通過additionalVolumes的配置可以實現容器內指定路徑使用指定pvc,從而實現分盤掛載,如下所示
PS C:\WINDOWS\system32> kubectl get pvc -n po
NAME           STATUS   VOLUME                                     CAPACITY        ACCESS MODES   STORAGECLASS   AGE
pg-log         Bound    pvc-df13c2e3-6b17-466d-b780-98cd1b0a8272   322122547200m   RWX            standard       54m
pgdata-pg1-0   Bound    pvc-bfaedb3a-04b9-4218-a397-1308d7d5caa5   1Gi             RWO            local-path     54m

比如以上將數據主目錄使用localpath方式掛載到主機/opt/local-path-provisioner:

# ls /tmp/hostpath-provisioner/po/pg-log/
postgresql-0.csv  postgresql-2.csv  postgresql-3.csv  postgresql-5.csv    postgresql-7.csv
postgresql-1.csv  postgresql-2.log  postgresql-4.csv  postgresql-6.csv
注意點:
    數據主目錄由于默認掛載的容器內/home/postgres/pgdata,而pg_log是主目錄的一個子目錄,所以主目錄在主機的掛載路徑中,也是有pg_log這個目錄的,只是該目錄為空,實際pg_log內容在其單獨掛載pv中。
0條評論
0 / 1000
z****n
5文章數
0粉絲數
z****n
5 文章 | 0 粉絲
原創

pg operator原生additionalVolumes實現

2023-05-25 09:08:18
18
0
實現過程
postgres-operator支持在postgresqls cr中定義additionalVolumes,用于為pod中指定容器的指定路徑做獨立掛載,詳細使用如下:
apiVersion: acid.zalan.do/v1
kind: postgresql
metadata:
  name: pg1
  namespace: po
spec:
  ...
  volume:
    size: 1Gi
    storageClass: local-path
  additionalVolumes:
    - name: log
      mountPath: /home/postgres/pgdata/pgroot/pg_log    #容器內掛載路徑
      targetContainers:
        - postgres
      volumeSource:
        PersistentVolumeClaim:
          claimName: pg-log
          readyOnly: false
     其中volumnSource就是通用的hostpath、emptydir、網絡存儲、配置文件、pvc等,不包括指定storageclass;
     以上使用pvc方式實現分目錄掛載前提就是預先創建pvc;
     operator內部實現additionalVolumes的處理在generateStatefulSet->generatePodTemplate,具體細節如下:
     如果postgres CR中additionalVolumes不為空,那么operator對additionalVolumes中每一層進行以下解析:
                如果mountpath是/home/postgres/pgdata,那么略過該掛載;(pgdata默認用postgresqls cr中spec.volume下的配置)
                如果targetContainers是空,那么默認選擇postgres容器;
                如果targetContainers是all,表示掛載適用于所有容器(包括postgres  sidecar  exporter等);
                此外targetContainers還可以配置多個容器,但該方式與配置為all互斥;
          將additionalVolumes中name及volumnsource配置生成到podTemplate/spec/volumns下;
          將additionalVolumes中name及mountPath組成VolumeMounts結構,生成到指定container的volumeMounts中;
 
       實際創建集群后, 反映在sts中如下:
kind: StatefulSet
apiVersion: apps/v1
metadata:
  name: pg1
  namespace: po
spec:
    ......
    spec:
      volumes:
        - name: dshm
          emptyDir:
            medium: Memory
        - name: log
          persistentVolumeClaim:
            claimName: pg-log
      containers:
        - name: postgres
          image: spilo-14:2.1-p4
          ......
          volumeMounts:
            - name: pgdata
              mountPath: /home/postgres/pgdata
            - name: dshm
              mountPath: /dev/shm
            - name: log
              mountPath: /home/postgres/pgdata/pgroot/pg_log
          terminationMessagePath: /dev/termination-log
          ......
  volumeClaimTemplates:
    - kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: pgdata
        creationTimestamp: null
        annotations:
          volume.beta.kubernetes.io/storage-class: local-path
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 1Gi
        storageClassName: local-path
        volumeMode: Filesystem
      status:
        phase: Pending
    ......
使用效果
通過additionalVolumes的配置可以實現容器內指定路徑使用指定pvc,從而實現分盤掛載,如下所示
PS C:\WINDOWS\system32> kubectl get pvc -n po
NAME           STATUS   VOLUME                                     CAPACITY        ACCESS MODES   STORAGECLASS   AGE
pg-log         Bound    pvc-df13c2e3-6b17-466d-b780-98cd1b0a8272   322122547200m   RWX            standard       54m
pgdata-pg1-0   Bound    pvc-bfaedb3a-04b9-4218-a397-1308d7d5caa5   1Gi             RWO            local-path     54m

比如以上將數據主目錄使用localpath方式掛載到主機/opt/local-path-provisioner:

# ls /tmp/hostpath-provisioner/po/pg-log/
postgresql-0.csv  postgresql-2.csv  postgresql-3.csv  postgresql-5.csv    postgresql-7.csv
postgresql-1.csv  postgresql-2.log  postgresql-4.csv  postgresql-6.csv
注意點:
    數據主目錄由于默認掛載的容器內/home/postgres/pgdata,而pg_log是主目錄的一個子目錄,所以主目錄在主機的掛載路徑中,也是有pg_log這個目錄的,只是該目錄為空,實際pg_log內容在其單獨掛載pv中。
文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0