今天来看一看AKS Cluster里的一些新功能,AKS里的新功能非常多,之后可以考虑挑一部分简单介绍介绍,今天先开个头,主要来谈一下AKS的备份问题,这其实也是来源于之前的一个需求,有客户问到AKS Cluster我们是如何备份的,说实话问得我有点懵,之前基本没怎么考虑过这方面的问题,因为众所周知的是容器里部署的绝大部分都是无状态的应用,即使有一些数据也都是会放在一些持久化的能共享的存储里,集群本身一般是不用太考虑备份问题的,当然如果是容灾的话那就是另外一码事了
如果真的要备份的话,查了下现在也是有方案的,主要是基于Backup Vault这个产品,这个产品之前也介绍过使用Backup Vault进行Disk备份,像我们之前那种必须做snapshot的场景,这个产品是非常适合的,现在Backup Vault也可以支持AKS Cluster级别的备份,正好可以满足需求,这次就来围绕着这个介绍下
首先来看一些前提条件以及限制,做之前这部分内容要先看,以免做了半天发现原来根本不支持
- 备份扩展使用 blob 容器(安装期间在输入中提供)作为备份存储的默认位置。 若要访问此 blob 容器,扩展标识需要对具有该容器的存储帐户具有“存储帐户参与者”角色。
- 需要在要备份的源群集和将进行还原的目标群集上安装备份扩展。
- 在 AKS 群集中安装扩展之前,必须在订阅级别注册 Microsoft.KubernetesConfiguration 资源提供程序
- AKS 备份使用 CSI 驱动程序快照功能执行永久性卷的备份。 CSI 驱动程序支持适用于 Kubernetes 版本 1.21.1 或更高版本的 AKS 群集。
- 目前不支持使用服务主体的 AKS 群集。
- 备份保管库和 AKS 群集应位于同一区域和订阅中。
整个配置备份的过程如果在Portal来做的话并不算复杂,但是如果是CLI或者PowerShell反而会稍显麻烦,因为很多授权或者安装extension的步骤portal上操作的时候后台都会一次性全部做掉,如果是自己做的话要跑很多命令,还非常容易遗漏,所以这次测试大部分都是在portal上操作的
这次测试最终实现的目标是在AKS Cluster里会部署出来一套mysql的stateful set, 用Backup Vault对AKS Cluster做备份,最后会把备份的内容还原到另外一套AKS Cluster里,本篇主要集中在用Backup Vault对AKS Cluster做备份这部分
首先为了满足前提条件,要先把需要的provider之类的注册好
az provider show --namespace Microsoft.KubernetesConfiguration -o table
az provider register --namespace Microsoft.KubernetesConfiguration
az extension add --name aks-preview
az extension update --name aks-preview
az feature show --namespace "Microsoft.ContainerService" --name "TrustedAccessPreview"
az feature register --namespace "Microsoft.ContainerService" --name "TrustedAccessPreview"
因为Backup Vault备份AKS实际上也是基于开源的方案velero,数据也是存储在storage account container里的,所以这里先把container和AKS cluster一起建出来
az storage account create --name aksbackuptestnew `
--resource-group BackupAKS `
--location westus
az storage container create `
--name backup `
--account-name aksbackuptestnew
az aks create -g BackupAKS `
-n BackupAKS `
--node-osdisk-size 128 `
--admin-username azureuser `
--kubernetes-version 1.27.7 `
--location westus `
--network-plugin azure `
--node-count 1 `
--node-vm-size Standard_D2S_v3 `
--nodepool-name nodepool `
--service-cidr 10.10.0.0/24 `
--dns-service-ip 10.10.0.10 `
--vnet-subnet-id $subnet_id `
--load-balancer-sku Standard `
--max-pods 30
准备工作做完之后,就可以开始配置备份了,在安装备份用的extension之前,可以先把backup vault建出来,可以直接在install extension这个界面来创建vault
可以安装的extension非常多,可以直接搜索data protection,然后找到Azure data protection
之后就会弹出创建vault的界面了,这个创建过程很简单,直接看截图就行了
创建好vault之后,顺带可以把policy也创建出来,之后会用到
这些基本和VM备份区别不大,不过多赘述
之后就可以安装extension了
就像之前说的,备份的数据会被存储到container里,所以这里需要配置好storage account以及container
之后就可以配置备份了
这里可以看到会有一些漏掉的permission,在portal上基本直接点两下就全搞定了,如果是命令行或者terraform,这里就非常麻烦了,所以这个backup的配置,能在portal做尽量还是在portal做方便些
这里可以选择备份的policy,备份的时候可以根据需求做不同颗粒度的备份,从cluster到namespace都可以,也可以根据label筛选
到这里基本配置就完成了,看起来挺简单,实际上最开始是用CLI做的,发现步骤太多,而且权限那里按照文档做下来还是有问题,换到portal来做就简单太多了
接下来下篇我们来部署个stateful set,然后实际来做一次备份还原的测试
标签:name,extension,AKS,备份,Cluster,Azure,-- From: https://blog.51cto.com/mxyit/9257183