if ! [[ -w "$DIR" ]]; then
# $DIR is not writeable
fi
Однако это будет применяться для текущего пользователя. Не знаю, это ли то, что вам нужно.
EDIT: Если вам нужно извлечь строку разрешений, простой способ - использовать stat:
stat -c %A "$DIR"
возвращает что-то вроде:
-rwxr-xr-x
Вы можете легко найти ответ на этот вопрос с помощью быстрого поиска в Google, но я все равно дам ответ здесь, для будущих читателей.
На веб-сайте ceph есть хорошая страница , описывающая, как это сделать для докера. Подводя итог, вам необходимо иметь версии golang, librados -dev, libbrd -dev, ceph -common и xfsprogs, настроить go, запустить go get github.com/yp-engineering/rbd-docker-plugin
, запустить rbd-docker-plugin --create --user=<ceph-user> --pool=<ceph-pool>
от имени пользователя root и тогда вы можете использовать драйвер тома rbd
.
В Kubernetes также есть страница по монтированию томов . Я использовал это и это
Запустите следующее на цефалографическом мониторе:
ceph auth get-key client.admin | base64 # admin key
ceph auth add client.kube mon 'allow r' osd 'allow rwx pool=<poolname>'
ceph auth get-key client.kube | base64 # client key
От имени администратора kubernetes выполните следующее
kubectl create secret generic ceph-admin-secret --type="kubernetes.io/rbd" \
--from-literal=key='<admin key>' \
--namespace=kube-system
kubectl create secret generic ceph-client-secret --type="kubernetes.io/rbd" \
--from-literal=key='<client key>' \
--namespace=kube-system
cat << EOF | kubectl apply -f -
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: <storage class name you want>
provisioner: kubernetes.io/rbd
parameters:
monitors: <ceph monitor ip>:<ceph monitor port>
adminId: client.admin
adminSecretName: ceph-admin-secret
adminSecretNamespace: kube-system
pool: kube
userId: client.kube
userSecretName: ceph-client-secret
fsType: <filesystem type>
imageFormat: <image format>
imageFeatures: <image features>
EOF