Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure Functions运行时提供灵活性,让您可以自由选择托管的位置和方式。 KEDA(基于 Kubernetes 的事件驱动自动缩放)与 Azure Functions 运行时和工具无缝协同工作,以在 Kubernetes 中提供事件驱动的扩展性。
重要
使用 KEDA 或直接部署在 Kubernetes 上运行容器化函数应用是一个开源项目,可以免费使用。 通过使用Azure Functions存储库中的GitHub问题,参与者和社区提供了尽力而为的支持。 请使用这些条目来报告漏洞并提出功能请求。
基于 Kubernetes 的函数的工作原理
Azure Functions服务由两个关键组件组成:一个运行时和一个缩放控制器。 Functions 运行时环境会运行并执行你的代码。 运行时包括有关如何触发、记录和管理函数执行的逻辑。 Azure Functions运行时可以在任何地方运行。 另一个组件是比例控制器。 缩放控制器监视以函数为目标的事件的速率,并主动缩放运行应用的实例数。 若要了解详细信息,请参阅 Azure Functions 缩放和托管。
基于 Kubernetes 的 Functions 在 Docker 容器中提供了 Functions 运行时,并通过 KEDA 实现事件驱动的扩展。 KEDA 可以横向缩减到零个实例(没有事件发生时),以及横向扩展到 n 个实例。 它通过为 Kubernetes 自动缩放器(水平 Pod 自动缩放器)公开自定义指标来实现此功能。 将 Functions 容器与 KEDA 结合使用时,可以在任何 Kubernetes 群集中复制无服务器函数功能。 可以使用 Azure Kubernetes 服务 (AKS) 虚拟节点 功能同样部署这些函数以实现无服务器基础设施。
在 Kubernetes 中管理 KEDA 和函数
若要在 Kubernetes 群集上运行函数,必须安装 KEDA 组件。 可通过以下方式之一安装此组件:
Azure Functions Core Tools:使用
func kubernetes install命令。Helm:可通过多种方式在任何 Kubernetes 群集中安装 KEDA,包括 Helm。 KEDA 站点上提供了部署选项。
将函数应用部署到 Kubernetes
可以将任何函数应用部署到运行 KEDA 的 Kubernetes 群集。 由于函数在 Docker 容器中运行,因此项目需要 Dockerfile。 在调用 func init。
(可选)如果需要创建 Dockerfile,请使用带有
func init选项的--docker-only命令:func init --docker-only若要详细了解 Dockerfile 生成,请参阅
func init文档。使用
func kubernetes deploy命令生成映像并将容器化函数应用部署到 Kubernetes:func kubernetes deploy --name <name-of-function-deployment> --registry <container-registry-username>在本例中,将
<name-of-function-deployment>替换为函数应用名称。 部署命令执行以下任务:- 先前创建的 Dockerfile 用于生成适用于容器化函数应用的本地映像。
- 本地映像被标记并推送到用户登录的容器注册表。
- 创建清单并将其应用于定义 Kubernetes
Deployment资源、ScaledObject资源和Secrets(包括从local.settings.json文件导入的环境变量)的群集。
从专用注册表部署函数应用
以前的部署步骤也适用于专用注册表。 如果要从专用注册表拉取容器映像,请在运行 func kubernetes deploy 时包含引用 Kubernetes 机密(其中保存专用注册表凭据)的 --pull-secret 标记。
将函数应用从 Kubernetes 中删除
部署之后,可以通过删除创建的关联 Deployment、ScaledObject 和 Secrets 来删除函数。
kubectl delete deploy <name-of-function-deployment>
kubectl delete ScaledObject <name-of-function-deployment>
kubectl delete secret <name-of-function-deployment>
从 Kubernetes 卸载 KEDA
可通过以下方式之一从群集中删除 KEDA:
Azure Functions Core Tools:使用
func kubernetes remove命令。Helm:请参阅 KEDA 站点上的卸载步骤。
KEDA 中支持的触发器
KEDA 支持以下Azure函数触发器:
HTTP 触发器支持
可以使用公开 HTTP 触发器的Azure Functions,但 KEDA 不会直接管理它们。 可以使用 KEDA Prometheus 触发器将 HTTP Azure Functions 从一个实例缩放至n个实例。
后续步骤
有关详细信息,请参阅以下资源: