首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有特定用户权限的Azure磁盘持久卷声明

具有特定用户权限的Azure磁盘持久卷声明
EN

Stack Overflow用户
提问于 2018-11-23 11:50:09
回答 1查看 2.3K关注 0票数 2

我正在尝试创建一个动态Azure磁盘卷,以便在具有特定权限要求的荚中使用。

容器472,因此我需要找到一种方法来挂载(至少)该用户的rw权限的卷。

定义了以下StorageClass

代码语言:javascript
复制
apiVersion: storage.k8s.io/v1
kind: StorageClass
provisioner: kubernetes.io/azure-disk
reclaimPolicy: Delete
volumeBindingMode: Immediate
metadata:
  name: foo-storage
mountOptions:
  - rw
parameters:
  cachingmode: None
  kind: Managed
  storageaccounttype: Standard_LRS

还有这个PVC

代码语言:javascript
复制
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: foo-storage
  namespace: foo
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: foo-storage
  resources:
    requests:
      storage: 1Gi

我可以在吊舱中运行以下命令:

代码语言:javascript
复制
containers:
  - image: ubuntu
    name: foo
    imagePullPolicy: IfNotPresent
    command:
      - ls
      - -l
      - /var/lib/foo
    volumeMounts:
      - name: foo-persistent-storage
        mountPath: /var/lib/foo
volumes:
  - name: foo-persistent-storage
    persistentVolumeClaim:
      claimName: foo-storage

吊舱将正确安装和启动,但kubectl logs <the-pod>将显示

代码语言:javascript
复制
total 24
drwxr-xr-x 3 root root  4096 Nov 23 11:42 .
drwxr-xr-x 1 root root  4096 Nov 13 12:32 ..
drwx------ 2 root root 16384 Nov 23 11:42 lost+found

也就是说,当前目录是以root拥有的方式挂载的,对所有其他用户都是只读的。

我尝试过在StorageClass中添加一个StorageClass部分,但是无论我尝试什么(uid=472user=472等),我都会在启动时获得挂载错误。

代码语言:javascript
复制
mounting arguments: --description=Kubernetes transient mount for /var/lib/kubelet/plugins/kubernetes.io/azure-disk/mounts/m1019941199 --scope -- mount -t ext4 -o group=472,rw,user=472,defaults /dev/disk/azure/scsi1/lun0 /var/lib/kubelet/plugins/kubernetes.io/azure-disk/mounts/m1019941199
Output: Running scope as unit run-r7165038756bf43e49db934e8968cca8b.scope.
mount: wrong fs type, bad option, bad superblock on /dev/sdc,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

我也试图从人坐骑获得一些信息,但是我没有发现任何有用的信息。

如何配置这个存储类、持久卷声明和卷挂载,以便运行容器进程的非根用户能够访问在挂载路径中写入(并创建子目录)?

EN

回答 1

Stack Overflow用户

发布于 2018-11-25 02:30:20

您需要像下面这样定义pod规范的securityContext,这样它就匹配了新运行的用户和组id:

代码语言:javascript
复制
securityContext:
  runAsUser: 472
  fsGroup: 472

稳定的Grafana Helm图也是这样做的。参见配置下的securityContexthttps://github.com/helm/charts/tree/master/stable/grafana#configuration

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53446184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档