Python3.11无法打开文件 [Errno 2] 没有这样的文件或目录

0 投票
1 回答
51 浏览
提问于 2025-04-12 05:40

我在我的定时任务(cronjob)配置文件中把readOnlyRootFilesystem: true更新了,但开始出现了这个错误:

OSError: [Errno 30] 只读文件系统: '/absolute/path/to/your/folder'

为了处理这个问题,我又添加了一个空目录,配置如下:

volumeMounts:
- name: tmp-volume
  mountPath: absolute/path/to/your/folder
volumes:
  • name: tmp-volume emptyDir: {}

添加这个后,我开始收到:

**python3.11: can't open file 'absolute/path/to/your/folder/text.py': [Errno 2] No such file or directory**

我已经附上了定时任务的配置文件:

           containers:
            - env:
              - name: ENV_VAR
                value: value
              - name: MAINTAIN_HA_POOL
                value: "true"
              - name: PROCESS_SCHEDULER_REQUESTS
                value: "true"
              - name: MAINTAIN_NODE_POOL
                value: "false"
              - name: ENABLE_LSV3
                value: "false"
              image: us.icr.io/nz-cloud/nzsaas-common-pool-cronjob:master-2.1.2.0-20240329-111245
              imagePullPolicy: Always
              name: common-machine-pool-cronjob-container
              resources: {}
              securityContext:
                privileged: true
                readOnlyRootFilesystem: true
              terminationMessagePath: /dev/termination-log
              terminationMessagePolicy: File
              volumeMounts:
              - mountPath: /opt/ibm/common-pool-cronjob/
                name: tmp-volume
            volumes:
            - emptyDir: {}
              name: tmp-volume  

顺便说一下,我已经给那个特定的文件夹设置了CHMOD 777权限。

1 个回答

0

接着我的评论,创建一个 emptyDir 会生成一个空文件夹。

在你能使用这个文件夹之前,需要在 emptyDir 指向的文件夹里创建一个 text.py 文件。

举个例子:

app.yaml:

kind: Deployment
apiVersion: apps/v1
metadata:
  name: app
  labels:
    app: test
spec:
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
      - name: test
        image: docker.io/alpine:3.19
        args:
        - /bin/sh
        - -c
        - |
          # The emptyDir volume's mount path
          DIR="/absolute/path/to/your/folder"
          # Some file
          FILE="text.py"
          echo "Starting"
          if ! test -f ${DIR}/${FILE}
          then
            echo "${FILE} does **not** exist"
          fi
          echo "Creating ${DIR}/${FILE}"
          touch ${DIR}/${FILE}
          if test -f ${DIR}/${FILE}
          then
            echo "${FILE} exists"
          fi
          echo "Done" 
        volumeMounts:
        - name: tmp-volume
          mountPath: /absolute/path/to/your/folder
      volumes:
      - name: tmp-volume
        emptyDir:
          sizeLimit: 1Mi

还有:

NAMESPACE="78244509"
kubectl create namespace ${NAMESPACE}

kubectl create \
--filename=./app.yaml \
--namespace=${NAMESPACE}

kubectl logs deployment/app \
--namespace=${NAMESPACE}

结果是:

Starting
Creating /absolute/path/to/your/folder/text.py
text.py exists
Done

还有:

kubectl delete \
--filename=./app.yaml \
--namespacpe=${NAMESPACE}

撰写回答