AKS中使用Azure File的持久卷路径咨询
嗨,我来帮你理清这个问题~
首先要明确:你现在用的是动态持久卷供给模式,这和你之前接触的手动创建PersistentVolume(PV)并指定hostPath的逻辑完全不一样哦。
为什么你的StorageClass里没有类似hostPath的配置?
hostPath是针对Kubernetes节点本地存储的配置,而Azure File是Azure提供的托管式网络存储,通过SMB或NFS协议挂载到Pod中。当你配置好这个StorageClass,再创建对应的PersistentVolumeClaim(PVC)后,Azure会自动在后台完成以下操作:
- 自动创建(或使用你指定的)Azure存储账户
- 在该存储账户下生成一个对应的Azure File共享
- 自动关联PVC和这个动态生成的File共享
整个过程完全不需要你手动指定存储路径,因为这部分是Azure托管的,你不用关心它在Azure端的物理存储位置。
那我的数据到底存在哪里?怎么访问?
对于你的DB Pod来说,你只需要在Pod的配置里指定容器内的挂载路径就可以了。比如你的DB容器默认把数据写到/var/lib/mysql,那你就把PVC挂载到这个路径,DB的所有写入操作都会自动同步到Azure File共享里。
如果你想查看这个Azure File共享的具体内容,可以通过Azure门户或者Azure CLI来操作:
- 先用CLI找到对应的存储账户:
az storage account list --resource-group <你的AKS资源组名>(AKS默认会创建存储账户,名字一般带aks前缀) - 列出该存储账户下的File共享:
az storage share list --account-name <存储账户名>,其中和你的PVC名称对应的那个就是动态创建的共享 - 你可以直接在Azure门户里进入这个共享,浏览里面的文件结构,就像操作本地文件夹一样;也可以用CLI下载/上传文件
补充说明
Azure File作为网络存储,最大的优势就是可以被多个Pod同时挂载访问,这也是它适合作为DB共享存储(或者需要多Pod共享数据的场景)的原因。而hostPath只能被所在节点的Pod访问,一旦Pod调度到其他节点,数据就访问不到了,这两者的适用场景完全不同。
总之,你不需要关心Azure端的具体存储路径,只要确保Pod的挂载配置正确,你的DB数据就会安全持久化到Azure File里啦~
备注:内容来源于stack exchange,提问作者GreenPenguin

