阿里雲Container ServiceACK嚴格遵循社區一致性認證。本文介紹ACK發布Kubernetes 1.20版本所做的變更說明。
版本升級說明
ACK針對Kubernetes 1.20版本提供了全鏈路的組件最佳化和升級。
核心組件 | 版本號碼 | 升級注意事項 |
Kubernetes | 1.20.11 |
|
Docker Runtime | 19.03.5 | 無 |
Containerd Runtime | 1.4.4 | 無 |
etcd | 3.4.3 | 無 |
CoreDNS | 1.7.0 |
|
NVIDIA Container Runtime | 3.4.1 | 無 |
版本解讀
資源變更與棄用
【棄用】廢棄Docker運行時:Docker運行時的支援在1.20被標記為廢棄,目前您可以繼續在叢集中使用Docker。社區計劃在後續版本中移除。該變動與叢集所使用的容器鏡像(Image)無關。您依然可以使用Docker構建您的鏡像。更多資訊,請參見Dockershim Deprecation FAQ。
【棄用】對於專有版的Master節點標籤,ACK預設使用
node-role.kubernetes.io/control-plane
,同時在後續版本(不包含1.20)廢棄使用node-role.kubernetes.io/master
。【棄用】刪除selfLink欄位,不再支援。更多資訊,請參見Stop setting SelfLink in kube-apiserver。
【棄用】Ingress和IngressClass資源的
extensions/v1beta1
API和networking.k8s.io/v1beta1
API已經廢棄,並且會在1.22版本之後被移除。請使用networking.k8s.io/v1
替代。說明由於ACK中預設使用的Nginx Ingress Controller組件的限制,ACK中Ingress和IngressClass資源的networking.k8s.io/v1beta1 API可以正常被使用。
【變更】叢集內部署的Admission Webhook組件自簽發的服務端認證需包含必要的SAN欄位。當您的ACK叢集升級到1.20及以上Kubernetes版本前,請確保叢集內部署的Admission Webhook組件自簽發的服務端認證已經包含必要的SAN欄位。更多資訊,請參見Helm Chart配置樣本。
功能增強
kubelet修複探測逾時時間對EXEC探測方式不準的問題。修複之後預設的EXEC探測方式的探測逾時時間預設為1秒(逾時時間較短)。如果您未對EXEC探測方式的探測逾時時間設定特定值,建議您加上此配置。
API優先順序和公平性( APF )是Kubernetes預設開啟的測試版(Beta)特性。您可以通過此特性對不同的請求進行限制和優先順序劃分。更多資訊,請參見API Priority and Fairness。
端點切片(Endpoint Slices)特性預設啟動。從1.19開始,kube-proxy預設啟用Endpoint Slices,支援更大規模的叢集。更多資訊,請參見endpoint-slices。
不可修改ConfigMap和Secret。不可修改ConfigMap和Secret特性進入測試版(Beta)。如果設定ConfigMap或Secret為不可變,將不再允許修改,以降低kube-apiserver壓力。更多資訊,請參見Immutable ConfigMaps。
ACK對Kubernetes 1.20版本的增強
管控面增強
觀測性:對Request、Watch等機制增加了諸多指標(Metrics),增加了Master組件的可觀測性。
穩定性:增加對儲存層(etcd)的保護,避免了叢集啟動時,過多請求直接穿透到etcd,增強了系統的穩定性。
效能最佳化:通過增加索引,加速了List請求,減少kube-apiserver CPU消耗。
Windows容器增強
支援並預設開啟端點切片(Endpoint Slices)。
支援Device Plugin。更多資訊,請參見Device Plugins。
效能最佳化
KubeProxy:1.20.11版本中KubeProxy相容了Alibaba Cloud Linux2(kernel-4.19.91-23)及以上的版本,在開啟IPVS模式時,不設定conn_reuse_mode
為0。更多資訊,請參見IPVS。