Docker 从pods访问CIFS文件
我们有一个docker映像,它正在samba共享上处理一些文件 为此,我们创建了一个cifs共享,该共享装载到/mnt/dfs,并且可以通过以下方式访问容器中的文件:Docker 从pods访问CIFS文件,docker,kubernetes,samba,cifs,Docker,Kubernetes,Samba,Cifs,我们有一个docker映像,它正在samba共享上处理一些文件 为此,我们创建了一个cifs共享,该共享装载到/mnt/dfs,并且可以通过以下方式访问容器中的文件: docker run -v /mnt/dfs/project1:/workspace image 现在我要做的是将容器放入k8s中,并使用FlexVolume从pod访问cifs共享。可以使用cifs卷驱动程序。这就是一些问题出现的地方 我将此repo安装为守护程序 它已经启动并运行了 apiVersion: apps/v1 k
docker run -v /mnt/dfs/project1:/workspace image
现在我要做的是将容器放入k8s中,并使用FlexVolume从pod访问cifs共享。可以使用cifs卷驱动程序。这就是一些问题出现的地方
我将此repo安装为守护程序
它已经启动并运行了
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: cifs-volumedriver-installer
spec:
selector:
matchLabels:
app: cifs-volumedriver-installer
template:
metadata:
name: cifs-volumedriver-installer
labels:
app: cifs-volumedriver-installer
spec:
containers:
- image: juliohm/kubernetes-cifs-volumedriver-installer:2.4
name: flex-deploy
imagePullPolicy: Always
securityContext:
privileged: true
volumeMounts:
- mountPath: /flexmnt
name: flexvolume-mount
volumes:
- name: flexvolume-mount
hostPath:
path: /usr/libexec/kubernetes/kubelet-plugins/volume/exec/
接下来要做的事情是添加一个PeristentVolume,但这需要一个容量,在本例中为1Gi。这是否意味着我们会丢失smb服务器上的所有数据?为什么要为已经存在的服务器提供容量
另外,我们如何从pod中访问mount/mnt/dfs的子目录?那么如何从pod中的/mnt/dfs/project1访问数据呢
我们需要PV吗?pod可以读取主机的挂载共享吗
apiVersion: v1
kind: PersistentVolume
metadata:
name: mycifspv
spec:
capacity:
storage: 1Gi
flexVolume:
driver: juliohm/cifs
options:
opts: sec=ntlm,uid=1000
server: my-cifs-host
share: /MySharedDirectory
secretRef:
name: my-secret
accessModes:
- ReadWriteMany
不,该字段对链接的FlexVol插件没有影响。它甚至不需要解析您传入的大小:不,该字段对您链接的FlexVol插件没有影响。它甚至不需要解析您传入的大小:设法让它与fstab/cifs插件一起工作 将其cifs脚本复制到/usr/libexec/kubernetes/kubelet plugins/volume/exec,并授予其执行权限。同时在所有节点上重新启动kubelet 然后补充说
containers:
- name: pablo
image: "10.203.32.80:5000/pablo"
volumeMounts:
- name: dfs
mountPath: /data
volumes:
- name: dfs
flexVolume:
driver: "fstab/cifs"
fsType: "cifs"
secretRef:
name: "cifs-secret"
options:
networkPath: "//dfs/dir"
mountOptions: "dir_mode=0755,file_mode=0644,noperm"
现在容器中有了指向//dfs/dir的/data挂载,该挂载通过fstab/cifs插件实现 将其cifs脚本复制到/usr/libexec/kubernetes/kubelet plugins/volume/exec,并授予其执行权限。同时在所有节点上重新启动kubelet 然后补充说
containers:
- name: pablo
image: "10.203.32.80:5000/pablo"
volumeMounts:
- name: dfs
mountPath: /data
volumes:
- name: dfs
flexVolume:
driver: "fstab/cifs"
fsType: "cifs"
secretRef:
name: "cifs-secret"
options:
networkPath: "//dfs/dir"
mountOptions: "dir_mode=0755,file_mode=0644,noperm"
现在容器中有了指向//dfs/dir的/data挂载