協助改善此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要提供此使用者指南,請選擇位於每個頁面右窗格中的 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 AWS Fargate 作業系統修補事件的動作
Amazon EKS 會定期修補 AWS Fargate 節點的作業系統,以確保其安全。作為修補程序的一部分,我們會回收節點以安裝作業系統修補程式。以對您的服務產生最小影響的方式嘗試更新。不過,如果未成功移出 Pod,有時必須刪除它們。您可以採取以下措施,以最大限度地減少潛在的中斷:
-
設定適當的 Pod 中斷預算 (PDBs),以控制同時關閉的 Pod 數量。
-
在刪除 Pod 之前,建立 Amazon EventBridge 規則來處理失敗的移出。
-
在您收到的通知中發佈的移出日期之前,手動重新啟動受影響的 Pod。
-
在 AWS 使用者通知中建立通知組態。
Amazon EKS 與 Kubernetes 社群緊密合作,以盡快提供錯誤修正和安全性修補程式。所有 Fargate Pod 都從最新的 Kubernetes 修補程式版本開始,可從 Amazon EKS 取得叢集的 Kubernetes 版本。如果您有具有較舊修補程式版本的 Pod,Amazon EKS 可能會回收該 Pod 以將其更新至最新版本。這可確保您的 Pod 配備最新的安全更新。如此一來,如果有重大的常見漏洞與暴露
更新 AWS Fargate 作業系統時,Amazon EKS 會傳送通知給您,其中包含受影響的資源和即將進行的 Pod 移出日期。如果提供的移出日期不方便,您可以選擇在通知中發佈的移出日期之前手動重新啟動受影響的 Pod。在您收到通知之前建立的任何 Pod 都會遭到移出。如需如何手動重新啟動 Pod 的進一步說明,請參閱 Kubernetes 文件
若要限制當 Pod 回收時一次關閉的 Pod 數量,您可以設定 Pod 中斷預算 (PDBs)。您可以使用 PDB 根據每個應用程式的要求定義最低可用性,同時仍允許進行更新。PDB 的最低可用性必須小於 100%。如需詳細資訊,請參閱《Kubernetes 文件》中的為您的應用程式指定中斷預算
Amazon EKS 使用 Eviction API
當 Pod 的移出失敗時,Amazon EKS 會將事件傳送至您的帳戶,其中包含移出失敗的 Pod 詳細資訊。您可以在計劃終止時間之前對訊息執行操作。具體時間根據修補程式的緊迫性而有所不同。到了時,Amazon EKS 會再次嘗試移出 Pod。但是,這次如果移出失敗,則不會傳送新事件。如果移出再次失敗,您現有的 Pod 會定期刪除,讓新的 Pod 可以擁有最新的修補程式。
以下是 Pod 移出失敗時收到的範例事件。它包含有關叢集、Pod 名稱、Pod 命名空間、Fargate 設定檔和排程終止時間的詳細資訊。
{ "version": "0", "id": "12345678-90ab-cdef-0123-4567890abcde", "detail-type": "EKS Fargate Pod Scheduled Termination", "source": "aws.eks", "account": "111122223333", "time": "2021-06-27T12:52:44Z", "region": "region-code", "resources": [ "default/my-database-deployment" ], "detail": { "clusterName": "my-cluster", "fargateProfileName": "my-fargate-profile", "podName": "my-pod-name", "podNamespace": "default", "evictErrorMessage": "Cannot evict pod as it would violate the pod's disruption budget", "scheduledTerminationTime": "2021-06-30T12:52:44.832Z[UTC]" } }
此外,具有與 Pod 相關聯的多個 PDBs 可能會導致移出失敗事件。此事件傳回以下錯誤訊息。
"evictErrorMessage": "This pod has multiple PodDisruptionBudget, which the eviction subresource does not support",
您可以根據此事件建立所需的動作。例如,您可以調整 Pod 中斷預算 (PDB),以控制如何移出 Pod。更具體地說,假設您從指定可用 Pod 目標百分比的 PDB 開始。在升級期間強制終止 Pod 之前,您可以將 PDB 調整為不同百分比的 Pod。若要接收此事件,您必須在叢集所屬 AWS 的帳戶和 AWS 區域中建立 Amazon EventBridge 規則。規則必須使用以下自訂模式。如需詳細資訊,請參閱《Amazon EventBridge 使用者指南》中的建立對事件做出反應的 Amazon EventBridge 規則。
{ "source": ["aws.eks"], "detail-type": ["EKS Fargate Pod Scheduled Termination"] }
可以為事件設定合適的目標以進行擷取。如需可用目標的完整清單,請參閱《Amazon EventBridge 使用者指南》中的 Amazon EventBridge 目標。您也可以在 AWS 使用者通知中建立通知組態。使用 AWS Management Console 建立通知時,請在事件規則下,選擇 Elastic Kubernetes Service (EKS) 做為 AWS 服務名稱,並選擇 EKS Fargate Pod 排程終止做為事件類型。如需詳細資訊,請參閱《 AWS 使用者通知使用者指南》中的 AWS 使用者通知入門。
如需 EKS Pod 移除的常見問題,請參閱 re:Post 中的 FAQs Fargate Pod 移除通知