協助改善此頁面
想要為此使用者指南做出貢獻? 捲動至此頁面底部,然後在 上選取編輯此頁面 GitHub。您的貢獻將幫助我們的使用者指南更適合所有人。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
簡化運算管理 AWS Fargate
重要
AWS Fargate Amazon 在 AWS GovCloud (美國東部)和 AWS GovCloud (美國西部)EKS不可用。
本主題討論如何使EKS用 Amazon Kubernetes Pods 在上執行 AWS Fargate。Fargate 是一種為容器
您可以控制哪些 Pods 要在 Fargate 上啟動,以及其如何搭配 Fargate 設定檔執行。Fargate 設定檔被定義為 Amazon EKS 叢集的一部分。Amazon 透過使用由提供的上游可擴充模型建置的控制器,藉 AWS 此Kubernetes與 Fargate EKS 整合。Kubernetes這些控制器是 Amazon EKS 受管Kubernetes控制平面的一部分執行,並負責KubernetesPods將原生控制器排程到 Fargate。Fargate 控制器包括新的排程器,除了數個變換與驗證許可控制器之外,也會隨著預設 Kubernetes 排程器執行。當您啟動符合在 Fargate 上執行之條件的 Pod 時,在叢集中執行的 Fargate 控制器便會辨識、更新及將 Pod 排程至 Fargate。
本主題介紹在 Fargate 上運行Pods的不同組件,並提出將 Fargate 與 Amazon 搭配使用的特殊考慮因素。EKS
AWS Fargate 考量
以下是關於在 Amazon EKS 上使用 Fargate 的一些注意事項。
-
在 Fargate 上執行的每個 Pod 都有自己的隔離界限。它們不會與其他核心共用基礎核心、CPU資源、記憶體資源或 elastic network interface Pod。
-
網路負載平衡器和應用程式負載平衡器 (ALBs) 只能與具有 IP 目標的 Fargate 搭配使用。如需詳細資訊,請參閱 建立 Network Load Balancer 和 Route 應用程式和 HTTP 流量 Application Load Balancers。
-
Fargate 的公開服務僅能在目標類型 IP 模式下執行,不能在節點 IP 模式下執行。若要檢查在受管節點上和在 Fargate 上執行的服務的連線狀態,建議透過服務名稱來連線。
-
Pod 必須符合其排程時的 Fargate 描述檔,以在 Fargate 上執行。與 Fargate 描述檔不符的 Pod 可能會卡在
Pending
狀態。若具有符合的 Fargate 設定檔,您可刪除已建立的待定 Pods,以將其重新排程至 Fargate。 -
Fargate 不支援 Daemonset。若您的應用程式需要常駐程式,請重新設定該常駐程式,以作為您 Pods 中的附屬容器來執行。
-
Fargate 不支援具有特殊權限的容器。
-
在 Fargate 上執行的 Pod 不能指定 Pod 清單檔案中的
HostPort
或HostNetwork
。 -
預設
nofile
和nproc
軟性限制為 1024,Fargate Pods 的硬性限制為 65535。 -
GPUs目前在 Fargate 上不提供。
-
在 Fargate 上執行的網繭僅支援私有子網路 (具有 AWS 服務的NAT閘道存取權,而不是直接路由至網 Internet Gateway),因此您的叢集VPC必須有可用的私人子網路。如需沒有傳出網際網路存取權的叢集,請參閱 部署網際網路存取受限的私有叢集。
-
您可以使用使用 調整 Pod 資源 Vertical Pod Autoscaler為 Fargate 設定初始正確的大小CPU和記憶體Pods,然後使用使用 擴展 Pod 部署 Horizontal Pod Autoscaler來縮放這些Pods大小。如果您希望垂直網繭自動配置器以更大CPU的記憶體組合自動重新部署Pods至 Fargate,請將垂直網繭自動配置器的模式設定為或
Auto
以確保功能正確。Recreate
如需詳細資訊,請參閱 GitHub 上的 Vertical Pod Autoscaler文件。 -
DNS必須為您VPC啟用解析度和DNS主機名稱。如需詳細資訊,請參閱檢視和更新 DNS VPC.
-
Amazon EKS Fargate 透過隔離虛擬機器 (VM) 內的每個網繭, defense-in-depth 為Kubernetes應用程式新增。此 VM 界限可防止在容器逸出時存取其他 Pod 使用的主機型資源,這是攻擊容器化應用程式並存取容器外資源的常用方法。
在共同的責任模式下,使用 Amazon 不EKS會改變您的責任。您應該審慎考慮叢集安全性和控管控制項的組態。隔離應用程式最安全的方法是永遠在個別的叢集中執行。
-
Fargate 設定檔支援從VPC次要CIDR區塊指定子網路。您可能需要指定次要CIDR圖塊。這是因為子網路僅提供數量有限的 IP 地址。因此,叢集中可建立的 Pods 數量也有限。若為 Pods 使用不同的子網路,您可增加可用 IP 地址的數量。若要取得更多資訊,請參閱〈將
IPv4
CIDR圖塊加入至VPC. -
部署到 Pods Fargate 節點的 Amazon EC2 執行個體中繼資料服務 (IMDS) 無法使用。如果您Pods已將其部署到需要IAM憑據的 Fargate,請將它們分配給您的Pods使用服務帳戶的 IAM 角色。如果您Pods需要通過訪問其他可用信息IMDS,則必須將此信息硬編碼到您的Pod規格中。這包括部署到的 AWS 區域 或可用區域。Pod
-
您無法將 Fargate 部署Pods到 AWS Outposts AWS Wavelength、或 L AWS ocal Zones。
-
Amazon EKS 必須定期修補 Fargate Pods 以確保其安全。我們嘗試以減少影響的方式進行更新,但有時,如果沒有成功移出 Pods,則必須將其刪除。您可採取一些措施以盡可能地減少中斷。如需詳細資訊,請參閱設定作 AWS Fargate 業系統修補事件的動作。
-
Amazon 的 Amazon VPC CNI 插件安
裝EKS在 Fargate 節點上。您無法搭配使用 Amazon EKS 群集的替代CNI插件 與 Fargate 節點。 -
在 Fargate 上Pod運行的自動掛載 Amazon EFS 文件系統。您不能將動態持續性磁碟區佈建與 Fargate 節點搭配使用,但可以使用靜態佈建。
-
您無法將 Amazon EBS 卷安裝到 Fargate Pods。
-
您可以在 Fargate 節點上運行 Amazon EBS CSI 控制器,但 Amazon EBS CSI 節點只DaemonSet能在 Amazon EC2 實例上運行。
-
在 Kubernetes Job
標記了 Completed
或Failed
之後,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