協助改善此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要提供此使用者指南,請選擇位於每個頁面右窗格中的 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS Fargate 簡化運算管理
本主題討論使用 Amazon EKS 在 AWS Fargate 上執行 Kubernetes Pod。Fargate 是一種為容器
您可以控制哪些 Pod 從 Fargate 開始,以及它們如何使用 Fargate 設定檔執行。Fargate 描述檔會定義為 Amazon EKS 叢集的一部分。Amazon EKS 使用 Kubernetes 提供的 AWS 上游可擴展模型建置的控制器,將 Kubernetes 與 Fargate 整合。這些控制器作為 Amazon EKS 受管 Kubernetes 控制平面的一部分執行,並負責將原生 Kubernetes Pod 排程到 Fargate。Fargate 控制器包括新的排程器,除了數個變換與驗證許可控制器之外,也會隨著預設 Kubernetes 排程器執行。當您啟動符合 Fargate 上執行條件的 Pod 時,叢集中執行的 Fargate 控制器會辨識、更新並將 Pod 排程到 Fargate。
本主題說明在 Fargate 上執行之 Pod 的不同元件,並指出將 Fargate 與 Amazon EKS 搭配使用的特殊考量。
AWS Fargate 考量事項
以下是在 Amazon EKS 上使用 Fargate 的考慮因素。
-
在 Fargate 上執行的每個 Pod 都有自己的隔離界限。它們不會與其他 Pod 共用基礎核心、CPU 資源、記憶體資源或彈性網路介面。
-
Network Load Balancer 和 Application Load Balancer (ALB) 可以僅與具有 IP 目標的 Fargate 搭配使用。如需詳細資訊,請參閱 建立 Network Load Balancer 和 使用 Application Load Balancer 路由應用程式和 HTTP 流量。
-
Fargate 的公開服務僅能在目標類型 IP 模式下執行,不能在節點 IP 模式下執行。若要檢查在受管節點上和在 Fargate 上執行的服務的連線狀態,建議透過服務名稱來連線。
-
Pod 在排定在 Fargate 上執行時,必須符合 Fargate 設定檔。不符合 Fargate 描述檔的 Pod 可能會卡在 中
Pending
。如果存在相符的 Fargate 設定檔,您可以刪除已建立的待定 Pod,以將它們重新排程到 Fargate。 -
Fargate 不支援 Daemonsets。如果您的應用程式需要協助程式,請重新設定該協助程式在 Pod 中做為附屬容器執行。
-
Fargate 不支援特權容器。
-
在 Fargate 上執行的 Pod 無法在 Pod 資訊清單中指定
HostPort
或HostNetwork
。 -
預設
nofile
和nproc
軟性限制為 1024,而 Fargate Pod 的硬性限制為 65535。 -
Fargate 上目前無法使用 GPUs。
-
在 Fargate 上執行的 Pod 僅支援私有子網路 (具有 NAT 閘道存取 AWS 服務,但無法直接路由至網際網路閘道),因此叢集的 VPC 必須具有私有子網路。如需沒有傳出網際網路存取權的叢集,請參閱 部署網際網路存取受限的私有叢集。
-
您可以使用調整 Pod 資源搭配 Vertical Pod Autoscaler 來設定 Fargate Pod 的 CPU 和記憶體初始正確大小,然後使用 Scale Pod 部署搭配 Horizontal Pod Autoscaler 來擴展這些 Pod。如果您希望 Vertical Pod Autoscaler 使用較大的 CPU 和記憶體組合自動將 Pod 重新部署至 Fargate,請將 Vertical Pod Autoscaler 的 模式設定為
Auto
或Recreate
,以確保功能正確。如需詳細資訊,請參閱 GitHub 上的 Vertical Pod Autoscaler文件。 -
您的 VPC 必須啟用 DNS 解析和 DNS 主機名稱。如需詳細資訊,請參閱檢視與更新 VPC 的 DNS 支援。
-
Amazon EKS Fargate 透過在虛擬機器 (VM) 中隔離每個 Pod,為 Kubernetes 應用程式增加深度防禦功能。此 VM 界限可防止在容器逸出時存取其他 Pod 使用的主機型資源,這是攻擊容器化應用程式並存取容器外資源的常用方法。
使用 Amazon EKS 不會變更您在共同責任模型下的責任。您應該審慎考慮叢集安全性和控管控制項的組態。隔離應用程式最安全的方法是永遠在個別的叢集中執行。
-
Fargate 描述檔支援從 VPC 次要 CIDR 區塊指定子網路。您可能想要指定次要 CIDR 區塊。這是因為子網路中可用的 IP 地址數量有限。因此,叢集中也可以建立有限數量的 Pod。透過使用 Pod 的不同子網路,您可以增加可用 IP 地址的數量。如需詳細資訊,請參閱為 VPC 新增 IPv4 CIDR 區塊。
-
Amazon EC2 執行個體中繼資料服務 (IMDS) 不適用於部署到 Fargate 節點的 Pod。如果您有部署至 Fargate 且需要 IAM 登入資料的 Pod,請使用服務帳戶的 IAM 角色將它們指派給您的 Pod。如果您的 Pod 需要存取透過 IMDS 取得的其他資訊,則必須將此資訊硬式編碼至您的 Pod 規格。這包括部署 Pod 的區域 AWS 或可用區域。
-
您無法將 Fargate Pod 部署至 AWS Outposts、 AWS Wavelength 或 AWS Local Zones。
-
Amazon EKS 必須定期修補 Fargate Pod,以確保其安全。我們嘗試以降低影響的方式進行更新,但有時候如果 Pod 未成功移出,則必須刪除。您可採取一些措施以盡可能地減少中斷。如需詳細資訊,請參閱設定 AWS Fargate 作業系統修補事件的動作。
-
適用於 Amazon EKS 的 Amazon VPC CNI 外掛程式
會安裝在 Fargate 叢集上。您無法為具有 Fargate 節點的 Amazon EKS 叢集使用替代 CNI 外掛程式。 -
在 Fargate 上執行的 Pod 會自動掛載 Amazon EFS 檔案系統,而不需要手動驅動程式安裝步驟。您無法搭配 Fargate 節點使用動態持久性磁碟區佈建,但您可以使用靜態佈建。
-
Amazon EKS 不支援 Fargate Spot。
-
您無法將 Amazon EBS 磁碟區掛載至 Fargate Pod。
-
您可以在 Fargate 節點上執行 Amazon EBS CSI 控制器,但 Amazon EBS CSI 節點 DaemonSet 只能在 Amazon EC2 執行個體上執行。
-
標記 Kubernetes 任務
Completed
或 後Failed
,任務建立的 Pod 通常會繼續存在。此行為可讓您檢視日誌和結果,但使用 Fargate,如果您之後未清除任務,則會產生成本。若要在任務完成或失敗後自動刪除相關的 Pod,您可以使用time-to-live(TTL) 控制器指定時段。下列範例顯示
.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
Fargate 比較表
條件 | AWS Fargate |
---|---|
可以部署到 AWS Outpost |
否 |
可以部署到 AWS Local Zone |
否 |
可以執行需要 Windows 的容器 |
否 |
可以執行需要 Linux 的容器 |
是 |
可以執行需要 Inferentia 晶片的工作負載 |
否 |
可以執行需要 GPU 的工作負載 |
否 |
可以執行需要 Arm 處理器的工作負載 |
否 |
可以執行 AWS
Bottlerocket |
否 |
Pod 與其他 Pod 共用核心執行期環境 |
否 – 每個 Pod 都有專用的核心 |
Pod 與其他 Pod 共用 CPU、記憶體、儲存體和網路資源。 |
否 – 每個 Pod 都有專用資源,並且可以獨立調整大小以最大化資源使用率。 |
Pod 可以使用比 Pod 規格中請求更多的硬體和記憶體 |
否 – 不過,可以使用較大的 vCPU 和記憶體組態重新部署 Pod。 |
必須部署和管理 Amazon EC2 執行個體 |
否 |
必須保護、維護和修補 Amazon EC2 執行個體的作業系統 |
否 |
可以在部署節點時提供引導引數,例如額外的 kubelet |
否 |
可以將 IP 地址從與指派給節點的 IP 地址不同的 CIDR 區塊指派給 Pod。 |
否 |
可以對節點執行 SSH |
否 – SSH 沒有節點主機作業系統。 |
可以將自己的自訂 AMI 部署至節點 |
否 |
可以將您自己的自訂 CNI 部署至節點 |
否 |
必須自行更新節點 AMI |
否 |
必須自行更新節點 Kubernetes 版本 |
否 – 您不管理節點。 |
可與 Pod 搭配使用 Amazon EBS 儲存體 |
否 |
可與 Pod 搭配使用 Amazon EFS 儲存體 |
|
可以使用 Amazon FSx for Lustre 儲存搭配 Pod |
否 |
可以針對服務使用 Network Load Balancer |
是,使用建立網路負載平衡器時 |
Pod 可以在公有子網路中執行 |
否 |
可以將不同的 VPC 安全群組指派給個別 Pod |
是 |
可以執行 Kubernetes DaemonSets |
否 |
Pod 資訊清單中 |
否 |
AWS 區域可用性 |
|
可以在 Amazon EC2 專用主機上執行容器 |
否 |
定價 |
獨立 Fargate 記憶體和 CPU 組態的成本。每個 Pod 都有自己的成本。如需詳細資訊,請參閱 AWS Fargate 定價 |