我正在 Kubernetes 之上构建一个平台,除其他要求外,它应该:
- 与操作系统无关。任何具有健全内核和 cgroup 挂载的 Linux。
- 通过利用集群节点磁盘提供持久存储。
- 提供 ReadWriteMany 卷或实现共享存储的方法。
- POD 不应绑定到特定节点(如本地持久卷)
- 迁移 POD 时会自动重新附加卷(例如,由于节点耗尽或节点丢失情况)
- 在存储级别提供数据复制
- 不假设每个节点都有专用的原始块设备。
我通过对 k8s 组件和容器引擎使用静态二进制文件来解决第一点。再加上最小的主机工具,也是静态二进制文件。
我仍在寻找持久存储的解决方案。
到目前为止我评估/使用的内容:
- Rook:虽然在功能上满足要求,但是有一个bug,卷没有和POD一起移动https://github.com/rook/rook/issues/1507
- OpenEBS:它不满足与操作系统无关的要求。每个节点上都需要 iSCSI 客户端和工具,这取决于主机操作系统https://docs.openebs.io/docs/next/prerequisites.html
所以问题是在使用集群节点磁盘时,对于 Kubernetes 持久存储,我还有什么其他选择。