Permissions

如何在具有非 root 使用者權限的 Kubernetes pod 中掛載 azurefile persistentVolume?

  • November 2, 2021

我在 Azure 上執行 Kubernetes 1.8.4 集群(填充了 acs-engine v0.10)。

我需要執行具有數據持久性的 Redis pod,因此我將 persistentVolume / persistentVolumeClaim 與azurefilestorageClass 一起使用,以便 Redis 可以保存到該卷。

問題是 Redis 容器正在使用 redis:redis 使用者執行,並且 Kubernetes 使用 root:root 所有權和 0700 訪問模式安裝卷。

=> 所以 Redis 無法寫入該卷並死掉。

通常我會用 mountOptions 解決這個問題,但我擔心根據Kubernetes 文件,AzureFiles 不支持此選項:

注意:並非所有持久卷類型都支持掛載選項。

有沒有人設法在具有非 root 訪問權限的 Kubernetes pod 中安裝 AzureFiles 卷?如果是這樣,我很想知道如何:-)

蒂亞!

在查看了這篇關於CloudBees 的博文後,發現 azurefile支持mountOptions,只是我需要創建一個專用的 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"

Azure 的替代解決方案是將 azurefile 掛載為持久卷聲明。 https://docs.microsoft.com/en-us/azure/aks/azure-files-volume#mount-file-share-as-an-persistent-volume

uid, gid可以傳遞文件系統權限(0777)。

就個人而言,嘗試過並且測試過!

引用自:https://serverfault.com/questions/888096