开发团队已完成移除Kubernetes项目内置的云端供应商集成,并且创建4个新的子系统来替代这些功能,包括云端控制管理器、API服务器网络代理、Kubelet凭证提供者外部套件,以及搬迁存储使用容器存储界面(CSI)系统。而之所以开发团队要对Kubernetes云端供应商的内置支持进行调整,其目的在于使其成为真正供应商中立的平台。
Kubernetes在早期发展的时候,通过内置云端供应商的支持,来促进普及并减少复杂性,同时也创建了一套标准化实践,来确保Kubernetes在不同的云端环境具有一致性,但随着Kubernetes项目的成熟和广受采用,内置云端供应商支持出现维护上的复杂性和扩展限制。
之前Kubernetes为了要对各云端供应商提供原生支持,开发团队需要维护数百万行的Go代码,而这个复杂性随着项目发展持续增加,另外,开发团队也有意使Kubernetes成为真正的供应商中立平台,因此从Kubernetes 1.7版本开始,项目便启动删除内置云端供应商集成(KEP-2395)的计划。
经过多个版本后,开发团队终于成功将所有云端供应商集成,从内核Kubernetes存储库搬迁到外部套件,项目因此删除了约150万行的代码,Kubernetes内核组件的二进位档还大幅瘦身减少了40%。
这次Kubernetes代码搬迁影响众多组件,重要的代码路径仰赖最初5个云端供应商,包括Google云端、AWS、Azure、OpenStack和vSphere的内置集成,要将这些代码从内核切分出来,开发团队创建4个新的子系统,云端控制管理器、API服务器网络代理、Kubelet凭证提供商扩充外部套件,以及存储搬迁使用CSI系统。
云端控制管理器取代kube-controller-manager和Kubelet中,直接和云端API交互的功能,而API服务器网络代理则取代kube-apiserver的SSH信道功能。Kubelet凭证提供商扩充外部套件取代了Kubelet内置功能,用于动态取得托管在Google云端、AWS和Azure上映像档注册表的凭证。而管理Kubernetes和其他容器调度工具中的区块和文件存储系统,则搬迁使用CSI控制平面标准。
子系统经过数个版本的测试,现在都已经达到正式版本的成熟度,而且官方也预告,从Kubernetes 1.31开始,内置的云端供应商支持将永久停用,并从内核组件中删除。



2024-05-28
