上周在机顶盒上部署了一套k3s集群,由于两个机顶盒都只有8G的EMMC,所以我想要把刷了DWRT固件的京东云路由器的256G存储空间作为SMB共享给集群使用,从创建SC、创建PVC,部署Deployment,一切都很顺利,但是我部署的两个项目,一个Alist,一个QD框架,在使用localstorage时都能正常运行,而使用SMB共享时都会起不来
查看日志都是sqlite3无法写database.db文件,于是我另外部署了一个sqlite3的Deployment,进入pod排查
touch testfile
echo “test” > testfile
cat testfile
文件可以正常创建、写入和读取,但使用sqlite3创建data.db、创建表却会报错
sqlite3 data.db
create table test (id integer primary key, name text);
insert into test (name) values ('Alice');
insert into test (name) values ('Bob');
select * from test;
Error: unable to open database "data.db": unable to open database file
困扰了一周,还是没能解决,现在先使用localstorage,等过段时间再回来看看😓
安装 csi-driver-smb
# 添加 Helm 仓库:
helm repo add csi-driver-smb https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts
helm repo update
# 安装 csi-driver-smb:
helm install csi-driver-smb csi-driver-smb/csi-driver-smb --namespace kube-system
# 检查 csi-smb-controller 和 csi-smb-node 的日志
kubectl logs -n kube-system -l app=csi-smb-controller
kubectl logs -n kube-system -l app=csi-smb-node
smb-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: smb-secret
namespace: gutf
stringData:
username: "guest"
password: ""
smb-storageclass.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: smb
provisioner: smb.csi.k8s.io
parameters:
source: "//192.168.123.1/mmcblk0p24"
csi.storage.k8s.io/node-stage-secret-name: "smb-secret"
csi.storage.k8s.io/node-stage-secret-namespace: "gutf"
csi.storage.k8s.io/node-publish-secret-name: "smb-secret"
csi.storage.k8s.io/node-publish-secret-namespace: "gutf"
reclaimPolicy: Retain # only retain is supported
volumeBindingMode: Immediate
mountOptions:
- dir_mode=0777
- file_mode=0777
- uid=1000
- gid=1000
- vers=3.0
smb-pvc.yaml
apiVersion: v1
kind: Secret
metadata:
name: smb-secret
namespace: gutf
stringData:
username: "guest"
password: ""
root@k3s-master-octupos:/opt/testsmb# cat smb-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: smb-pvc
namespace: gutf
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
storageClassName: smb
sqlite3-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: sqlite3-test
namespace: gutf
spec:
replicas: 1
selector:
matchLabels:
app: sqlite3-test
template:
metadata:
labels:
app: sqlite3-test
spec:
securityContext:
fsGroup: 1000 # 设置文件系统组
initContainers:
- name: init-permissions
image: busybox:1.32.0-uclibc
command: ["sh", "-c", "chown -R 1000:1000 /data && chmod -R 777 /data"]
volumeMounts:
- mountPath: /data
name: smb-volume
containers:
- name: sqlite3
image: keinos/sqlite3
securityContext:
runAsUser: 1000 # 设置运行用户
runAsGroup: 1000 # 设置运行组
command: ["sh", "-c", "while true; do sleep 3600; done"]
volumeMounts:
- mountPath: /data
name: smb-volume
volumes:
- name: smb-volume
persistentVolumeClaim:
claimName: smb-pvc
阅读量
loading...