mirror of
https://github.com/ceph/ceph-csi.git
synced 2025-06-13 02:33:34 +00:00
Revert "Add multiNodeWritable option for RBD Volumes"
This reverts commit b5b8e46460
.
This commit is contained in:
@ -114,167 +114,3 @@ To restore the snapshot to a new PVC, deploy
|
||||
kubectl create -f pvc-restore.yaml
|
||||
kubectl create -f pod-restore.yaml
|
||||
```
|
||||
|
||||
## How to enable multi node attach support for RBD
|
||||
|
||||
*WARNING* This feature is strictly for workloads that know how to deal
|
||||
with concurrent acces to the Volume (eg Active/Passive applications).
|
||||
Using RWX modes on non clustered file systems with applications trying
|
||||
to simultaneously access the Volume will likely result in data corruption!
|
||||
|
||||
### Example process to test the multiNodeWritable feature
|
||||
|
||||
Modify your current storage class, or create a new storage class specifically
|
||||
for multi node writers by adding the `multiNodeWritable: "enabled"` entry to
|
||||
your parameters. Here's an example:
|
||||
|
||||
```yaml
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
name: csi-rbd
|
||||
provisioner: csi-rbdplugin
|
||||
parameters:
|
||||
monitors: rook-ceph-mon-b.rook-ceph.svc.cluster.local:6789
|
||||
pool: rbd
|
||||
imageFormat: "2"
|
||||
imageFeatures: layering
|
||||
csiProvisionerSecretName: csi-rbd-secret
|
||||
csiProvisionerSecretNamespace: default
|
||||
csiNodePublishSecretName: csi-rbd-secret
|
||||
csiNodePublishSecretNamespace: default
|
||||
adminid: admin
|
||||
userid: admin
|
||||
fsType: xfs
|
||||
multiNodeWritable: "enabled"
|
||||
reclaimPolicy: Delete
|
||||
```
|
||||
|
||||
Now, you can request Claims from the configured storage class that include
|
||||
the `ReadWriteMany` access mode:
|
||||
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: pvc-1
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteMany
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Gi
|
||||
storageClassName: csi-rbd
|
||||
```
|
||||
|
||||
Create a POD that uses this PVC:
|
||||
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: test-1
|
||||
spec:
|
||||
containers:
|
||||
- name: web-server
|
||||
image: nginx
|
||||
volumeMounts:
|
||||
- name: mypvc
|
||||
mountPath: /var/lib/www/html
|
||||
volumes:
|
||||
- name: mypvc
|
||||
persistentVolumeClaim:
|
||||
claimName: pvc-1
|
||||
readOnly: false
|
||||
```
|
||||
|
||||
Wait for the POD to enter Running state, write some data to
|
||||
`/var/lib/www/html`
|
||||
|
||||
Now, we can create a second POD (ensure the POD is scheduled on a different
|
||||
node; multiwriter single node works without this feature) that also uses this
|
||||
PVC at the same time
|
||||
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: test-2
|
||||
spec:
|
||||
containers:
|
||||
- name: web-server
|
||||
image: nginx
|
||||
volumeMounts:
|
||||
- name: mypvc
|
||||
mountPath: /var/lib/www/html
|
||||
volumes:
|
||||
- name: mypvc
|
||||
persistentVolumeClaim:
|
||||
claimName: pvc-1
|
||||
readOnly: false
|
||||
```
|
||||
|
||||
If you access the pod you can check that your data is avaialable at
|
||||
`/var/lib/www/html`
|
||||
|
||||
## Testing Raw Block feature in kubernetes with RBD volumes
|
||||
|
||||
CSI block volume support is feature-gated and turned off by default. To run CSI
|
||||
with block volume support enabled, a cluster administrator must enable the
|
||||
feature for each Kubernetes component using the following feature gate flags:
|
||||
|
||||
--feature-gates=BlockVolume=true,CSIBlockVolume=true
|
||||
|
||||
these feature-gates must be enabled on both api-server and kubelet
|
||||
|
||||
### create a raw-block PVC
|
||||
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: raw-block-pvc
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
volumeMode: Block
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Gi
|
||||
storageClassName: csi-rbd
|
||||
```
|
||||
|
||||
create raw block pvc
|
||||
|
||||
```console
|
||||
kubectl create -f raw-block-pvc.yaml
|
||||
```
|
||||
|
||||
### create a pod to mount raw-block PVC
|
||||
|
||||
```yaml
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: pod-with-raw-block-volume
|
||||
spec:
|
||||
containers:
|
||||
- name: fc-container
|
||||
image: fedora:26
|
||||
command: ["/bin/sh", "-c"]
|
||||
args: [ "tail -f /dev/null" ]
|
||||
volumeDevices:
|
||||
- name: data
|
||||
devicePath: /dev/xvda
|
||||
volumes:
|
||||
- name: data
|
||||
persistentVolumeClaim:
|
||||
claimName: raw-block-pvc
|
||||
```
|
||||
|
||||
Create a POD that uses raw block PVC
|
||||
|
||||
```console
|
||||
kubectl create -f raw-block-pod.yaml
|
||||
```
|
||||
|
@ -35,7 +35,4 @@ parameters:
|
||||
userid: kubernetes
|
||||
# uncomment the following to use rbd-nbd as mounter on supported nodes
|
||||
# mounter: rbd-nbd
|
||||
# fsType: xfs
|
||||
# uncomment the following line to enable multi-attach on RBD volumes
|
||||
# multiNodeWritable: enabled
|
||||
reclaimPolicy: Delete
|
||||
|
Reference in New Issue
Block a user