本文作者|搪瓷小娃娃

本文来源|搪瓷小娃娃博客园

如我们所知,Kubernetes通过 Volume 为集群中的容器提供存储,通过Persistent Volume 和 Persistent Volume Claim实现Volume 的静态供给和动态供给。Azure File和Azure Disk 也在Kubernetes 支持的动态供给 PV 的 Provisioner之列(如下图:https://kubernetes.io/docs/concepts/storage/storage-classes/#provisioner),本篇文章就带领大家操作一遍,如何动态创建Azure File 文件共享,以供集群中的多个Pod使用。

(1)准备工作

创建好一个AKS集群,并且升级Azure CLI到最新版本

登录到你创建好的集群中,确认下各Node节点状态是否正常:

(2)添加StorageClass

创建一个azure-file-sc.yaml文件并编辑如下:

如上我们创建的这个Storage Class封装的名称(name)为azurefile, provisioner指定为kubernetes.io/azure-file,参数parameter部分,指定冗余形式,目前支持Standard的三张,其他暂不支持:

  • Standard_LRS - standard locally redundant storage (LRS)

  • Standard_GRS - standard geo-redundant storage (GRS)

  • Standard_RAGRS - standard read-access geo-redundant storage (RA-GRS)

创建好之后执行 kubectl apply -f azure-file-sc.yaml。

(3)创建集群角色并绑定

作为Azure平台上的服务,AKS仍然使用的RBAC去控制集群的权限和安全。为了使Azure平台能够创建所需要的存储资源,这一步我们需要添加一个集群角色:

---

apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRole

metadata:

name: system:azure-cloud-provider

rules:

- apiGroups: ['']

resources: ['secrets']

verbs:     ['get','create']

---

apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRoleBinding

metadata:

name: system:azure-cloud-provider

roleRef:

kind: ClusterRole

apiGroup: rbac.authorization.k8s.io

name: system:azure-cloud-provider

subjects:

- kind: ServiceAccount

name: persistent-volume-binder

namespace: kube-system

执行kubectl apply -f azure-pvc-roles.yaml 如下:

(4)创建PVC:

这一步就是动态申请存储资源的文件了,命名这个PVC yaml文件为azure-file-pvc.yml,编辑如下,指定metadata为第(2)步中的StorageClassName,配置好访问模式和容量,编辑好保存并运行,可以看到这个PVC已经被成功创建。

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: azurefile

spec:

accessModes:

- ReadWriteMany

storageClassName: azurefile

resources:

requests:

storage: 5Gi

(5)使用并检验

首先我们创建一个pod,命令为mypod1.yml,这个pod运行的是一个busybox镜像,通过PVC将Azure File mount 到容器的/datatest目录中。

apiVersion: v1

kind: Pod

metadata:

name: mypod1

spec:

containers:

- image: busybox

name: mycontainer1

volumeMounts:

- mountPath: /datatest

name: datatest

args:

- /bin/sh

- -c

- sleep 30000

volumes:

- name: datatest

persistentVolumeClaim:

claimName: my-azurefile-pvc

然后依次执行:

kubectl apply -f mypod1.yaml

#查看pod状态

kubectl get pod -o wide

#在pod里的datatest目录下创建一个名字为hello的文件

kubectl exec mypod1 touch /datatest/hello

如上是截图,在pod中创建完名字为hello的文件后,我们检验下这个文件有没有更新到Azure File中,这里说明一下,AKS动态配置完后的AzureFile会默认创建在MC_的集群中,portal上找到这个存储账户进去,找到Azure File下面的文件,如截图,发现hello.txt已经存在了。

以上就是整个实验过程,演示了AKS如何使用Azure File实现动态持久化存储。希望对大家有用。

原文地址:https://www.cnblogs.com/changruijun/p/10941339.html

AKS使用Azure File实现动态持久化存储相关推荐

  1. k8s glusterfs mysql_k8s使用glusterfs实现动态持久化存储

    简介 本文章介绍如何使用glusterfs为k8s提供动态申请pv的功能.glusterfs提供底层存储功能,heketi为glusterfs提供restful风格的api,方便管理glusterfs ...

  2. k8s使用glusterfs实现动态持久化存储

    简介 本文章介绍如何使用glusterfs为k8s提供动态申请pv的功能.glusterfs提供底层存储功能,heketi为glusterfs提供restful风格的api,方便管理glusterfs ...

  3. K8S持久化存储:NFS+StorageClass实现动态供给

    K8S持久化存储:NFS+StorageClass实现动态供给 一.简介:K8S中的持久化存储 二.部署nfs-provisioner 三.创建StorageClass 四.实验 实验1:部署depl ...

  4. 02.Kubernetes 和 KubeSphere 集群安装配置持久化存储(nfs)并通过StatefulSet动态为pod生成pv挂载

    Kubernetes 和 KubeSphere 集群安装配置持久化存储(nfs)并通过StatefulSet动态为pod生成pv挂载 简介 1. 安装配置前置环境 1.1 安装nfs文件系统 1.1. ...

  5. PaaS中OpenShift持久化存储的管理实践

    在 OpenShift 中,Pod 会被经常性的创建和销毁,也会在不同的主机之间快速的迁移.为了保证容器在重启或者迁移以后能够使用原来的数据,就必须使用持久化存储.所以,持久化存储的管理对于 PaaS ...

  6. Kubernetes之持久化存储

    转载自 https://blog.csdn.net/dkfajsldfsdfsd/article/details/81319735 ConfigMap.Secret.emptyDir.hostPath ...

  7. 部署k8s(15):持久化存储方案

    一.ConfigMap 1.概念 ConfigMap的功能在k8s1.2版本中引入的,许多应用程序会从配置文件,命令行参数或环境变量中读取配置信息.ConfigMap API会给我们提供了向容器中注入 ...

  8. k8s之持久化存储PV、PVC

    目录 前言 一.k8s 容器磁盘 1.1 Volume(存储卷) 1.2 emptyDir 存储卷 1.3  hostPath存储卷 二.PV和PVC 1.PV 概念 2.PVC概念 3.PV 与 P ...

  9. kubectl 创建pvc_k8s的持久化存储PVPVC

    1.PV和PVC的引入 Volume 提供了非常好的数据持久化方案,不过在可管理性上还有不足. 拿前面 AWS EBS 的例子来说,要使用 Volume,Pod 必须事先知道如下信息: 当前 Volu ...

最新文章

  1. GAAFET与FinFET架构
  2. C++中无符号数与有符号数的转换
  3. lib和dll文件的区别和联系
  4. java 和equals_java中的==和equals()
  5. 3.10以上charles版本抓取Https数据包
  6. 【Python基础】Python3十大经典错误及解决办法
  7. 【Android开发】XML文件解析
  8. [故障解决]Mysql爆出ERROR 1044 (42000)的错误怎么办?
  9. jmeter使用中的问题
  10. ajax交互的两种方式:html与xml
  11. 用电机进行简单的PID参数整定
  12. 多模态融合(三)MFAS: Multimodal Fusion Architecture Search
  13. cdr 表格自动填充文字_Excel表格设置生成自动填充序号、编号
  14. Unity制作3d生存游戏视频教程
  15. 荣耀畅玩5a android5.0,华为荣耀畅玩5A有几个版本?华为荣耀5A各版本区别对比介绍...
  16. 前TT(前T/T)与后TT(后T/T),以及信用证(LC,L/C)付款方式比较
  17. OneNote中英文格式不同,OneNote无法修改英文字体,OneNote默认英文字体为Calibri无法修改的问题。
  18. 【转】ARM GIC中断系列(二):gicv2架构基础
  19. 设计篇:一文分清UIUE
  20. 运筹帷幄的“懒蚂蚁”

热门文章

  1. 如何做Teams Bot的测试覆盖
  2. versa max_如何从Mac(和Vice Versa)打开或关闭iPhone的Safari选项卡
  3. 使用putty连接linux
  4. Floodlight 在 ChannelPipeline 图
  5. Windows Azure 社区新闻综述(#69 版)
  6. 大一的时候我上铺一哥们天天说梦话,一夜,他羞涩的说:“我怀孕了。”我们全体晕倒。...
  7. Prism For WPF Login对话框又简单又合理的方案之一
  8. 聊一聊Yarp结合Nacos完成服务发现
  9. .NET 6新特性试用 | TryGetNonEnumeratedCount
  10. 如何判断当前请求的是健康检查API