延長支援版本發行說明 - Amazon EKS

協助改善此頁面

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

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

延長支援版本發行說明

本主題提供延長支援的每個 Kubernetes 版本需要注意的重要變更。於升級時,請仔細檢閱叢集舊版和新版本之間發生的變更。

Kubernetes1.25

Kubernetes 1.25 現在可在 Amazon EKS 中使用。如需有關 Kubernetes 1.25 的詳細資訊,請參閱官方版本公告

重要
  • 從 Kubernetes 版本 1.25 開始,您將無法再使用開箱即用的 Amazon EC2 P2 執行個體搭配 Amazon EKS 最佳化加速 Amazon Linux AMI 一起使用。這些適用於 Kubernetes 版本 1.25 或更高版本的 AMI 將支援 NVIDIA 525 系列或更新版本驅動程式,這些與 P2 執行個體不相容。但是,NVIDIA 525 系列或更新版本的驅動程式與 P3 P4P5 執行個體相容,因此您可以在 Kubernetes 版本 1.25 或更新版本將這些執行個體搭配 AMI 一起使用。在 Amazon EKS 叢集升級至版本 1.25 之前,請將任何 P2 執行個體移轉至 P3 P4P5 執行個體。您也應該主動升級您的應用程式以適用於 NVIDIA 525 系列或更新版本。我們計劃將更新的NVIDIA 525系列或更高Kubernetes版本1.23的驅動程序移植到 2024 年 1 月下旬。1.24

  • PodSecurityPolicy (PSP) 已在 Kubernetes 1.25 中移除。PSPs 已取代為 Pod 安全許可 (PSA) 和 Pod 安全標準 (PSS)。 PSA 是內建的許可控制器,其實作 PSS 中概述的安全控制項。依據預設,PSA 和 PSS 在 Kubernetes1.25 中逐步進入穩定,並在 Amazon EKS 中啟用。如果您有PSPs叢集,請務必先從內建KubernetesPSS或移轉PSP至 policy-as-code 解決方案,然後再將叢集升級至版本1.25。如果您未從 PSP 遷移,則可能會遇到工作負載中斷。如需更多資訊,請參閱Pod 安全政策 (PSP) 移除常見問答集

  • Kubernetes 版本 1.25 包含可改變稱為 API 優先順序與公平性 (APF) 之現有功能的行為之變更。APF 的功能是讓 API 伺服器在處理高於往常的請求量期間不受潛在超載的影響。其作法是取代並行請求 (可在任何指定時間處理) 數量的限制。透過實施區隔明顯的優先順序層級並限制來自各種工作負載或使用者的請求,即可達成這個目標。此方法可確保關鍵應用程式或高優先順序請求能獲得優先處理,同時防止較低優先順序的請求過量,導致 API 伺服器不堪負荷。如需詳細資訊,請參閱 Kubernetes 文件中的 API 優先順序與公平性或《EKS 最佳實務指南》中的 API 優先順序與公平性

    這些更新已在 PR #10352PR #118601 中推出。之前,APF 會統一處理所有類型的請求,每個請求都會耗用並行請求限制的單一單位。由於這些請求會對 API 伺服器帶來異常沉重的負擔,因此 APF 行為變更會將更高的並行單位指派給 LIST 請求。API 伺服器會預估將由 LIST 請求傳回的物件數量。它會指派一個與傳回的物件數量成比例的並行單位。

    一旦升級到 Amazon EKS 版本 1.25 或更高版本,此更新過的行為可能會導致具有繁重 LIST 請求的工作負載 (先前運作不會有問題) 遭遇速率限制。此情況會透過 HTTP 429 回應碼來表示。為了避免因 LIST 請求遭到速率限制而出現的潛在工作負載中斷,我們強烈建議您調整工作負載以降低這些請求的速率。或者,您可以透過調整 APF 設定來為必要請求分配更多容量,同時減少分配給非必要請求的容量來解決此問題。如需有關這些緩解技術的詳細資訊,請參閱《EKS 最佳實務指南》中的避免遺漏的請求

  • Amazon EKS 1.25 包含叢集身分驗證的增強功能,其中內含更新的 YAML 程式庫。如果在 kube-system 命名空間中找到的 aws-auth ConfigMap 中的 YAML 值以巨集開頭,其中第一個字元是大括號,則應該在此大括號 ({ }) 前後新增引號 (“ ”)。必須執行此動作,以確保該 aws-iam-authenticator 版本 v0.6.3 準確地剖析 Amazon EKS 1.25 中的 aws-auth ConfigMap

  • EndpointSlice 的 beta API 版本 (discovery.k8s.io/v1beta1) 已在 Kubernetes 1.21 中被棄用,從 Kubernetes1.25 開始不再提供。此 API 已更新為 discovery.k8s.io/v1。如需詳細資訊,請參閱 Kubernetes 文件中的 EndpointSlice。AWS Load Balancer Controller v2.4.6 和更早版本使用 v1beta1 端點與 EndpointSlices 通訊。如果您將 EndpointSlices 組態用於 AWS Load Balancer Controller,則必須先升級至 AWS Load Balancer Controller v2.4.7然後再將 Amazon EKS 叢集升級至 1.25。如果您在將 EndpointSlices 組態用於 AWS Load Balancer Controller 時升級至 1.25,控制器將損毀並導致工作負載中斷。若要升級控制器,請參閱 什麼是 AWS Load Balancer Controller?

  • SeccompDefault 已在 Kubernetes 1.25 中提升為 beta 版。透過在設定 kubelet 時設定 --seccomp-default 旗標,容器執行階段會使用其 RuntimeDefault seccomp 設定檔,而不是使用無約束的 (seccomp disabled) 模式。預設設定檔提供一組強大的安全性預設值,同時保留工作負載的功能。雖然此旗標可用,但 Amazon EKS 預設不會啟用此旗標,因此 Amazon EKS 的行為實際上不會變更。如果需要,您可以在節點上開始啟用此功能。有關更多詳細資訊,請參閱 Kubernetes 文件中的使用 seccomp 限制容器的系統呼叫教學教程。

  • Docker (也稱為 Dockershim) 的容器執行階段介面 (CRI) 支援已從 Kubernetes 1.24 和更新版本中移除。Amazon EKS 官方 AMIs 中適用於 Kubernetes 1.24 和更新叢集的唯一容器執行階段是 containerd。升級至 Amazon EKS 1.24 或更新版本之前,請移除任何不再受支援之引導指令碼旗標的參考。如需詳細資訊,請參閱 Amazon EKS 已結束對 Dockershim 的支援

  • 對萬用字元查詢的支援已在 CoreDNS 1.8.7 中被棄用,並在 CoreDNS 1.9 中移除。這是一種安全措施。萬用字元查詢不再起作用,並且傳回 NXDOMAIN 而非 IP 地址。

  • 透過隨機關閉連線,Kubernetes API 伺服器中的 goaway-chance 選項有助於防止 HTTP/2 用戶端連線卡在單一 API 伺服器執行個體上。如果連線關閉,用戶端會嘗試重新連線,並且可能會因負載平衡而停留在不同的 API 伺服器上。Amazon EKS 版本 1.25 已啟用 goaway-chance 旗標。如果在 Amazon EKS 叢集上執行的工作負載所使用的用戶端與 HTTP GOAWAY 不相容,建議您在連線終止時透過重新連線來更新用戶端,從而處理 GOAWAY

