-
Notifications
You must be signed in to change notification settings - Fork 88
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Bala.FA <[email protected]>
- Loading branch information
1 parent
41eecf8
commit 6fd27c9
Showing
4 changed files
with
16 additions
and
78 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,12 @@ | ||
DirectPV | ||
---------- | ||
# DirectPV | ||
|
||
DirectPV is a CSI driver for [Direct Attached Storage](https://en.wikipedia.org/wiki/Direct-attached_storage). In a simpler sense, it is a distributed persistent volume manager, and not a storage system like SAN or NAS. It is useful to *discover, format, mount, schedule and monitor* drives across servers. Since Kubernetes `hostPath` and `local` PVs are statically provisioned and limited in functionality, DirectPV was created to address this limitation. | ||
[DirectPV](https://github.com/minio/directpv) is a [CSI](https://kubernetes.io/blog/2019/01/15/container-storage-interface-ga/) driver for [Direct Attached Storage](https://en.wikipedia.org/wiki/Direct-attached_storage). In a simpler sense, it is a distributed persistent volume manager, and not a storage system like SAN or NAS. It is useful to *discover, format, mount, schedule and monitor* drives across servers. | ||
|
||
Distributed data stores such as object storage, databases and message queues are designed for direct attached storage, and they handle high availability and data durability by themselves. Running them on traditional SAN or NAS based CSI drivers (Network PV) adds yet another layer of replication/erasure coding and extra network hops in the data path. This additional layer of disaggregation results in increased-complexity and poor performance. | ||
|
||
![Architecture Diagram](https://github.com/minio/directpv/blob/master/docs/images/architecture.png?raw=true) | ||
|
||
### Quickstart guide | ||
## Quickstart | ||
|
||
1. Install DirectPV Krew plugin | ||
```sh | ||
|
@@ -24,86 +23,25 @@ $ kubectl directpv install | |
$ kubectl directpv info | ||
``` | ||
|
||
4. Discover and add drives for volume scheduling. | ||
4. Add drives | ||
```sh | ||
# Discover drives to check the available devices in the cluster to initialize | ||
# The following command will create an init config file (default: drives.yaml) which will be used for initialization | ||
# Probe and save drive information to drives.yaml file. | ||
$ kubectl directpv discover | ||
|
||
# Review the drives.yaml for drive selections and initialize those drives | ||
# Initialize selected drives. | ||
$ kubectl directpv init drives.yaml | ||
``` | ||
|
||
(NOTE: XFS is the filesystem used for formatting the drives here) | ||
|
||
5. Get list of added drives | ||
```sh | ||
$ kubectl directpv list drives | ||
``` | ||
|
||
6. Deploy a demo MinIO server | ||
|
||
DirectPV enforces node constraints where it allocates storage based on the worker node where a pod deploys. If the pod deploys to a worker node with no or insufficient DirectPV-managed drives, DirectPV cannot allocate storage to that pod. DirectPV does not allocate storage from one node to a pod on another node. | ||
|
||
Modify the YAML to reflect the node and storage distribution of your Kubernetes cluster. | ||
|
||
5. Deploy a demo MinIO server | ||
```sh | ||
# This should create MinIO pods and PVCs using the `directpv-min-io` storage class | ||
$ kubectl apply -f functests/minio.yaml | ||
$ curl -sfL https://github.com/minio/directpv/raw/master/functests/minio.yaml | kubectl apply -f - | ||
``` | ||
|
||
For air-gapped setups and advanced installations, please refer to the [Installation Guide](./docs/installation.md). | ||
|
||
### Upgrade | ||
|
||
Firstly, it is required to uninstall older version of DirectPV. Once it is uninstalled, follow [Installation instructions](#Installation) to install the latest DirectPV. In this process, all existing drives and volumes will be migrated automatically. | ||
|
||
#### Upgrade using krew | ||
|
||
Refer the following steps for upgrading DirectPV using krew | ||
|
||
```sh | ||
# Uninstall existing DirectPV installation | ||
$ kubectl directpv uninstall | ||
|
||
# Upgrade directpv plugin via krew | ||
$ kubectl krew upgrade directpv | ||
|
||
# Install latest DirectPV | ||
$ kubectl directpv install | ||
``` | ||
|
||
#### Upgrade from DirectPV v3.2.x | ||
|
||
For migrating from older versions < v3.2.0, Please refer the [Upgrade Guide](./docs/upgrade.md) | ||
|
||
### Security | ||
|
||
Please review the [security checklist](./security-checklist.md) before deploying to production. | ||
|
||
**Important**: Report security issues to [email protected]. Please do not report security issues here. | ||
|
||
### Additional Resources | ||
|
||
- [Installation Guide](./docs/installation.md) | ||
- [Upgrade Guide](./docs/upgrade.md) | ||
- [CLI Guide](./docs/cli.md) | ||
- [Security Guide](./docs/security.md) | ||
- [Scheduling Guide](./docs/scheduling.md) | ||
- [Drive Replacement Guide](./docs/drive-replacement.md) | ||
- [Volume Expansion](./docs/volume-expansion.md) | ||
- [Drain a node](./docs/drain-node.md) | ||
- [Driver Specification](./docs/specification.md) | ||
- [Monitoring & Metrics](./docs/metrics.md) | ||
- [Developer Guide](./docs/development-and-testing.md) | ||
- [FAQ](./docs/faq.md) | ||
|
||
### Join Community | ||
|
||
DirectPV is a MinIO project. You can contact the authors over the slack channel: | ||
|
||
- [MinIO Slack](https://slack.min.io/) | ||
## Further information | ||
Refer [detailed documentation](./docs/README.md) | ||
|
||
### License | ||
## Join Community | ||
DirectPV is a MinIO project. You can contact the authors over the [slack channel](https://slack.min.io/) | ||
|
||
DirectPV is released under GNU AGPLv3 license. Please refer to the LICENSE document for a complete copy of the license. | ||
## License | ||
DirectPV is released under GNU AGPLv3 license. Refer the [LICENSE document](https://github.com/minio/directpv/blob/master/LICENSE) for a complete copy of the license. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters