阿里云容器服務Kubernetes版(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啟動失敗問題。
可觀測性增強
優化負載均衡SLB到apiserver的探活日志。
調整aggregationcontroller日志等級。
優化阿里云容器服務托管版集群中命令get cs的輸出結果。
在summary和container指標接口上增強安全沙箱容器的指標。
參考鏈接
關于Kubernetes 1.16與其他版本的性能對比和功能演進的更多信息,請參見Kubernetes 1.15和1.16版解讀和Kubernetes 1.16和1.14性能對比。