Смонтировать том в существующем каталоге, содержащем файлы в k8s

#kubernetes-pod #persistent-volumes

Вопрос:

Я пытаюсь настроить развертывание с постоянным томом. файлы конфигураций теряются после монтирования. чтобы решить эту проблему, я обновил образ докера для хранения файлов в другом месте, и при создании модуля файлы будут скопированы с помощью скрипта

 apiVersion: apps/v1
kind: Deployment
metadata:
  name: oracledb
  labels:
    app: oracledb
spec:
  selector:
    matchLabels:
      app: oracledb
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: oracledb
    spec:
      containers:
      - env:
        - name: DB_SID
          value: ORCLCDB
        - name: DB_PDB
          value: pdb
        - name: DB_PASSWD
          value: pwd
        - name: DB_DOMAIN
          value: local
        - name: DB_BUNDLE
          value: basic
        image: oracledb
        imagePullPolicy: IfNotPresent
        name: oracledb
 

#без спящего командного поста стартовый крюк вышел со 126

         command: ['sh', '-c', ' sleep 600']
        lifecycle:
          postStart:
            exec:
              command: ['sh', '-c', 'sleep 10 ; /opt/poststart.sh']
        ports:
        - containerPort: 1521
          name: sqlnet
          protocol: TCP
        readinessProbe:
          failureThreshold: 3
          initialDelaySeconds: 2
          periodSeconds: 2
          successThreshold: 1
          tcpSocket:
            port: 1521
          timeoutSeconds: 1
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /opt/oracle/oradata
          name: oradata
        - mountPath: /opt/poststart.sh
          subPath: poststart.sh
          name: hookvolume
      dnsPolicy: ClusterFirst
      imagePullSecrets:
      - name: regsecret
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext:
        fsGroup: 54321
        runAsUser: 54321
      terminationGracePeriodSeconds: 30
      volumes:
      - name: oradata
        persistentVolumeClaim:
          claimName: oradata
      - name: hookvolume
        configMap:
          name: poststarthook
          defaultMode: 0777
---
kind: ConfigMap
apiVersion: v1
metadata:
  name: poststarthook
data:
  poststart.sh: |
    #!/bin/sh
    while [ ! -d /opt/oracle/files ];
    do
      sleep 1
    done
    if [ ! -d "/opt/oracle/oradata/ORCLCDB" ]; then
      cp -rp /opt/oracle/files/. /opt/oracle/oradata;
    fi
 

таким образом, без спящего командного поста стартовый крючок вышел со 126:

 9m20s       Normal    Started                  pod/oracledb-55f69b7644-2s86w    Started container oracledb
9m20s       Warning   FailedPostStartHook      pod/oracledb-55f69b7644-2s86w    Exec lifecycle hook ([sh -c sleep 10 ; /opt/poststart.sh]) for Container "oracledb" in Pod "oracledb-55f69b7644-2s86w_ds-persist(fe8f63e0-a9c6-4688-a926-e2d7ef07ab5c)" failed - error: command 'sh -c sleep 10 ; /opt/poststart.sh' exited with 126: , message: "cannot exec in a stopped state: unknownrn"
9m20s       Normal    Killing                  pod/oracledb-55f69b7644-2s86w    FailedPostStartHook
4m55s       Warning   BackOff                  pod/oracledb-55f69b7644-2s86w    Back-off restarting failed container
 

and when I add it as mentioned in the yaml file, the pod remains Running 0/1

 NAME                        READY   STATUS    RESTARTS   AGE
oracledb-56f94f7b8f-8j8gg   0/1     Running   39         6h31m

Events:
  Type     Reason     Age                      From                      Message
  ----     ------     ----                     ----                      -------
  Warning  Unhealthy  52s (x11668 over 6h30m)  kubelet  Readiness probe failed: dial tcp :1521: connect: connection refused
 

any solutions or suggestions please to resolve the issues
either the copy approach / the exited 126 or status