在具有1个主节点和3个节点的Kubernetes集群以及单机Kubernetes上也会发生以下问题。

我通过flexvolume smb支持(https://github.com/Azure/kubernetes-volume-drivers/tree/master/flexvolume/smb)设置了Kubernetes。当我使用flexvolume应用新的pod时,Node将按预期方式安装smb共享。但是Pod会将他的共享指向Node上的某个docker目录。

我的安装:

  • 最新的CentOS 7
  • 最新的Kubernetes v1.14.0
    (https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/)
  • 禁用SELinux并禁用防火墙
  • Docker 1.13.1
  • jq和cifs-utils
  • https://raw.githubusercontent.com/Azure/kubernetes-volume-drivers/master/flexvolume/smb/deployment/smb-flexvol-installer/smb安装到/usr/libexec/kubernetes/kubelet-plugins/volume/exec/microsoft.com~smb和可执行文件

  • 用以下方式创建Pod

    smb-secret.yaml
    apiVersion: v1
    kind: Secret
    metadata:
      name: smb-secret
    type: microsoft.com/smb
    data:
      username: YVVzZXI=
      password: YVBhc3N3b3Jk
    

    nginx-flex-smb.yaml
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-flex-smb
    spec:
      containers:
      - name: nginx-flex-smb
        image: nginx
        volumeMounts:
        - name: test
          mountPath: /data
      volumes:
      - name: test
        flexVolume:
          driver: "microsoft.com/smb"
          secretRef:
            name: smb-secret
          options:
            source: "//<host.with.smb.share>/kubetest"
            mountoptions: "vers=3.0,dir_mode=0777,file_mode=0777"
    

    怎么了
  • Node上的挂载点在/var/lib/kubelet/pods/bef26895-5ac7-11e9-a668-00155db9c92e/volumes/microsoft.com~smb上创建。
  • mount返回//<host.with.smb.share>/kubetest on /var/lib/kubelet/pods/bef26895-5ac7-11e9-a668-00155db9c92e/volumes/microsoft.com~smb/test type cifs (rw,relatime,vers=3.0,cache=strict,username=aUser,domain=,uid=0,noforceuid,gid=0,noforcegid,addr=172.27.72.43,file_mode=0777,dir_mode=0777,soft,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1)
  • 读取和写入在主机上以及在节点本身上按预期工作
  • pod上的


  • / data的
  • mount指向tmpfs on /data type tmpfs (rw,nosuid,nodev,seclabel,size=898680k,nr_inodes=224670,mode=755)
  • ,但目录/ data的内容来自节点上的/run/docker/libcontainerd/8039742ae2a573292cd9f4ef7709bf7583efd0a262b9dc434deaf5e1e20b4002/

  • 我试图用PersistedVolumeClaime安装Pod,并得到同样的问题。寻找这个问题没有解决方案。

    我们的其他Pod使用GlusterFS和heketi,效果很好。

    可能是配置失败?缺少什么?

    编辑:解决方案
    我将Docker升级到最新的经过验证的版本18.06,现在一切正常。

    最佳答案

    我将Docker升级到最新的经过验证的版本18.06,现在一切正常。

    按照Get Docker CE for CentOS上的说明进行安装。

    关于kubernetes - 配置带有CIF的flexvolume时,Pod在Node上安装错误目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55594354/

    10-15 22:15