Azure Functions 中的 Linux 容器支援
當您規劃和開發個別函式以在 Azure Functions 中執行時,您通常會專注於程式碼本身。 Azure Functions 可讓您輕鬆地將程式碼專案部署至 Azure 中的函式應用程式。 當您將程式碼專案部署至在 Linux 上執行的函式應用程式時,專案會在為您自動建立的容器中執行。 此容器是由 Functions 管理。
Functions 也支援容器化函式應用程式部署。 在容器化部署中,您可以從支援的架構映像,在本機 Docker 容器中建立自己的函式應用程式執行個體。 接著,您可以將此容器化函式應用程式部署至 Azure 中的裝載環境。 建立您自己的函式應用程式容器可讓您自訂或控制函式程式碼的即時執行階段環境。
重要
在建立自己的容器時,必須讓容器的基礎映像持續更新為最新的受支援基礎映像。 Azure Functions 的受支援基礎映像為語言特定,可在 Azure Functions 基礎映像存放庫中找到。
Functions 小組致力於發佈這些基礎映像的每月更新。 一般更新包括 Functions 執行階段和語言的最新次要版本更新與安全性修正。 您應該定期從最新的基礎映像更新容器,並重新部署更新後的容器版本。
容器裝載選項
在 Azure 中載入容器化函式應用程式有數個選項:
主控選項 | 福利 |
---|---|
Azure 容器應用程式 | Azure Functions 提供整合式支援,可在 Azure 容器應用程式上開發、部署和管理容器化函數應用程式。 這可讓您使用 Azure 入口網站 中的相同 Functions 工具和頁面來管理您的應用程式。 當您需要在 Azure 中與其他微服務、API、網站、工作流程或任何容器裝載程式相同的環境中執行事件驅動的函式時,請使用 Azure 容器應用程式來裝載函數應用程式容器。 容器應用程式裝載可讓您在 Kubernetes 型環境中執行函式,內建支援開放原始碼監視、mTLS、Dapr 和 KEDA。 支援調整為零,並提供無伺服器隨用隨付裝載模型。 您也可以使用工作負載配置檔來要求專用硬體,甚至是 GPU。 在 Azure 上執行容器化函式應用程式的建議裝載選項。 |
已啟用 Azure Arc 的 Kubernetes 叢集 (預覽) | 您可以在已啟用 Azure Arc 的 Kubernetes 叢集上裝載函式應用程式,做為僅限程式碼部署,或在自訂 Linux 容器中。 Azure Arc 可讓您連結 Kubernetes 叢集,以便您可以在 Azure 中加以管理和設定。 在已啟用 Azure Arc 的 Kubernetes 叢集上裝載 Azure Functions 容器目前處於預覽狀態。 |
Azure Functions | 您可以在 Azure Functions 中執行容器化函式應用程式,方法是在 彈性進階方案 或 專用方案中執行容器。 進階方案裝載提供動態縮放的優點。 您可能想要使用專用方案裝載來利用現有的未使用 App Service 方案資源。 |
Kubernetes | 因為 Azure Functions 執行階段可讓您彈性地裝載您想要的位置和方式,因此您可以直接在 Kubernetes 叢集中裝載及管理函式應用程式容器。 KEDA (Kubernetes-based Event Driven Autoscaling) 能與 Azure Functions 執行階段和工具完美搭配,在 Kubernetes 中提供由事件驅動的規模調整。 請記住,使用 KEDA 或直接部署,在 Kubernetes 上執行容器化函式應用程式是一項開放原始碼工作,您可以免費使用成本,並提供參與者和社群的最佳支援。 您負責在叢集中維護自己的函式應用程式容器,即使部署至 Azure Kubernetes Service (AKS) 也一樣。 |
功能支持比較
在容器中執行函式應用程式時,支援 Azure Functions 的各種功能和行為的程度取決於您選擇的容器裝載選項。
功能/行為 | 容器應用程式(整合) | 容器應用程式(直接) | 進階方案 | 專用方案 | Kubernetes |
---|---|---|---|---|---|
產品支援 | 是 | 無 | Yes | 是 | No |
Functions 入口網站整合 | 是 | 不 | 是 | 是 | 不 |
事件驅動調整 | 是5 | 是(縮放規則) | 是 | 無 | No |
最大縮放比例 (實例) | 10001 | 10001 | 1002 | 10-303 | 因叢集而異 |
調整為零的實例 | 是 | 是 | No | No | KEDA |
運行時間限制 | 未系結6 | 未系結6 | 未系結7 | 未系結8 | 沒有 |
核心工具部署 | func azurecontainerapps |
No | 無 | No | func kubernetes |
修訂 | 不 | 是 | 不 | 否 | 不 |
部署位置 | 不 | 不 | 是 | 是 | 不 |
串流記錄 | 是 | 是 | 是 | 是 | 不 |
主控台存取 | 目前無法使用4 | Yes | 是(使用 Kudu) | 是(使用 Kudu) | 是 (在 Pod 中使用 kubectl ) |
冷啟動風險降低 | 最小復本 | 調整規則 | Always-ready/pre-warmed 實例 | n/a | n/a |
App Service 驗證 | 目前無法使用4 | 是 | 是 | 是 | 不 |
自訂網域名稱 | 目前無法使用4 | 是 | 是 | 是 | 不 |
私鑰憑證 | 目前無法使用4 | 是 | 是 | 是 | 不 |
虛擬網路 | 是 | 是 | 是 | 是 | 是 |
可用性區域 | 是 | 是 | 是 | 是 | 是 |
診斷 | 目前無法使用4 | 是 | 是 | 是 | 不 |
專用硬體 | 是 (工作負載設定檔) | 是 (工作負載設定檔) | 不 | 是 | Yes |
專用 GPU | 是 (工作負載設定檔) | 是 (工作負載設定檔) | 不 | No | Yes |
可設定的記憶體/CPU 計數 | 是 | 是 | No | 不 | 是 |
[免費授與] 選項 | 是 | 是 | 無 | 無 | No |
價格詳細資料 | 容器應用程式計費 | 容器應用程式計費 | 進階方案計費 | 專用方案計費 | AKS 定價 |
服務名稱需求 | 2-32 個字元:限制為小寫字母、數位和連字元。 必須以字母開頭,並以英數位元結尾。 | 2-32 個字元:限制為小寫字母、數位和連字元。 必須以字母開頭,並以英數位元結尾。 | 少於64個字元:限制為英數位元和連字元。 無法以連字元開頭或結尾。 | 少於64個字元:限制為英數位元和連字元。 無法以連字元開頭或結尾。 | 少於 253 個字元:限制為英數位元和連字元。 必須以英數位元開頭和結尾。 |
- 在容器應用程式上,預設值為 10 個執行個體,但您可以設定最大複本數目,其整體上限為 1000。 只要有足夠的核心配額可用,就會接受此設定。 當您從 Azure 入口網站 建立函式應用程式時,限制為 300 個實例。
- 在某些區域中,進階版方案中的 Linux 應用程式可以調整為 100 個執行個體。 如需詳細資訊,請參閱進階方案一文。
- 如需各種 App Service 方案選項的特定限制,請參閱 App Service 方案限制。
- 功能同位是 Azure Container Apps 上整合式裝載的目標。
- 需要 KEDA;大部分觸發程式都支援。 若要瞭解哪些觸發程式支援事件驅動調整,請參閱 容器應用程式裝載的考慮。
- 當複本數目下限設定為零時,預設逾時會取決於應用程式中使用的特定觸發程式。
- 沒有強制執行的最大執行逾時持續時間。 不過,在相應縮小期間,提供給函式執行的寬限期為 60 分鐘,並在平臺更新期間提供寬限期 10 分鐘。
- 需要將 App Service 方案設定為 Always On。 在平台更新期間會提供 10 分鐘的寬限期。
開始使用
使用這些連結來開始使用 Linux 容器中的 Azure Functions:
我想要... | 請參閱文章: |
---|---|
建立我的第一個容器化函式 | 在本機 Linux 容器中建立函數應用程式 |
建立函式並將其部署至 Azure 容器應用程式 | 在 Azure 容器應用程式上建立您的第一個容器化函式 |
建立容器化函式並將其部署至 Azure Functions | 建立您的第一個容器化 Azure Functions |
建立函式並將其部署至已啟用 Azure Arc 的 Kubernetes | 在 Azure Arc 上建立您的第一個容器化 Azure Functions (預覽) |