内容提要
项目使用k3s部署时,为了实现高可用性,选择使用NFS而非本地路径存储。文中介绍了两种NFS持久化存储方法:通过CSI驱动的StorageClass和直接使用NFS类型的PV。还涉及了如何安装nfs-common、配置StorageClass、声明PVC、配置ConfigMaps和Secrets,以及如何部署StatefulSet工作负载和服务端口暴露。最后,通过Workshop加深了对PVC/PV和StorageClass设计关系的理解。
关键要点
-
k3s部署项目需要持久化存储,选择使用NFS而非localpath存储以实现高可用性。
-
使用群晖提供NFS服务,或自建NFS服务器均可。
-
在节点上安装nfs-common以提供NFS客户端功能。
-
有两种NFS持久化存储方法:使用CSI驱动的StorageClass和直接使用NFS类型的PV。
-
使用StorageClass进行持久化管理可以减少配置和管理的复杂性。
-
安装NFS的CSI驱动非常简单,可以通过yaml文件进行安装。
-
StorageClass的注册示例提供了NFS的配置参数。
-
PVC声明示例展示了如何请求持久卷。
-
直接使用NFS PVC的方式需要手动管理NFS目录,整体性较差。
-
ConfigMaps用于Mysql配置管理,方便配置变更。
-
Secret文件用于存储Mysql的root密码。
-
StatefulSet工作负载部署Mysql时需要挂载secret、NFS PVC和configmap。
-
注意securityContext配置以避免NFS读写权限问题。
-
使用NodePort服务暴露Mysql端口以便连接和管理。
-
通过Workshop理解PVC/PV和StorageClass之间的设计关系,StorageClass的抽象设计是其精妙之处。