AWS Fargate - Amazon EKS

協助改善此頁面

想要為此使用者指南做出貢獻嗎? 捲動至此頁面底部,然後選取 [編輯此頁面於] GitHub。您的貢獻將有助於使我們的用戶指南更適合所有人。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS Fargate

重要

AWS Fargate Amazon EKS 在 AWS GovCloud (美國東部)和 AWS GovCloud (美國西部)中不可用。

本主題討論如何使用 Amazon EKS 在 AWS Fargate 上執行 Kubernetes Pods。Fargate 是一種為容器提供隨需、適當大小運算容量的科技。有了 Fargate,就不再需要自行佈建、設定或擴展虛擬機器的群組來執行容器。您也無需選擇伺服器類型、決定何時擴展節點群組,或最佳化叢集壓縮。

您可以控制哪些 Pods 要在 Fargate 上啟動,以及其如何搭配 Fargate 設定檔執行。Fargate 描述檔會定義為 Amazon EKS 叢集的一部分。Amazon EKS 透過使用由提供的上游可擴充模型建置的控制器,藉 AWS 此Kubernetes與 Fargate 整合。Kubernetes這些控制器會作為 Amazon EKS 受管 Kubernetes 控制平面的一部分執行,且負責將原生 Kubernetes Pods 排程至 Fargate。Fargate 控制器包括新的排程器,除了數個變換與驗證許可控制器之外,也會隨著預設 Kubernetes 排程器執行。當您啟動符合在 Fargate 上執行之條件的 Pod 時,在叢集中執行的 Fargate 控制器便會辨識、更新及將 Pod 排程至 Fargate。

本主題說明在 Fargate 上執行的不同 Pods 元件,並注意搭配使用 Fargate 與 Amazon EKS 的特殊考慮因素。

AWS Fargate 考量

