挂载Azure file share 到K8S container

来源:互联网 发布:p2摄像机采集软件 编辑:程序博客网 时间:2024/05/18 02:15

在Azure里面我们可以使用虚拟机搭建k8s,也可以使用ACS(Azure container service)去创建K8S,不同的是用虚拟机去自己搭建K8S,可配置的内容多一些。ACS是个标准的模板创建的,创建完成后不可以更改相关设置。

这次介绍的是在ACS 里面创建K8S,将Azure File share 挂载到里面的container上。

创建K8s的内容下次补上,现在先介绍下怎么挂载。

首先SSH到Azure K8S的master上,然后创建k8s secret 文件。

在K8s里面的secret文件中,账号密码需要base64去编码,所以我们先到Azure portal上去创建Azure file share并收集storage account 和key,然后如下:

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

然后开始创建azure-secret.yaml

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

这是我创建的K8S azure-secret.yaml:

apiVersion: v1kind: Secretmetadata:  name: azure-secrettype: Opaquedata:  azurestorageaccountname: amFzb25zaGFyZTMyMQ==   azurestorageaccountkey: Qm5iaDBmanlrRCtiL0V2ZU5vUi9lbE9wMTE4KzB2bUxzYlFxVkdDM0gwVzIzbVNmYkg5V2ZWMUE2MFF3M0NBWjcwVG00V2dwc2UxTEV0Z1NKRjI3Y1E9PQ==

文件创建好了以后,用k8s命令去创建secret,

root@k8s-master-3CC6E803-0:/azure_file# kubectl create -f /azure_file/azure-secret.yaml secret "azure-secret" createdroot@k8s-master-3CC6E803-0:/azure_file# kubectl get secretNAME                  TYPE                                  DATA      AGEazure-secret          Opaque                                2         11sdefault-token-07cd5   kubernetes.io/service-account-token   3         35m
现在去创建新的pod file  azure.yaml :

root@k8s-master-3CC6E803-0:/azure_file# touch azure.yamlroot@k8s-master-3CC6E803-0:/azure_file# vi azure.yaml apiVersion: v1kind: Podmetadata: name: nginxspec: containers:  - image: nginx    name: nginx    volumeMounts:      - name: azure        mountPath: /mnt/azure volumes:      - name: azure        azureFile:          secretName: azure-secret          shareName: testfileshare          readOnly: false

然后用这个文件去创建pod

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

pod创建完成了,现在去检查是否挂载成功:

root@k8s-master-3CC6E803-0:/azure_file# kubectl exec -it nginx bashroot@nginx:/# ls                                                                                                         bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  varroot@nginx:/# cd /mntroot@nginx:/mnt# lsazureroot@nginx:/mnt# cd azureroot@nginx:/mnt/azure# lsroot@nginx:/mnt/azure# df -ThFilesystem                                          Type     Size  Used Avail Use% Mounted onoverlay                                             overlay   30G  3.3G   26G  12% /tmpfs                                               tmpfs    1.7G     0  1.7G   0% /devtmpfs                                               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/azureshm                                                 tmpfs     64M     0   64M   0% /dev/shmtmpfs                                               tmpfs    1.7G   12K  1.7G   1% /run/secrets/kubernetes.io/serviceaccount
我们可以在pod里面看到/mnt/azure,表示已经成功。

几个需要注意的地方:

1.需要base64 账号密码

2需要使用正确的路径








原创粉丝点击