sql >> データベース >  >> RDS >> PostgreSQL

mkdir / mnt / data:読み取り専用ファイルシステムバックオフの再起動に失敗したpostgresコンテナ

    永続ボリューム type: localを使用しています これは、/mntにディレクトリを作成することを意味します 。ローカルでは、動的ボリュームプロビジョニング もサポートされていません。 。いずれかのノードにSSHで接続する場合、このフォルダーはReadOnly file systemであることがわかります。 。

    / mnt $ mkdirsomethingmkdir:ディレクトリ「something」を作成できません:読み取り専用ファイルシステム

    最速の回避策として、PVYAMLを変更することができます

        - ReadWriteMany
      hostPath:
        path: /mnt/data
    

    宛先:

        - ReadWriteMany
      hostPath:
        path: /var/lib/data
    

    例:

    $ kubectl apply -f pv-pvc.yaml
    persistentvolume/postgres-pv-volume created
    persistentvolumeclaim/postgres-pv-claim created
    $ kubectl apply -f pos.yaml
    deployment.apps/postgres created
    $ kubectl get po
    NAME                        READY   STATUS    RESTARTS   AGE
    postgres-65d9cbd495-pcqf5   1/1     Running   0          2s
    
    $ kubectl exec -ti postgres-65d9cbd495-pcqf5 -- /bin/bash
    [email protected]:/# cd /var/lib/postgresql/data
    [email protected]:/var/lib/postgresql/data# ls
    base    pg_commit_ts  pg_hba.conf    pg_logical    pg_notify    pg_serial     pg_stat      pg_subtrans  pg_twophase  pg_wal   postgresql.auto.conf  postmaster.opts
    global  pg_dynshmem   pg_ident.conf  pg_multixact  pg_replslot  pg_snapshots  pg_stat_tmp  pg_tblspc    PG_VERSION   pg_xact  postgresql.conf       postmaster.pid
    [email protected]:/var/lib/postgresql/data# echo "Hello from postgress pod" > data.txt
    [email protected]:/var/lib/postgresql/data# cat data.txt
    Hello from postgress pod
    

    これで、このポッドをホストしているノードにSSHで接続すると、このフォルダーとファイルにアクセスできるようになります。

    [email protected] ~ $ sudo su
    gke-cluster-1-default-pool-463f9615-gxhl /home/user # cd /var/lib/data
    gke-cluster-1-default-pool-463f9615-gxhl /var/lib/data # ls
    PG_VERSION    pg_dynshmem    pg_notify     pg_stat_tmp  pg_xact
    base          pg_hba.conf    pg_replslot   pg_subtrans  postgresql.auto.conf
    data.txt      pg_ident.conf  pg_serial     pg_tblspc    postgresql.conf
    global        pg_logical     pg_snapshots  pg_twophase  postmaster.opts
    pg_commit_ts  pg_multixact   pg_stat       pg_wal       postmaster.pid
    gke-cluster-1-default-pool-463f9615-gxhl /var/lib/data # cat data.txt 
    Hello from postgress pod
    

    編集

    私が使用したYAML。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: postgres-config
      labels:
        app: postgres
    data:
      POSTGRES_DB: postgresdb
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: root
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: postgres
      labels:
        app: postgres
    spec:
      type: NodePort
      selector:
        app: postgres
      ports:
      - name: postgres
        port: 5432
        nodePort: 30432
    ---
    kind: PersistentVolume
    apiVersion: v1
    metadata:
      name: postgres-pv-volume
      labels:
        app: postgres
        type: local
    spec:
      storageClassName: manual
      capacity:
        storage: 5Gi
      accessModes:
        - ReadWriteMany
      hostPath:
        path: /var/lib/data
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: postgres-pv-claim
      labels:
        app: postgres
    spec:
      storageClassName: manual
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 5Gi
    ---
    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:latest
              imagePullPolicy: "IfNotPresent"
              envFrom:
                - configMapRef:
                    name: postgres-config
              volumeMounts:
                - mountPath: /var/lib/postgresql/data
                  name: postgredb
          volumes:
            - name: postgredb
              persistentVolumeClaim:
                claimName: postgres-pv-claim
                
    configmap/postgres-config created
    service/postgres created
    persistentvolume/postgres-pv-volume created
    persistentvolumeclaim/postgres-pv-claim created
    deployment.apps/postgres created
    
    $ kubectl get po
    NAME                        READY   STATUS    RESTARTS   AGE
    postgres-65d9cbd495-wxx4h   1/1     Running   0          19s
    



    1. Laravel5.1のデータベースでテーブルリストを取得する方法

    2. 見つからない場合は行を挿入する、または見つかった場合は更新するMySQLの良い方法

    3. phppdoはmysqlから1つの値のみを取得します。変数に等しい値

    4. SQLの日付形式:スマートな方法で処理する方法