阿里雲Container ServiceKubernetes版(ACK)嚴格遵循社區一致性認證。本文介紹ACK發布Kubernetes 1.16版本所做的變更說明。
版本升級說明
ACK針對Kubernetes 1.16版本提供了全鏈路的組件最佳化和升級。
核心組件 | 版本號碼 | 升級注意事項 |
Kubernetes | 1.16.9 |
|
1.16.6 | Kubernetes 1.16版本對應內建的 CoreDNS為1.6.2版本。相較於Kubernetes 1.14 內建的CoreDNS 1.3.1版本,新版本的CoreDNS有以下變化:
為了使您的Corefile相容新版本的CoreDNS,我們會幫您自動進行Corefile的遷移工作,使您的Corefile匹配更新版本的CoreDNS。 | |
Docker | 19.03.5 (containerd 1.2.10) | 無 |
etcd | 3.4.3 | 無 |
版本解讀
效能最佳化
Kubernetes 1.16.6版本相比1.14的效能最佳化如下:
對PodAffinity進行最佳化,效能提升了約100%。
對序列化操作進行了最佳化。Pod list操作提升了約40%效能,Node list操作提升了約30%效能。
提升了Server端在處理帶有巨大map對象的apply請求時候的效能。
最佳化了nodelease的心跳包方案。在一個8000節點的ACK叢集中,能夠每分鐘降低50k次向API Server/etcd擷取Lease的請求。
Kubernetes 1.16.6版本在Pod建立速度方面有明顯提升。在無狀態Pod情境(Pod不用掛載configmap、secret等volume)的建立速度上:
1.16.6和1.14的Pod建立時間都滿足ACK sig-scalability 定義的SLA((99%已拉取好鏡像的Pod 啟動時間在5秒內)。
在最差情況下(99分位點),Kubernetes 1.14版的Pod建立速度接近5秒,表現差於同指標下Kubernetes 1.16.6版的3秒。
Docker 19.03.5版本相對之前的版本的最佳化如下:
內建buildkit,最佳化鏡像構建速度。
runC命令最佳化systemd檢測邏輯。容器啟動速度加快,佔用更小記憶體。
Docker 19.03.5版本在運行時穩定性上提升如下:
修複Pod使用exec健全狀態檢查時Pod偶發重啟的問題。
修複運行命令docker cp時的安全性風險漏洞CVE-2018-15664。
修複容器包含多進程(富容器)退出時Docker不響應的問題。
修複containerd的控制代碼泄露問題。
功能增強
Kubernetes 1.16.6版本相較於1.14版本的演化和增強值得注意的變更主要為以下幾個方面。
extensions/v1beta1、apps/v1beta1、apps/v1beta2的API均不再被預設支援。其中,所有apps/v1beta1和apps/v1beta1下的資源使用apps/v1替代;位於extensions/v1beta1下的資源daemonsets、deployments、replicasets將使用apps/v1替代;位於extensions/v1beta1下的資源networkpolicies使用networking.k8s.io/v1替代。
說明為了更好地相容您的業務,ACK會在Kubernetes 1.16.6版本開啟對上述API的相容,並在1.18版本再徹底廢除對其支援。建議您儘快調整這些API。
已廢棄的kubelet安全控制參數AllowPrivileged、HostNetworkSources、HostPIDSources和HostIPCSources 已被移除,取而代之的是一些准入控制(例如PodSecurityPolicy)來增強這些限制。
多個功能進入更加穩定的階段,例如CRD和Admission webhook在1.16.6版本中進入到了GA階段。
ACK對Kubernetes 1.16.6版本的增強
ACK針對Kubernetes 1.16版本做了以下方面的增強:
穩定性和效能增強
為等冪函數添加重試,提高叢集建立成功率。
在升級kubelet的過程中不重啟存量容器。
解決hugetlb導致kubelet啟動失敗問題。
可觀測性增強
最佳化Server Load Balancer到apiserver的探活日誌。
調整aggregationcontroller日誌等級。
最佳化阿里雲Container Service託管版叢集中命令get cs的輸出結果。
在summary和container指標介面上增強安全沙箱容器的指標。