如需完整的 Kubernetes 1.25 變更日誌,請參閱 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#changelog-since-v1240

Kubernetes1.24

Kubernetes 1.24 現在可在 Amazon EKS 中使用。如需有關 Kubernetes 1.24 的詳細資訊,請參閱官方版本公告

重要
  • 從 Kubernetes 1.24 開始,依預設,不會在叢集中啟用新的 Beta API。依預設,仍會繼續啟用現有 Beta API 和新版本的現有 Beta API。Amazon EKS 遵循與上游 Kubernetes 1.24 相同的行為。依預設,會啟用控制新的和現有 API 操作之新功能的功能閘道。這與上游 Kubernetes 對齊。如需詳細資訊,請參閱 KEP-3136:測試版 API 預設為關閉狀態為開啟 GitHub。

  • Docker (也稱為 Dockershim) 的容器執行階段介面 (CRI) 支援已從 Kubernetes 1.24 中移除。Amazon EKS 官方 AMI 將 containerd 作為唯一的執行階段。移至 Amazon EKS 1.24 或更高版本之前,您必須移除任何不再受支援之引導指令碼旗標的參考。您還必須確定已為工作節點啟用 IP 轉送。如需詳細資訊,請參閱 Amazon EKS 已結束對 Dockershim 的支援

  • 如果您已為 Container Insights 設定了 Fluentd,則必須先將 Fluentd 遷移至 Fluent Bit,才能更新叢集。系統會將 Fluentd 剖析器設定為僅剖析 JSON 格式的日誌訊息。與 dockerd 不同的是,containerd 容器執行期具有不是 JSON 格式的日誌訊息。如果您未遷移到 Fluent Bit,則某些已設定的 Fluentd's 剖析器將在 Fluentd 容器內生成大量錯誤。如需有關移轉的詳細資訊,請參閱設定Fluent Bit為將記錄檔傳送 DaemonSet 至 CloudWatch 記錄檔

  • 在 Kubernetes 1.23 和較早版本中,具有未驗證 IP 和 DNS 主體別名 (SAN) 的 kubelet 服務憑證會自動與未驗證的 SAN 一起發行。這些無法驗證的 SAN 會從佈建的憑證中省略。在版本 1.24 和更新版本的叢集中,如果無法驗證任何 SAN,則不會發行提供憑證的 kubelet。這樣可以防止 kubectl exec 和 kubectl 日誌命令運作。如需詳細資訊,請參閱 將叢集升級至 Kubernetes 1.24 之前的憑證簽署考量

  • 升級使用 Fluent Bit 的 Amazon EKS 1.23 叢集時,您必須確保其正在執行 k8s/1.3.12 或更新版本。您可以從 GitHub 中重新套用最新適用的 Fluent Bit YAML 檔案來執行此操作。如需詳細資訊,請參閱 Amazon CloudWatch 使用者指南Fluent Bit中的設定

  • 當叢集工作節點跨多個可用區域部署時,您可以使用拓撲感知提示來指出將流量保留在區域中的偏好設定。在區域內路由流量有助於降低成本並改善網路效能。依預設,Amazon EKS 1.24 中會啟用拓撲感知提示。如需詳細資訊,請參閱 Kubernetes 文件中的 Topology Aware Hints (拓撲感知提示)。

  • PodSecurityPolicy (PSP) 已排程在 Kubernetes 1.25 中移除。PSPs 將被取代為 Pod 安全許可 (PSA)。PSA 是內建的許可控制器,使用 Pod 安全標準 (PSS) 中概述的安全控制項。PSA 和 PSS 都是 Beta 功能,依預設會在 Amazon EKS 中啟用。若要解決在版本 1.25 中移除 PSP 的問題,我們建議您在 Amazon EKS 中實作 PSS。如需詳細資訊,請參閱 AWS 部落格上的 Implementing Pod Security Standards in Amazon EKS (在 Amazon EKS 中實作 Pod 安全標準)。

  • 即會client.authentication.k8s.io/v1alpha1 ExecCredential 在中移除Kubernetes1.24。 ExecCredential API 在中一般可用Kubernetes1.22。如果您使用依賴於 v1alpha1 API 的 Client-go 憑證外掛程式,請聯繫外掛程式的分銷商,以了解如何遷移到 v1 API。

  • 針對 Kubernetes 1.24,我們為上游 Cluster Autoscaler 專案提供了一項功能,該專案可簡化 Amazon EKS 受管節點群組在零節點之間進行擴缩。之前,若要讓 Cluster Autoscaler 了解縮減為零節點之受管節點群組的資源、標籤和污點,您需要使用基礎 Amazon EC2 Auto Scaling 群組負責的節點詳細資訊來標記該群組。現在,當受管節點群組中沒有執行中的節點時,Cluster Autoscaler 會呼叫 Amazon EKS DescribeNodegroup API 操作。此 API 操作提供 Cluster Autoscaler 所需的受管節點群組資源、標籤和污點的資訊。此功能需要您將 eks:DescribeNodegroup 許可新增至 Cluster Autoscaler 服務帳戶 IAM 政策。當支援 Amazon EKS 受管節點群組的 Auto Scaling 群組上的 Cluster Autoscaler 標籤值與節點群組本身衝突時,Cluster Autoscaler 會偏好 Auto Scaling 群組標籤的值。如此您便能根據需要覆蓋相關的值。如需詳細資訊,請參閱 自動擴展

  • 如果您打算搭配 Amazon EKS 使用Inferentia或Trainium執行個體類型1.24,則必須升級至 AWS Neuron裝置外掛程式 1.9.3.0 或更新版本。如需詳細資訊,請參閱文件中的神經元 K8 版本 [1.9.3.0]。 AWS Neuron

  • 依據預設,Containerd 已為 IPv6 啟用 Pods。它將節點核心設定套用至 Pod 網路命名空間。因此,Pod 中的容器會繫結至 IPv4 (127.0.0.1) 和 IPv6 (::1) 迴路位址。IPv6 是通訊的預設通訊協定。在將叢集更新為版本 1.24 之前,建議您先測試多容器 Pods。修改應用程式,以便它們繫結至迴路界面上的所有 IP 地址。大多數程式庫都啟用 IPv6 繫結,這與 IPv4 向後相容。當無法修改應用程式碼時,您有兩個選項:

    • 運行 init 容器並將 disable ipv6 設定為 true (sysctl -w net.ipv6.conf.all.disable_ipv6=1)。

    • 設定變動的許可 Webhook,以便在應用程式 Pods 旁注入 init 容器。

    如果您需要針對所有節點中的全部 Pods 封鎖 IPv6,則可能必須在執行個體上停用 IPv6

  • 透過隨機關閉連線,Kubernetes API 伺服器中的 goaway-chance 選項有助於防止 HTTP/2 用戶端連線卡在單一 API 伺服器執行個體上。如果連線關閉,用戶端會嘗試重新連線,並且可能會因負載平衡而停留在不同的 API 伺服器上。Amazon EKS 版本 1.24 已啟用 goaway-chance 旗標。如果在 Amazon EKS 叢集上執行的工作負載所使用的用戶端與 HTTP GOAWAY 不相容,建議您在連線終止時透過重新連線來更新用戶端,從而處理 GOAWAY

