advertise multi node capabilities for zfs-local to provide seamless experience
Signed-off-by: Travis Glenn Hansen <travisghansen@yahoo.com>
This commit is contained in:
parent
4dd57c13bd
commit
e80eff2bda
13
README.md
13
README.md
|
|
@ -53,6 +53,7 @@ Predominantly 3 things are needed:
|
|||
## Community Guides
|
||||
|
||||
- https://jonathangazeley.com/2021/01/05/using-truenas-to-provide-persistent-storage-for-kubernetes/
|
||||
- https://www.lisenet.com/2021/moving-to-truenas-and-democratic-csi-for-kubernetes-persistent-storage/
|
||||
- https://gist.github.com/admun/4372899f20421a947b7544e5fc9f9117 (migrating
|
||||
from `nfs-client-provisioner` to `democratic-csi`)
|
||||
- https://gist.github.com/deefdragon/d58a4210622ff64088bd62a5d8a4e8cc
|
||||
|
|
@ -148,7 +149,15 @@ necessary.
|
|||
This `driver` provisions node-local storage. Each node should have an
|
||||
identically named zfs pool created and avaialble to the `driver`. Note, this is
|
||||
_NOT_ the same thing as using the docker zfs storage driver (although the same
|
||||
pool could be used). No other requirements are necessary.
|
||||
pool could be used). Nodes should have the standard `zfs` utilities installed.
|
||||
|
||||
In the name of ease-of-use these drivers by default report `MULTI_NODE` support
|
||||
(`ReadWriteMany` in k8s) however the volumes will implicity only work on the
|
||||
node where originally provisioned. Topology contraints manage this in an
|
||||
automated fashion preventing any undesirable behavior. So while you may
|
||||
provision `MULTI_NODE` / `RWX` volumes, any workloads using the volume will
|
||||
always land a single node and that node will always be the node where the
|
||||
volume is/was provisioned.
|
||||
|
||||
## Server Prep
|
||||
|
||||
|
|
@ -380,4 +389,4 @@ A special shout out to the wonderful sponsors of the project!
|
|||
- https://datamattsson.tumblr.com/post/624751011659202560/welcome-truenas-core-container-storage-provider
|
||||
- https://github.com/dravanet/truenas-csi
|
||||
- https://github.com/SynologyOpenSource/synology-csi
|
||||
|
||||
- https://github.com/openebs/zfs-localpv
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
12
package.json
12
package.json
|
|
@ -18,26 +18,26 @@
|
|||
"url": "https://github.com/democratic-csi/democratic-csi.git"
|
||||
},
|
||||
"dependencies": {
|
||||
"@grpc/grpc-js": "^1.3.6",
|
||||
"@grpc/grpc-js": "^1.5.5",
|
||||
"@grpc/proto-loader": "^0.6.0",
|
||||
"@kubernetes/client-node": "^0.16.1",
|
||||
"@kubernetes/client-node": "^0.16.3",
|
||||
"async-mutex": "^0.3.1",
|
||||
"bunyan": "^1.8.15",
|
||||
"grpc-uds": "^0.1.6",
|
||||
"handlebars": "^4.7.7",
|
||||
"js-yaml": "^4.0.0",
|
||||
"lodash": "^4.17.21",
|
||||
"lru-cache": "^6.0.0",
|
||||
"prompt": "^1.2.0",
|
||||
"lru-cache": "^7.3.1",
|
||||
"prompt": "^1.2.2",
|
||||
"request": "^2.88.2",
|
||||
"semver": "^7.3.4",
|
||||
"ssh2": "^1.1.0",
|
||||
"uri-js": "^4.4.1",
|
||||
"uuid": "^8.3.2",
|
||||
"winston": "^3.3.3",
|
||||
"winston": "^3.6.0",
|
||||
"yargs": "^17.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint": "^8.1.0"
|
||||
"eslint": "^8.9.0"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -99,6 +99,15 @@ class ControllerZfsLocalDriver extends ControllerZfsBaseDriver {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Although it is conter-intuitive to advertise node-local volumes as RWX we
|
||||
* do so here to provide an easy out-of-the-box experience as users will by
|
||||
* default want to provision volumes of RWX. The topology contraints
|
||||
* implicity will enforce only a single node can use the volume at a given
|
||||
* time.
|
||||
*
|
||||
* @returns Array
|
||||
*/
|
||||
getAccessModes() {
|
||||
const driverZfsResourceType = this.getDriverZfsResourceType();
|
||||
let access_modes = _.get(this.options, "csi.access_modes", null);
|
||||
|
|
@ -113,9 +122,9 @@ class ControllerZfsLocalDriver extends ControllerZfsBaseDriver {
|
|||
"SINGLE_NODE_SINGLE_WRITER", // added in v1.5.0
|
||||
"SINGLE_NODE_MULTI_WRITER", // added in v1.5.0
|
||||
"SINGLE_NODE_READER_ONLY",
|
||||
//"MULTI_NODE_READER_ONLY",
|
||||
//"MULTI_NODE_SINGLE_WRITER",
|
||||
//"MULTI_NODE_MULTI_WRITER",
|
||||
"MULTI_NODE_READER_ONLY",
|
||||
"MULTI_NODE_SINGLE_WRITER",
|
||||
"MULTI_NODE_MULTI_WRITER",
|
||||
];
|
||||
case "volume":
|
||||
return [
|
||||
|
|
@ -124,8 +133,9 @@ class ControllerZfsLocalDriver extends ControllerZfsBaseDriver {
|
|||
"SINGLE_NODE_SINGLE_WRITER", // added in v1.5.0
|
||||
"SINGLE_NODE_MULTI_WRITER", // added in v1.5.0
|
||||
"SINGLE_NODE_READER_ONLY",
|
||||
//"MULTI_NODE_READER_ONLY",
|
||||
//"MULTI_NODE_SINGLE_WRITER",
|
||||
"MULTI_NODE_READER_ONLY",
|
||||
"MULTI_NODE_SINGLE_WRITER",
|
||||
"MULTI_NODE_MULTI_WRITER",
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue