我有一个包含三个节点的 Kubernetes 集群。我需要将 mysql 服务器部署到集群,并且我需要该 mysql 的持久性。因此,当我重新部署或重新启动我的 pod 时,它不会删除数据。

但是,如果我使用使用 azure-disk 的 storageClass,它只会安装到主机上。

metadata: 
  name: mysql-storage 
spec: 
  accessModes: [ "ReadWriteOnce" ] 
  storageClassName: "managed-premium" 
    resources: 
      requests: 
        storage: 5Gi 

因此,如果我删除或重新部署 pod,它可能会在未安装磁盘的另一台主机上启动,然后我的数据就消失了。

我尝试将 accessModes 更改为 ReadWriteMany,但在声明卷时失败。说它只支持ReadWriteOnce。

请您参考如下方法:

你无法真正解决这个问题。这个问题有几种解决方法,比如你可以在托管磁盘上创建一个软件存储系统并使用它来存储数据,你可以使用 azure 文件持久存储,它可以从任何 pod(以及许多 pod)挂载。

托管磁盘只能挂载到一个节点(但我认为节点上的所有 pod 都可以访问这个磁盘),所以 ReadWriteMany 没有多大意义。您可以使用StatefulSets要定义你的 mysql,它总是会挂载到同一个节点,但我认为你真的不需要它,PVC 应该重新挂载到托管你的 pod 的节点,唯一的缺点是重新连接托管服务器大约需要 1 分钟磁盘到另一个节点。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!