[英]PermissionError: [Errno 1] Operation not permitted: 'file.txt' -> 'symlink.txt' while using os.symlink
我正在使用helm charts
在本地集群minikube
中部署我的 kubernetes 應用程序。 我能夠掛載/home/$USER/log
目錄,並通過使用 shell 命令在掛載目錄中創建和修改文件來進行驗證。
#touch /log/a
# ls
a delete.cpp dm
但是當我使用 python 創建符號鏈接時,它失敗了。
>>> import os
>>> os.symlink("delete.cpp", "b")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
PermissionError: [Errno 1] Operation not permitted: 'delete.cpp' -> 'b'
知道為什么符號鏈接不起作用。
我可以在不同的目錄中使用相同的代碼
在我使用的 minikube 中掛載主機目錄
minikube mount ~/log:/log
我的部署腳本如下所示
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
template:
metadata:
labels:
app: my-app
spec:
volumes:
- name: log-dir
hostPath:
path: /log
containers:
- name: my-app
image: my-image
imagePullPolicy: never #It's local image
volumeMounts:
- name: log-dir
mountPath: /log
command: [ "/bin/bash", "-ce", "./my_app_executing_symlink" ]
根據symlink(2)
上的 Linux 聯機幫助頁,當文件系統不支持符號鏈接時,您會收到該錯誤。
EPERM The filesystem containing linkpath does not support the
creation of symbolic links.
在minikube
安裝的情況下,這聽起來當然是可能的。
如果您使用的是 minikube,則可以使用 支持 hostPath的hostpath
持久卷在單節點集群上進行開發和測試。
示例用法:
apiVersion: v1
kind: PersistentVolume
metadata:
name: example-volume
labels:
type: local
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/data/log"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: example-volume
spec:
storageClassName: standard
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
---
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
volumes:
- name: pv0001
persistentVolumeClaim:
claimName: example-volume
containers:
- name: my-app
image: alpine
command: [ "/bin/sh", "-c", "sleep 10000" ]
volumeMounts:
- name: pv0001
mountPath: /log
成功部署后,您將能夠在/log
目錄中創建符號鏈接:
$ kubectl exec -it my-app -- /bin/sh
/log # touch a
/log # ln -s a pd
-rw-r--r-- 1 root root 0 Nov 25 17:49 a
lrwxrwxrwx 1 root root 1 Nov 25 17:49 pd -> a
如文檔中所述:
minikube 配置為持久保存存儲在以下目錄下的文件,這些目錄是在 Minikube VM 中創建的(如果在裸機上運行,則在您的本地主機上)。 重新啟動時,您可能會丟失其他目錄中的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.