https://github.com/kvaps/kube-iscsi-loop
Loop iSCSI interfaces and daemons for K8S.
https://github.com/kvaps/kube-iscsi-loop
Last synced: 8 months ago
JSON representation
Loop iSCSI interfaces and daemons for K8S.
- Host: GitHub
- URL: https://github.com/kvaps/kube-iscsi-loop
- Owner: kvaps
- License: apache-2.0
- Created: 2018-06-07T15:25:13.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2018-07-19T21:41:23.000Z (almost 8 years ago)
- Last Synced: 2024-12-28T02:32:13.475Z (over 1 year ago)
- Language: Shell
- Homepage:
- Size: 38.1 KB
- Stars: 1
- Watchers: 2
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# kube-iscsi-loop
Loop iSCSI interfaces and daemons for K8S.
## Components
### Backend
The next backends supported
* **SharedFS** - images are simple files thats stores on some shared filesystem.
* **Sheepdog** - sheepdog images. Your nodes should be part of sheepdog cluster. However you can use [containerized sheepdog](https://github.com/kvaps/kube-sheepdog).
### Frontend
Project uses built-in kubernetes **iSCSI** driver for connect drivers into pods.
## Limitations and Requirements
This implementation implies using locally runned iSCSI daemons with some
distributed shared filesystem as backend, this filesystem should be directly connected to all nodes.
It's not difficult to update those scripts for use with remote runned iSCSI-daemon
(take a look on sharedfs provisioners): you can add some authentication parameters, multipathing eg.,
and bind targets to `0.0.0.0` instead `127.0.0.1`.
If you do this please send me your PR.
Otherwise you can simple use [iSCSI-targetd provisioner](https://github.com/kubernetes-incubator/external-storage/tree/master/iscsi/targetd)
## Images
### iSCSI Daemons
| Image | Build Status |
|-------------|-----------------|
| **[iscsi]** | ![iscsi-status] |
[iscsi]: iscsi
[iscsi-status]: https://img.shields.io/docker/build/kvaps/iscsi.svg
This image includes `tgtd` and `iscsid` daemons, both of them are necessary for allow
publishers announce images, and connect them to your pods.
Runs as daemonsets, but can be replaced by locally runned daemons.
### iSCSI Dynamic provisioners
| Image | Build Status |
|----------------------------------|--------------------------------------|
| **[iscsi-sharedfs-provisioner]** | ![iscsi-sharedfs-provisioner-status] |
| **[iscsi-sheepdog-provisioner]** | ![iscsi-sheepdog-provisioner-status] |
[iscsi-sharedfs-provisioner]: iscsi-sharedfs-provisioner
[iscsi-sheepdog-provisioner]: iscsi-sheepdog-provisioner
[iscsi-sharedfs-provisioner-status]: https://img.shields.io/docker/build/kvaps/iscsi-sharedfs-provisioner.svg
[iscsi-sheepdog-provisioner-status]: https://img.shields.io/docker/build/kvaps/iscsi-sheepdog-provisioner.svg
Runs as deployment.
Waits until `PersistentVolumeClaims` will be created in Kubernetes.
Then creates new drives with needed parameters and announce them as `PersistentVolume` in Kubernetes.
### iSCSI Publishers
| Image | Build Status |
|--------------------------------|------------------------------------|
| **[iscsi-sharedfs-publisher]** | ![iscsi-sharedfs-publisher-status] |
| **[iscsi-sheepdog-publisher]** | ![iscsi-sheepdog-publisher-status] |
[iscsi-sharedfs-publisher]: iscsi-sharedfs-publisher
[iscsi-sheepdog-publisher]: iscsi-sheepdog-publisher
[iscsi-sharedfs-publisher-status]: https://img.shields.io/docker/build/kvaps/iscsi-sharedfs-publisher.svg
[iscsi-sheepdog-publisher-status]: https://img.shields.io/docker/build/kvaps/iscsi-sheepdog-publisher.svg
Runs as daemonset.
Periodically checks some API for newly created images and creates iSCSI targets
for local use only.
After that you can use built-in iSCSI driver in Kubernetes for connect your images into pods.