当前有状态应用的容器应用部署,如果有能力应修改应用。使其状态保存在缓存服务器类似 Redis cluster中,相关日志统一进入 elk,或者 kafka 完成持久化。
这样存储设计相对简单,只要保证elk和redis的存储容量和访问速度。
如果无法修改应用,需要挂载一个持久化卷,来持久化数据。使数据可以在不同节点漂移,需要所有主机对存储的访问权限,这个又会出现存储访问风险。
在实际业务场景,把存储分多个区域, 挂载到对应区域的主机,进行区别访问。避免访问风险
数据库、中间件的有状态应用,建议使用本地存储,做好raid。ceph、san等存储,由于通过网络进行传输数据,会造成性能的进一步降低,难以提供最优的存储性能。
本地存储监控和维护,容器云一般是不管,需要传统工具运维。
我们开源的carina本地存储解决方案,各位可以了解一下
https://github.com/carina-io/carina