如需完整的 Kubernetes 1.24 變更日誌,請參閱 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#changelog-since-v1230

Kubernetes1.23

Kubernetes 1.23 現在可在 Amazon EKS 中使用。如需有關 Kubernetes 1.23 的詳細資訊,請參閱官方版本公告

重要
  • Kubernetes 樹狀內至容器儲存介面 (CSI) 磁碟區遷移功能已啟用。此功能可將現有 Kubernetes Amazon EBS 的樹狀內儲存外掛程式替換為相應的 Amazon EBS CSI 驅動程式。如需詳細資訊,請參閱 Kubernetes 部落格上的 Kubernetes 1.17 功能:Kubernetes 樹狀內遷移至 CSI 磁碟區遷移至試用版

    此功能會將樹狀內 API 轉換為相等的 CSI API,並將操作委派給替代 CSI 驅動程式。透過此功能,如果您使用屬於這些工作負載的現有 StorageClassPersistentVolume 以及 PersistentVolumeClaim 物件,可能不會有任何明顯的變化。該功能啟用 Kubernetes 以將所有儲存管理操作從樹狀內外掛程式委派給 CSI 驅動程式。如果您在現有叢集中使用 Amazon EBS 磁碟區,請先在叢集中安裝 Amazon EBS CSI 驅動程式,然後再將叢集更新為版本 1.23。如果您未在更新現有叢集之前安裝驅動程式,可能會出現中斷工作負載的情形。如果您計劃在新的 1.23 叢集中部署使用 Amazon EBS 磁碟區的工作負載,請先在叢集中安裝 Amazon EBS CSI 驅動程式,然後再在叢集中部署工作負載。如需有關如何在叢集安裝 Amazon EBS CSI 驅動程式的說明,請參閱 Amazon EBS CSI 驅動程式。針對遷移功能的常見問題,請參閱 Amazon EBS CSI 遷移常見問答集

  • 針對由發佈的 Amazon EKS 最佳化 Windows AMI 的延伸 Support AWS 不適用於Kubernetes版本,1.23但適用於版本1.24及更高Kubernetes版本。

  • Kubernetes 在版本 1.20 中停止支援 dockershim,並在版本 1.24 中移除了 dockershim。如需詳細資訊,請參閱 Kubernetes 部落格中的 Kubernetes 正在從 Dockershim 繼續邁進:承諾和後續步驟。Amazon EKS 將從 Amazon EKS 版本 1.24 起終止支援 dockershim。從 Amazon EKS 版本 1.24 開始,Amazon EKS 官方 AMI 將包括 containerd 作為唯一執行階段。

    即使 Amazon EKS 版本 1.23 繼續支援 dockershim,我們建議您立即開始測試您的應用程式,以識別和移除任何 Docker 相依性。如此一來,您就可以將叢集更新為版本 1.24。如需 dockershim 移除的詳細資訊,請參閱 Amazon EKS 已結束對 Dockershim 的支援

  • Kubernetes 逐步全面開放推出 Pods、服務和節點的 IPv4/IPv6 雙堆疊聯網。不過,Amazon EKS 和 Amazon VPC CNI plugin for Kubernetes 不支援雙堆疊聯網。您的叢集可以指派 IPv4IPv6 地址到 Pods 和服務,但無法同時指派這兩種地址類型。

  • Kubernetes 讓 Pod 安全許可 (PSA) 功能逐步進入 Beta 版狀態。此功能預設為啟用。如需詳細資訊,請參閱 Kubernetes 文件中的 Pod 安全許可。PSA 取代 Pod 安全政策 (PSP) 許可控制器。不支援 PSP 許可控制器,且已排程於 Kubernetes 版本 1.25 移除。

    此 PSP 許可控制器根據設定強制實施等級的特定命名空間標籤,對命名空間中的 Pod 強制執行 Pods 安全標準。如需詳細資訊,請參閱《Amazon EKS 最佳實務指南》中的 Pod 安全標準 (PSS) 和 Pod 安全許可 (PSA)

  • 使用叢集部署的 kube-proxy 映像現在是由 Amazon EKS Distro (EKS-D) 維護的最小基礎映像。該映像包含的套件最少,而且沒有 Shell 和套件管理工具。

  • Kubernetes 逐步開放暫時容器到測試版。暫時容器是作為現有 Pod 在同樣的命名空間執行的臨時容器。您可以使用暫時容器來觀察 Pods 的狀態以及用於疑難排解和除錯目的的容器。這在 kubectl exec 因容器毀損或容器映像不包含除錯公用程式而不足時,用於互動式疑難排解格外有用。包含除錯公用程式的容器範例為 distroless 映像。如需詳細資訊,請參閱 Kubernetes 文件中的使用臨時性除錯容器進行除錯

  • Kubernetes 逐步全面開放推出 HorizontalPodAutoscaler autoscaling/v2 穩定的 API 到一般可用性。HorizontalPodAutoscaler autoscaling/v2beta2 API 已棄用。在 1.26 中將無法使用。

  • 透過隨機關閉連線,Kubernetes API 伺服器中的 goaway-chance 選項有助於防止 HTTP/2 用戶端連線卡在單一 API 伺服器執行個體上。如果連線關閉,用戶端會嘗試重新連線,並且可能會因負載平衡而停留在不同的 API 伺服器上。Amazon EKS 版本 1.23 已啟用 goaway-chance 旗標。如果在 Amazon EKS 叢集上執行的工作負載所使用的用戶端與 HTTP GOAWAY 不相容,建議您在連線終止時透過重新連線來更新用戶端,從而處理 GOAWAY

如需完整的 Kubernetes 1.23 變更日誌,請參閱 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.23.md#changelog-since-v1220