forked from minio/directpv
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
62 lines (55 loc) · 6.64 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<!--- Please update index.html if readme.md is updated --->
<h2 class="code-line" data-line-start=0 data-line-end=2 ><a id="DirectPV_0"></a>DirectPV</h2>
<p class="has-line-data" data-line-start="3" data-line-end="4">DirectPV is a CSI driver for <a href="https://en.wikipedia.org/wiki/Direct-attached_storage">Direct Attached Storage</a>. In a simpler sense, it is a distributed persistent volume manager, and not a storage system like SAN or NAS. It is useful to <em>discover, format, mount, schedule and monitor</em> drives across servers. Since Kubernetes <code>hostPath</code> and <code>local</code> PVs are statically provisioned and limited in functionality, DirectPV was created to address this limitation.</p>
<p class="has-line-data" data-line-start="5" data-line-end="6">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.</p>
<p class="has-line-data" data-line-start="7" data-line-end="8"><img src="https://github.com/minio/directpv/blob/master/docs/images/architecture.png?raw=true" alt="Architecture Diagram"></p>
<h3 class="code-line" data-line-start=9 data-line-end=10 ><a id="Architecture_9"></a>Architecture</h3>
<p class="has-line-data" data-line-start="11" data-line-end="12">DirectPV is designed to be lightweight and scalable to 10s of 1000s of drives. It is made up of three components - <strong>Controller, Node Driver, UI</strong></p>
<p class="has-line-data" data-line-start="13" data-line-end="14"><img src="https://github.com/minio/directpv/blob/master/docs/images/directpv_architecture.png?raw=true" alt="DirectPV Architecture"></p>
<h5 class="code-line" data-line-start=15 data-line-end=16 ><a id="Controller_15"></a>Controller</h5>
<p class="has-line-data" data-line-start="17" data-line-end="18">When a volume claim is made, the controller provisions volumes uniformly from a pool free drives. DirectPV is aware of pod’s affinity constraints, and allocates volumes from drives local to pods. Note that only one active instance of controller runs per cluster.</p>
<h5 class="code-line" data-line-start=19 data-line-end=20 ><a id="Node_Driver_19"></a>Node Driver</h5>
<p class="has-line-data" data-line-start="21" data-line-end="22">Node Driver implements the volume management functions such as discovery, format, mount, and monitoring of drives on the nodes. One instance of node driver runs on each of the storage servers.</p>
<h5 class="code-line" data-line-start=23 data-line-end=24 ><a id="UI_23"></a>UI</h5>
<p class="has-line-data" data-line-start="25" data-line-end="26">Storage Administrators can use the kubectl CLI plugin to select, manage and monitor drives. Web based UI is currently under development.</p>
<h3 class="code-line" data-line-start=27 data-line-end=28 ><a id="Installation_27"></a>Installation</h3>
<pre><code class="has-line-data" data-line-start="30" data-line-end="47" class="language-sh"><span class="hljs-comment"># Install kubectl directpv plugin</span>
kubectl krew install directpv
<span class="hljs-comment"># Use the plugin to install directpv in your kubernetes cluster</span>
kubectl directpv install
<span class="hljs-comment"># Ensure directpv has successfully started</span>
kubectl directpv info
<span class="hljs-comment"># List available drives in your cluster</span>
kubectl directpv drives ls
<span class="hljs-comment"># Select drives that directpv should manage and format</span>
kubectl directpv drives format --drives /dev/sd{a...f} --nodes directpv-{<span class="hljs-number">1</span>...<span class="hljs-number">4</span>}
<span class="hljs-comment"># 'directpv' can now be specified as the storageclass in PodSpec.VolumeClaimTemplates</span>
</code></pre>
<p class="has-line-data" data-line-start="48" data-line-end="49">For air-gapped setups and advanced installations, please refer to the <a href="./docs/installation.md">Installation Guide</a>.</p>
<h3 class="code-line" data-line-start=50 data-line-end=51 ><a id="Upgrade_50"></a>Upgrade</h3>
<p class="has-line-data" data-line-start="52" data-line-end="53">DirectPV version upgrades are seameless and transparent. Simply uninstall an existing version of directpv and install with a newer version to upgrade.</p>
<pre><code class="has-line-data" data-line-start="55" data-line-end="64"># Uninstall directpv
kubectl directpv uninstall
# Download latest krew plugin
kubectl krew upgrade directpv
# Install using new plugin
kubectl directpv install
</code></pre>
<h3 class="code-line" data-line-start=65 data-line-end=66 ><a id="Security_65"></a>Security</h3>
<p class="has-line-data" data-line-start="67" data-line-end="68">Please review the <a href="./security-checklist.md">security checklist</a> before deploying to production.</p>
<p class="has-line-data" data-line-start="69" data-line-end="70"><strong>Important</strong>: Report security issues to <a href="mailto:security@min.io">security@min.io</a>. Please do not report security issues here.</p>
<h3 class="code-line" data-line-start=71 data-line-end=72 ><a id="Additional_Resources_71"></a>Additional Resources</h3>
<ul>
<li class="has-line-data" data-line-start="73" data-line-end="74"><a href="./docs/development-and-testing.md">Developer Guide</a></li>
<li class="has-line-data" data-line-start="74" data-line-end="75"><a href="./docs/installation.md">Installation Guide</a></li>
<li class="has-line-data" data-line-start="75" data-line-end="76"><a href="./docs/metrics.md">Monitoring & Metrics</a></li>
<li class="has-line-data" data-line-start="76" data-line-end="77"><a href="./docs/security.md">Security Guide</a></li>
<li class="has-line-data" data-line-start="77" data-line-end="79"><a href="./docs/troubleshooting.md">Troubleshooting Guide</a></li>
</ul>
<h3 class="code-line" data-line-start=79 data-line-end=80 ><a id="Join_Community_79"></a>Join Community</h3>
<p class="has-line-data" data-line-start="81" data-line-end="82">DirectPV is a MinIO project. You can contact the authors over the slack channel:</p>
<ul>
<li class="has-line-data" data-line-start="83" data-line-end="85"><a href="https://join.slack.com/t/minio/shared_invite/zt-wjdzimbo-apoPb9jEi5ssl2iedx6MoA">MinIO Slack</a></li>
</ul>
<h3 class="code-line" data-line-start=85 data-line-end=86 ><a id="License_85"></a>License</h3>
<p class="has-line-data" data-line-start="87" data-line-end="88">DirectPV is released under GNU AGPLv3 license. Please refer to the LICENSE document for a complete copy of the license.</p>