Azure Functions App:发布 Docker 容器的功能是什么?

Kru*_*lur 6 azure docker azure-functions azure-function-app

我知道可以基于 Azure Functions 运行时创建 Docker 容器。本文描述了此过程的一个示例。

\n\n

好处是 Azure Functions 可以在任何地方使用 - 如果我愿意,我可以将容器部署到 AWS。

\n\n

但我不清楚的地方是:\n当您在 Azure 门户中创建新的 Functions 应用程序时,\xe2\x80\x99 会出现一个标记为 \xe2\x80\x9cPublish\xe2\x80\x9d 的开关,并且它允许选择 \xe2\x80\x9cCode\xe2\x80\x9d 或 \xe2\x80\x9cDocker Container\xe2\x80\x9d。

\n\n

如果我选择“Docker Container”,我可以配置要使用的 Docker 映像。这在Microsoft 的文档中有记录。

\n\n

我的问题是:

\n\n
    \n
  1. 为什么我想要将包含 Functions 运行时的 Docker 容器部署到 Functions 应用程序中,而不是仅仅将其部署到 Azure 容器实例?
  2. \n
  3. 容器方法如何影响扩展?谁负责调度和执行功能?容器中的运行时,还是 Azure 上的 Functions 运行时?
  4. \n
\n

Pra*_*SFT 2

  1. 使用 docker 容器有几个优点

    • 沙箱(仅限 Windows 计划),无限制
    • 保证可以工作,因为相同的镜像将用于测试、登台和生产(并不是说正常部署不会,而是有不同版本的 Node.JS 之类的情况)
    • 对于像 Python 这样的语言,在某些情况下需要构建外部依赖项(C++ 库等),并且使用容器,您可以保证一切按预期工作,因为容器已经经过测试(并且仅构建一次)
    • 自动缩放。部署到 Azure 容器实例时,函数应用不会具有与部署到函数应用时相同的动态规模。
  2. 有两件事需要理解——调用和实例。

    • 每个实例(即函数运行时,在本例中为容器)可以根据其拥有的 CPU/RAM 处理许多调用
    • Azure 根据 HTTP 请求、队列消息等传入事件来扩展实例数量。
    • 当在 kubernetes 中运行时,扩展是通过KEDA / KNative / HPA或类似的解决方案来完成的。此外,使用AKS 虚拟节点(注意限制),您可以进行扩展,而无需向 AKS 集群添加“真实”节点。