如何使用非root用户权限在Kubernetes pod中挂载azurefile persistentVolume?

如何使用非root用户权限在Kubernetes pod中挂载azurefile persistentVolume?

我在 Azure 上运行 Kubernetes 1.8.4 集群(装有 acs-engine v0.10)。

我需要运行具有数据持久性的 Redis pod,因此我使用带有azurefilestorageClass 的 persistentVolume / persistentVolumeClaim,以便 Redis 可以保存到该卷。

问题在于 Redis 容器以 redis:redis 用户身份运行,并且 Kubernetes 以 root:root 所有权和 0700 访问模式挂载卷。

=> 因此 Redis 无法写入该卷并因此死亡。

通常我会用 mountOptions 来解决这个问题,但我担心 AzureFiles 不支持这个选项Kubernetes 文档

注意:并非所有持久卷类型都支持挂载选项。

有没有人曾经在非 root 访问权限下成功将 AzureFiles 卷挂载到 Kubernetes pod 中?如果有,我会知道如何:-)

短暂性失眠!

答案1

在回顾了这一天赐之物后CloudBees 博客文章,事实证明 mountOptions支持 azurefile,只是我需要创建一个专用的 StorageClass 并通过 PersistentVolumeClaim 使用它。

---
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: redis-sc
  annotations:
  labels:
    kubernetes.io/cluster-service: 'true'
provisioner: kubernetes.io/azure-file
parameters:
reclaimPolicy: 'Delete'
mountOptions:
  - "uid=999,gid=999"

答案2

Azure 提供的另一种解决方案是将 azurefile 作为持久卷声明挂载。 https://docs.microsoft.com/en-us/azure/aks/azure-files-volume#mount-file-share-as-an-persistent-volume

uid, gid以及文件系统权限都可以传递(0777)。

亲自尝试过并且测试过!

相关内容