基于Kubernetes的容器存储系统
Kubernetes(https://kubernetes.io)具有强大的存储访问能力,通过Volumes实现。
- 与Docker的Volume不同的是,Kubernetes的Volume是在Pod内共享的,Pod中的所有Docker都可以直接访问该Volume。
- 因为Pod可以浮动运行在指定的节点上,Kubernetes原则上不允许直接访问宿主机目录,尽管提供了基于HostPath的Volume支持,此时须指定nodeSelector选项以固定所在的节点。
传统的分布式存储和网络存储如Ceph、NFS也可以运行在kubernetes系统中,实现容器化、微服务化,从而可以利用Kubernetes的容器编排、调度等能力,而且为Kubernetes中运行的其它容器应用提供内置的分布式存储访问能力,提升并发存取性能、故障转移与恢复等能力。
已有存储系统有几种方式为kunernetes所用:
- 原来的存储系统可以之间在Kubernetes中连接使用,存储服务器独立运行。云存储厂商也通过这种方式为Kubernetes提供存储服务。
- Ceph/NFS等通过新的PV和Storage实现,在Kubernetes中直接运行存储服务器。
- 通过容器技术完全重新实现存储系统(如CrateDB),内置支持Kubernetes并优化。
⚠️Kubernetes从1.9开始引入CSI(容器存储接口),以后都将按照该架构进行开发和配置。每一个Pod动态volumeMount到Volumes上,而Volumes通过PVC(Persistent Volume Claim)访问存储,与存储提供者通过接口实现浮动。PVC通过StorageClass动态地分配PV,PV和StorageClass由存储提供者实现,进行物理存储的管理。
具体的Kubernetes容器存储概念体系和实现,参考如下:
- Kubernetes存储系统
- Kubernetes存储系统介绍及机制实现,
- Kubernetes volumes简介,
- Kubernetes存储之Persistent Volumes,
- Rook & Ceph
- Kubernetes存储系统-云原生存储Rook部署,
- 看Ceph如何实现原生的ISCSI,http://blog.51cto.com/devingeng/2125656
- 安装部署Calamari监控软件,
- NFS-网络文件系统
- Kubernetes搭建NFS原生服务,
- Kubernetes存储系统-NFS的Helm部署,
- kunbernetes存储系统-基于NFS的PV服务,
- GlusterFS
- Gluster - Kubernetes云原生存储,
- GlusterFS动态卷快速应用,
- GlusterFS官方文档,https://docs.gluster.org/en/latest/
- Kubernets实用工具和部署的yaml文件,https://github.com/openthings/kubernetes-tools
- 给Kubernetes添加持久存储你会遇到这些坑,https://mp.weixin.qq.com/s/vvQFccqj6eLlW1LyHRuwzg
Kubenrnetes集群安装参考:
- kubeadm安装Kubernetes实践记录,
- Kubernetes加入新节点,经验总结,
- Kubernetes v1.10.x HA 全手动安装教程,
- 使用kubeadm创建Kubernetes集群,
- Kubernetes部署与应用解决方案大全,
- Kubernetes运行监控-使用Helm快速部署Pormetheus和Grafana
Kubenrnetes网络部署参考:
- calico在docker上的部署及验证,
- 容器SDN技术与微服务架构实践,
- 基于Kubeadm的Flannel分析,
- ...