如何将已有Azure文件共享挂载至Kubernetes Pod
没问题,我给你一步步拆解怎么把已有的Azure文件共享挂载到Kubernetes Pod里,都是实操过的步骤,放心跟着来:
前提条件
先确认你已经准备好这些东西:
- 拥有Azure账号,并且已经创建好存储账户和对应的文件共享
- Kubernetes集群(不管是AKS还是自建集群)能正常访问Azure存储服务,
kubectl已经配置好集群访问权限 - 拿到存储账户的访问密钥(后面要用到)
步骤1:创建K8s Secret存储凭据
Azure文件共享需要身份认证,我们把存储账户的名称和密钥存成K8s Secret,避免明文泄露。
执行这条命令创建Secret,记得替换尖括号里的内容:
kubectl create secret generic azure-file-secret \ --from-literal=azurestorageaccountname=<你的存储账户名> \ --from-literal=azurestorageaccountkey=<你的存储账户访问密钥>
要是忘了密钥在哪,用Azure CLI快速获取:
az storage account keys list --account-name <存储账户名> --resource-group <资源组名> --query "[0].value" -o tsv
步骤2:编写Pod的YAML配置
接下来写一个Pod的配置文件,把Azure文件共享挂载到容器里。下面是示例,关键是volumes和volumeMounts部分:
apiVersion: v1 kind: Pod metadata: name: azure-file-demo-pod spec: containers: - name: demo-container image: nginx:alpine # 用个简单的镜像就行,你也可以换成自己的业务镜像 resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: azure-file-volume mountPath: /mnt/azure-share # 这是容器内的挂载路径,你可以自定义 volumes: - name: azure-file-volume azureFile: secretName: azure-file-secret # 引用刚才创建的Secret shareName: <你的文件共享名称> # 填你已有的Azure文件共享名 readOnly: false # 设为true就是只读挂载,按需调整
把上面的内容保存成azure-file-pod.yaml,然后应用到集群:
kubectl apply -f azure-file-pod.yaml
步骤3:验证挂载是否成功
Pod启动后,我们进入容器检查挂载情况:
kubectl exec -it azure-file-demo-pod -- /bin/sh
进入容器后,查看挂载目录:
ls /mnt/azure-share
你可以在这个目录里创建一个测试文件,比如:
touch /mnt/azure-share/test-from-pod.txt
然后去Azure Portal的文件共享里刷新,就能看到这个文件了;反过来在Azure文件共享里上传文件,容器里也能看到,这就说明挂载成功啦。
额外注意事项
- 如果是AKS集群,确保集群的服务主体或者托管身份有访问存储账户的权限,不然会出现挂载失败的情况
- 存储账户和K8s集群尽量在同一个Azure区域,能减少网络延迟
- 要是遇到权限问题,先检查Secret里的账户名和密钥是否正确,再看存储账户的网络设置是否允许集群访问(比如是否开启了允许所有网络,或者把集群的虚拟网段加到存储账户的白名单里)
- 除了Pod,这个挂载方式也能用到Deployment、StatefulSet等控制器里,只要把
volumes和volumeMounts放到对应的模板部分就行
内容的提问来源于stack exchange,提问作者Ajov Crowe
相关产品推荐
相关产品推荐

