Python3.11无法打开文件 [Errno 2] 没有这样的文件或目录
我在我的定时任务(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}