通过Kubernetes在Docker容器中安装Azure文件存储

我正尝试将我的Azure文件存储装载到使用此处find的方法的容器中: https : //github.com/kubernetes/kubernetes/tree/master/examples/volumes/azure_file

在创buildpod时,我收到错误:“输出:挂载错误:无法parsing[我的文件存储的编码名称]的地址.file.core.windows.net:未知的错误”

我已经确认,我的文件存储资源和托pipe该窗格的虚拟机位于相同的Azure位置(美国东部)。 我可以使用上面错误中的相同地址在托pipe该容器的虚拟机上手动安装此共享。 是否有可能我缺less一些在Git Hub教程中没有解释的容器中的configuration?

我已经尝试创build我的容器没有指定卷,并能够ping从容器内的文件存储的地址,所以我不知道无法解决地址错误来自哪里。

我无法重现您的错误,但是我们可以按照这些步骤将Azure文件共享挂载到k8s容器。
1.通过Azure新门户创buildk8s。
2.SSH k8s高手,通过k8s文件创buildsecret ,创build秘密:

在这个yaml文件中,我们应该写入存储帐户和密钥,我们应该使用base64编码的Azure存储帐户和密钥,如下所示:

 root@k8s-master-3CC6E803-0:~# echo -n jasonshare321 | base64 amFzb25zaGFyZTMyMQ== root@k8s-master-3CC6E803-0:~# echo -n Bnbh0fjykD+b/EveNoR/elOp118+0vmLsbQqVGC3H0W23mSfbH9WfV1A60Qw3CAZ70Tm4Wgpse1LEtgSJF27cQ== | base64 Qm5iaDBmanlrRCtiL0V2ZU5vUi9lbE9wMTE4KzB2bUxzYlFxVkdDM0gwVzIzbVNmYkg5V2ZWMUE2MFF3M0NBWjcwVG00V2dwc2UxTEV0Z1NKRjI3Y1E9PQ== 

然后创buildazure-secret

 root@k8s-master-3CC6E803-0:~# mkdir /azure_file root@k8s-master-3CC6E803-0:~# cd /azure_file/ root@k8s-master-3CC6E803-0:/azure_file# touch azure-secret.yaml root@k8s-master-3CC6E803-0:/azure_file# vi azure-secret.yaml 

这是azure色的秘密:

root @ k8s-master-3CC6E803-0:/ azure_file#cat azure-secret.yaml

 apiVersion: v1 kind: Secret metadata: name: azure-secret type: Opaque data: azurestorageaccountname: amFzb25zaGFyZTMyMQ== azurestorageaccountkey: Qm5iaDBmanlrRCtiL0V2ZU5vUi9lbE9wMTE4KzB2bUxzYlFxVkdDM0gwVzIzbVNmYkg5V2ZWMUE2MFF3M0NBWjcwVG00V2dwc2UxTEV0Z1NKRjI3Y1E9PQ== 

然后使用kubectl来创build秘密,如下所示:

 root@k8s-master-3CC6E803-0:/azure_file# kubectl create -f /azure_file/azure-secret.yaml secret "azure-secret" created root@k8s-master-3CC6E803-0:/azure_file# kubectl get secret NAME TYPE DATA AGE azure-secret Opaque 2 11s default-token-07cd5 kubernetes.io/service-account-token 3 35m 

3.创buildpod:创buildazure.yaml:

 root@k8s-master-3CC6E803-0:/azure_file# touch azure.yaml root@k8s-master-3CC6E803-0:/azure_file# vi azure.yaml apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - image: nginx name: nginx volumeMounts: - name: azure mountPath: /mnt/azure volumes: - name: azure azureFile: secretName: azure-secret shareName: testfileshare readOnly: false 

使用这个文件来创buildpod:

 root@k8s-master-3CC6E803-0:/azure_file# kubectl create -f /azure_file/azure.yaml pod "nginx" created root@k8s-master-3CC6E803-0:/azure_file# kubectl get pods NAME READY STATUS RESTARTS AGE nginx 1/1 Running 0 17s 

现在,pod创build完成后,我们可以使用这个脚本来检查文件,如下所示:

 root@k8s-master-3CC6E803-0:/azure_file# kubectl exec -it nginx bash root@nginx:/# ls bin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run sbin srv sys tmp usr var root@nginx:/# cd /mnt root@nginx:/mnt# ls azure root@nginx:/mnt# cd azure root@nginx:/mnt/azure# ls root@nginx:/mnt/azure# df -Th Filesystem Type Size Used Avail Use% Mounted on overlay overlay 30G 3.3G 26G 12% / tmpfs tmpfs 1.7G 0 1.7G 0% /dev tmpfs tmpfs 1.7G 0 1.7G 0% /sys/fs/cgroup /dev/sda1 ext4 30G 3.3G 26G 12% /etc/hosts //jasonshare321.file.core.windows.net/testfileshare cifs 50G 0 50G 0% /mnt/azure shm tmpfs 64M 0 64M 0% /dev/shm tmpfs tmpfs 1.7G 12K 1.7G 1% /run/secrets/kubernetes.io/serviceaccount 

注意
1.我们应该使用base64编码的Azure存储帐户和密钥。
2.将正确的文件共享名写入azure.yaml: 在这里输入图像说明

还有dynamicconfigurationazure色的文件装载function,你可以在这里find完整的例子: https : //github.com/andyzhangx/Demo/tree/master/linux/azuredfile