【问题标题】:Accessing CIFS files from pods从 pod 访问 CIFS 文件
【发布时间】:2021-05-21 07:33:27
【问题描述】:

我们有一个 docker 映像正在处理 samba 共享上的一些文件。

为此,我们创建了一个挂载到 /mnt/dfs 的 cifs 共享,并且可以通过以下方式在容器中访问文件:

docker run -v /mnt/dfs/project1:/workspace image

现在我要做的是将容器放入 k8s 并从 pod 访问 cifs 共享,可以使用 cifs Volume 驱动程序使用 FlexVolume。这就是弹出一些问题的地方。

我将此 repo 安装为守护程序集

https://k8scifsvol.juliohm.com.br/

它已经启动并运行了。

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

【问题讨论】:

    标签: docker kubernetes samba cifs


    【解决方案1】:

    不,该字段对您链接的 FlexVol 插件没有影响。它甚至不用解析你传入的大小:)

    【讨论】:

      【解决方案2】:

      设法让它与 fstab/cifs 插件一起工作。

      将其 cifs 脚本复制到 /usr/libexec/kubernetes/kubelet-plugins/volume/exec 并赋予其执行权限。同时在所有节点上重启 kubelet。

      https://github.com/fstab/cifs

      然后添加

       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"
      

      现在容器内的 /data 挂载指向 //dfs/dir

      【讨论】:

        猜你喜欢
        • 2018-11-16
        • 1970-01-01
        • 2018-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-07
        • 2021-11-19
        • 1970-01-01
        相关资源
        最近更新 更多