使用Function定时启用/停止Azure Kubernetes群集

时间:2023-02-09 19:02:45

最近在做AKS相关的测试,测试的过程中发现,虽然在Azure中的AKS群集对用户免费提供,但是多个Work Node一起运行其实也是一笔不小的费用。因为我只有在工作时间进行测试,所以就开始考虑能不能定时的启动或停止AKS群集。通过一番操作以后确定了可以使用Function来实现这个小需求

说起Function有的小伙伴可能还不是很了解,其实Function是Azure中的一种无服务器解决方案,可以使用户减少代码编写、减少需要维护的基础结构并节省成本。 作为用户而言,无需担心部署和维护服务器,云基础结构会提供保持应用程序运行所需的所有最新资源。关于Azure Function的具体说明感兴趣的朋友可以参考如下文档:

​https://learn.microsoft.com/en-us/azure/azure-functions/functions-overview​

那么接下来就一起来看下,如何配置使用Function定时启动或停止AKS群集

创建Azure Function

打开Azure Function创建页面,输入基本信息,选择运行时,在此我是用Powershell Core作为运行时,对于有开发背景的同学也可以使用Python或者其他开发语言:

使用Function定时启用/停止Azure Kubernetes群集

选择承载存储账户和操作系统,计划位置选择“消耗”:

使用Function定时启用/停止Azure Kubernetes群集

网络位置保持默认:

使用Function定时启用/停止Azure Kubernetes群集

测试环境就不启用Application Insights了,对于生产环境建议大家启用哦:

使用Function定时启用/停止Azure Kubernetes群集

确认无误,点击创建:

使用Function定时启用/停止Azure Kubernetes群集

创建完成如下图所示:

使用Function定时启用/停止Azure Kubernetes群集

配置Function访问AKS权限

在Function中,找到“设置”--“标识”,将系统分配的标识设置为“开启”:

使用Function定时启用/停止Azure Kubernetes群集

返回到AKS群集,点击“访问控制”--"添加"--“添加角色分配”:

使用Function定时启用/停止Azure Kubernetes群集

在此可以精细的控制所分配的权限,因为我是测试,所以直接给了“参与者”权限:

使用Function定时启用/停止Azure Kubernetes群集

成员位置,选择“托管标识”,然后点击“+选择成员”:

使用Function定时启用/停止Azure Kubernetes群集

选择刚刚创建的Function托管标识:

使用Function定时启用/停止Azure Kubernetes群集

确认无误,点击下一步:

使用Function定时启用/停止Azure Kubernetes群集

确认无误,点击确定:

使用Function定时启用/停止Azure Kubernetes群集

配置Function更新Powershell

切换到Function,点击“开发工具”--“高级工具”:

使用Function定时启用/停止Azure Kubernetes群集

点击“转到”

使用Function定时启用/停止Azure Kubernetes群集

这时系统会切换到kudu控制台,点击“Debug console”--“PowerShell”:

使用Function定时启用/停止Azure Kubernetes群集

点击“requirements.psd1”左侧的“编辑”:

使用Function定时启用/停止Azure Kubernetes群集

添加“ ‘Az’ = ‘7.*’ ”来更新Powershell版本:

使用Function定时启用/停止Azure Kubernetes群集

配置好以后,需要重新启动Function让配置生效:

使用Function定时启用/停止Azure Kubernetes群集

重启以后,可以看到已经开始进行更新:

使用Function定时启用/停止Azure Kubernetes群集

配置Function函数

在Function中,点击“函数”--“创建”:

使用Function定时启用/停止Azure Kubernetes群集

开发环境选择“在门户中开发”,然后选择“Timer trigger模板”,输入函数名称,计划位置设置定时任务的执行周期:

使用Function定时启用/停止Azure Kubernetes群集

创建完成如下图所示:

使用Function定时启用/停止Azure Kubernetes群集

进入函数,编写相关PowerShell 代码:

使用Function定时启用/停止Azure Kubernetes群集

配置Function时区

默认情况下,我们所创建的Function都是UTC-0时区,那如何将其UTC+8的时区呢,其实很简单,点击“配置”--“+应用程序设置”:

使用Function定时启用/停止Azure Kubernetes群集

添加时区为“China Standard Time”,具体如下图所示:

使用Function定时启用/停止Azure Kubernetes群集

添加完成如下图所示:

使用Function定时启用/停止Azure Kubernetes群集

好啦,到这里我们就配置好了使用Function定时启动或关闭AKS群集,感兴趣的话一起动手做一下吧。