{"id":18690476,"url":"https://github.com/kvaps/kube-lustre","last_synced_at":"2026-02-21T16:39:13.933Z","repository":{"id":80916015,"uuid":"115448782","full_name":"kvaps/kube-lustre","owner":"kvaps","description":"High-available Lustre filesystem concept with DRBD for Kubernetes.","archived":false,"fork":false,"pushed_at":"2018-01-29T16:18:13.000Z","size":112,"stargazers_count":20,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-10T18:22:34.077Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://github.com/kvaps/kube-lustre","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kvaps.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-26T19:20:06.000Z","updated_at":"2024-11-19T01:42:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"8a903055-a262-4e67-8006-3e9f211adf23","html_url":"https://github.com/kvaps/kube-lustre","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kvaps/kube-lustre","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kvaps%2Fkube-lustre","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kvaps%2Fkube-lustre/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kvaps%2Fkube-lustre/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kvaps%2Fkube-lustre/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kvaps","download_url":"https://codeload.github.com/kvaps/kube-lustre/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kvaps%2Fkube-lustre/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29686798,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T15:51:39.154Z","status":"ssl_error","status_checked_at":"2026-02-21T15:49:03.425Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T10:47:41.664Z","updated_at":"2026-02-21T16:39:13.917Z","avatar_url":"https://github.com/kvaps.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kube-Lustre\n\n![](lustre-logo.png)\n\nHigh-available Lustre filesystem concept with DRBD for Kubernetes.\n\n| Image                                 | Build Status                                                                 |\n|---------------------------------------|------------------------------------------------------------------------------|\n| **[kvaps/kube-lustre-configurator]**  | ![](https://img.shields.io/docker/build/kvaps/kube-lustre-configurator.svg)  |\n| **[kvaps/lustre]**                    | ![](https://img.shields.io/docker/build/kvaps/lustre.svg)                    |\n| **[kvaps/lustre-client]**             | ![](https://img.shields.io/docker/build/kvaps/lustre-client.svg)             |\n| **[kvaps/lustre-install]**            | ![](https://img.shields.io/docker/build/kvaps/lustre-install.svg)            |\n| **[kvaps/drbd]**                      | ![](https://img.shields.io/docker/build/kvaps/drbd.svg)                      |\n| **[kvaps/drbd-install]**              | ![](https://img.shields.io/docker/build/kvaps/drbd-install.svg)              |\n\n[kvaps/kube-lustre-configurator]: https://hub.docker.com/r/kvaps/kube-lustre-configurator/builds/\n[kvaps/lustre]: https://hub.docker.com/r/kvaps/lustre/builds/\n[kvaps/lustre-client]: https://hub.docker.com/r/kvaps/lustre-client/builds/\n[kvaps/lustre-install]: https://hub.docker.com/r/kvaps/lustre-install/builds/\n[kvaps/drbd]: https://hub.docker.com/r/kvaps/drbd/builds/\n[kvaps/drbd-install]: https://hub.docker.com/r/kvaps/drbd-install/builds/\n\n## Concept\n\nAll project represents a few simple docker-images with shell-scripts, each one do some does its specific task.\n\nSince lustre zfs and drbd work at the kernel level, which little bit does not fit into the docker's ideology, almost all actions executes directly on the host machine.\nDocker and Kubernetes used here only as orchestration-system and ha-management framework.\n\nWhat each image does?\n\n| Image                         | Role                                                                                      |\n|-------------------------------|-------------------------------------------------------------------------------------------|\n| **kube-lustre-configurator**  | Reads [config], then generates templates and assign resources to specific Kubernetes nodes |\n| **lustre**                    | Makes lustre target, then imports zpool and mounts lustre target                          |\n| **lustre-client**             | Mounts lustre filesystem                                                                  |\n| **lustre-install**            | Installs lustre and zfs packages and dkms modules                                         |\n| **drbd**                      | Makes and runs drbd resource                                                              |\n| **drbd-install**              | Installs drbd packages and dkms modules                                                   |\n\n\n[config]: https://github.com/kvaps/kube-lustre/blob/master/yaml/kube-lustre-config.yaml\n\n## Requirements\n\n* **Kubernetes:** \u003e=1.9.1 version\n* **Servers:** Centos 7 with latest updates\n* **Clients:** Centos 7 with latest updates (or installed `lustre` kernel-module)\n* **Selinux**: disabled\n* **Hostnames**: Each node should reach each other by single hostname\n* **Fixed IPs**: Each node should have unchangeable IP-address\n\nYou need to understand that all packages will installed directly on your node.\n\n## Limitations\n\n* Only ZFS Backend is supported.\n* Unmanaged `ldev.conf` file.\n* This is just concept please don't use it on production!\n\n## Quick Start\n\n* Create namespace, and clusterrolebinding:\n```sh\nkubectl create namespace lustre\nkubectl create clusterrolebinding --user system:serviceaccount:lustre:default lustre-cluster-admin --clusterrole cluster-admin\n```\n\n* Download and edit config:\n```sh\ncurl -O https://raw.githubusercontent.com/kvaps/kube-lustre/master/yaml/kube-lustre-config.yaml\nvim kube-lustre-config.yaml\n```\n* In `configuration.json` you can specify configurations that will be identical for each part your daemons.\n\n    * Option `mountpoint` requires only for clients.\n    * You can remove drbd section, in this case server will be created without ha-pair.\n    * If you have more than one drbd-target per physical server, specify different `device`, `port`.\n    * Additional you can add `protocol` and `syncer_rate` options there.\n\n* In `daemons.json` you can specify four types of daemons, example:\n\n    * `mgs` - Managment server\n    * `mdt3` - Metadata target (index:3)\n    * `ost4` - Object storage target (index:4)\n    * `mdt0-mgs` - Metadata target (index:0) with managment server \n  \n  Only one management server can be specified\n\n* Apply your config:\n```sh\nkubectl apply -f kube-lustre-config.yaml\n```\n\n* Create job for label nodes and run daemons according your configuration:\n```sh\nkubectl create -f https://raw.githubusercontent.com/kvaps/kube-lustre/master/yaml/kube-lustre-configurator.yaml\n```\n\n## Usage\n\nAfter installation you will have one common filesystem mounted to same mountpoint on each node.\n\nYou can use [`hostPath`](https://kubernetes.io/docs/concepts/storage/volumes/#hostpath) volumes for passthrough directories from lustre filesystem to your containers, or install special [hostpath provisioner](https://github.com/torchbox/k8s-hostpath-provisioner) for Kubernetes for automate volumes allocation process.\n\n---\n\nIn case of ha-installation if you want to migrate lustre resources from one node to another one, you can use simple command for achieve this:\n```\nkubectl drain \u003cnode\u003e --ignore-daemonsets\n```\nDon't forget to enable node after it will able to run resources:\n```\nkubectl uncordon \u003cnode\u003e\n```\n\n## License information\n\n* Kube-lustre is under the Apache 2.0 license. (See the [LICENSE](LICENSE) file for details)\n* Lustre filesystem is under the GPL 2.0 license. (See [this page](http://lustre.org/development/) for details)\n* DRBD is under the GPL 2.0 license. (See [this file](https://github.com/LINBIT/drbd-8.4/blob/master/COPYING) for details)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkvaps%2Fkube-lustre","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkvaps%2Fkube-lustre","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkvaps%2Fkube-lustre/lists"}