以下是在 Amazon EKS 上使用 Fargate 的考慮因素。

  • 在 Fargate 上執行的每個 Pod 都有自己的隔離界限。這些 Pod 不會與其他 Pod 共用基礎核心、CPU 資源、記憶體資源或彈性網路介面。

  • Network Load Balancer 和 Application Load Balancer (ALB) 可以僅與具有 IP 目標的 Fargate 搭配使用。如需詳細資訊,請參閱 建立 Network Load Balancer路線應用和HTTP交通 Application Load Balancers

  • Fargate 的公開服務僅能在目標類型 IP 模式下執行,不能在節點 IP 模式下執行。若要檢查在受管節點上和在 Fargate 上執行的服務的連線狀態,建議透過服務名稱來連線。

  • Pod 必須符合其排程時的 Fargate 描述檔,以在 Fargate 上執行。與 Fargate 描述檔不符的 Pod 可能會卡在 Pending 狀態。若具有符合的 Fargate 設定檔,您可刪除已建立的待定 Pods,以將其重新排程至 Fargate。

  • Fargate 不支援 Daemonset。若您的應用程式需要常駐程式,請重新設定該常駐程式,以作為您 Pods 中的附屬容器來執行。

  • Fargate 不支援具有特殊權限的容器。

  • 在 Fargate 上執行的 Pod 不能指定 Pod 清單檔案中的 HostPortHostNetwork

  • 預設 nofilenproc 軟性限制為 1024,Fargate Pods 的硬性限制為 65535。

  • GPU 目前無法在 Fargate 上使用。

  • 在 Fargate 上執行的網繭僅支援私有子網路 (具有 AWS 服務的 NAT 閘道存取權,而不是直接路由至網 Internet Gateway),因此叢集的 VPC 必須具有可用的私人子網路。如需沒有傳出網際網路存取權的叢集,請參閱 部署網際網路存取受限的私有叢集

  • 您可以使用 調整網繭資源 Vertical Pod Autoscaler 為 Fargate Pods 設定 CPU 和記憶體的初始正確大小,然後使用 擴充網繭部署 Horizontal Pod Autoscaler 來擴展這些 Pods。若要讓 Vertical Pod Autoscaler 自動將 Pods 重新部署至具有較大 CPU 和記憶體組合的 Fargate,請將 Vertical Pod Autoscaler 的模式設定為 AutoRecreate 以確保正確的功能。如需詳細資訊,請參閱 GitHub 上的 Vertical Pod Autoscaler 文件。

  • 您的 VPC 必須啟用 DNS 解析和 DNS 主機名稱。如需詳細資訊,請參閱檢視與更新 VPC 的 DNS 支援

  • Amazon EKS Fargate 透過隔離虛擬機器 (VM) 內的每個網繭, defense-in-depth 為Kubernetes應用程式新增。此 VM 界限可防止在容器逸出時存取其他 Pod 使用的主機型資源,這是攻擊容器化應用程式並存取容器外資源的常用方法。

    使用 Amazon EKS 並不會變更您在共同責任模型下所需承擔的責任。您應該審慎考慮叢集安全性和控管控制項的組態。隔離應用程式最安全的方法是永遠在個別的叢集中執行。

  • Fargate 描述檔支援從 VPC 次要 CIDR 區塊指定子網路。您可能想要指定次要 CIDR 區塊。這是因為子網路僅提供數量有限的 IP 地址。因此,叢集中可建立的 Pods 數量也有限。若為 Pods 使用不同的子網路,您可增加可用 IP 地址的數量。如需詳細資訊,請參閱為 VPC 新增 IPv4 CIDR 區塊

  • 部署至 Fargate 節點的 Pods 不提供 Amazon EC2 執行個體中繼資料服務 (IMDS)。若有部署至 Fargate 且需要 IAM 憑證的 Pods,請使用 服務帳戶的 IAM 角色 將其指派至 Pods。若您的 Pods 需要存取 IMDS 提供的其他資訊,則必須將此資訊硬式編碼至 Pod 規格中。這包括部署到的 AWS 區域 或可用區域。Pod

  • 您無法將 Fargate 部署Pods到 AWS Outposts AWS Wavelength、或 L AWS ocal Zones。

  • Amazon EKS 必須定期修補 Fargate Pods 來確保其安全。我們嘗試以減少影響的方式進行更新,但有時,如果沒有成功移出 Pods,則必須將其刪除。您可採取一些措施以盡可能地減少中斷。如需詳細資訊,請參閱 Fargate OS 修補

  • 適用於 Amazon EKS 的 Amazon VPC CNI 外掛程式會安裝在 Fargate 叢集上。您無法搭配使用 替代相容的 CNI 外掛程式 與 Fargate 節點。

  • 在 Fargate 上執行的 Pod 會自動掛載 Amazon EFS 檔案系統。您不能將動態持續性磁碟區佈建與 Fargate 節點搭配使用,但可以使用靜態佈建。

  • 您無法將 Amazon EBS 磁碟區掛載到 Fargate Pods。

  • 您可以在 Fargate 節點上執行 Amazon EBS CSI 控制器,但是 Amazon EBS CSI 節點 DaemonSet 僅能在 Amazon EC2 執行個體上執行。

  • Kubernetes Job 標記了 CompletedFailed 之後,Job 建立的 Pods 通常會繼續存在。此行為允許您檢視日誌和結果,但使用 Fargate,如果您之後不清理 Job,將產生費用。

    若要在Job完成或失敗Pods後自動刪除相關內容,您可以使用 time-to-live (TTL) 控制器指定時段。下列範例顯示在您的 Job 清單檔案中指定 .spec.ttlSecondsAfterFinished

    apiVersion: batch/v1 kind: Job metadata: name: busybox spec: template: spec: containers: - name: busybox image: busybox command: ["/bin/sh", "-c", "sleep 10"] restartPolicy: Never ttlSecondsAfterFinished: 60 # <-- TTL controller