共计 3810 个字符,预计需要花费 10 分钟才能阅读完成。
近几年影响最大版本来袭
2022 年 5 月 3 日,Kubernetes 1.24 正式公布。这个版本的公布能够说是“捷足先登”和“万众瞩目”,因为此次公布对 Kubernetes 社区会带来深远影响。
在 1.24 版本中,共有 46 项性能加强,其中 13 个进入了稳定期,14 个是改良现有的性能,13 个是全新的性能,此外还有六个被废除的性能。置信很多理解 Kubernetes 的同学曾经晓得了,其中最重要的就是 Kubernetes 社区正式移除了对于 Docker 的反对,在经验了一年多、几个大版本的过渡期之后,这一天还是到来了。除了这个重大变更以外,其余的新的性能加强也值得咱们关注,因为篇幅的限度,在这里就不一一列举了,笔者先带大家理解几个方面,顺便也讲讲博云容器云平台在这些畛域的工作。
陈腐上架
1. Docker 的离去
Docker 和 Kubernetes 相互陪伴,走过了很久,当初是别离的时刻了。
不久前,Kubernetes 社区公布了一个纪录片,讲述了 Kubernetes 的诞生和倒退,其中提到了 Kubernetes 和 Docker 的瓜葛,这两个我的项目有时帮忙,经常竞争,总是单干。然而令人唏嘘的是,随着 Kubernetes 成长为容器编排的事实标准,容器运行时也百花齐放,Kubernetes 社区迫切需要一套对立的规范治理多种容器运行时,因而 CRI 应运而生,而 docker shim 垫片的形式也必将逐步退出历史舞台。
相比于历史,大家可能更关怀将来怎么办,只管 Kubernetes 官网发了几篇博文向用户阐明即便废除 Docker 也不必恐慌,然而很多用户可能还是不释怀。其实 Kubernetes 社区之所以抉择当初这个工夫点放弃 Docker,很大的起因是社区中的代替计划根本曾经成熟。
在运行时层面,containerd、cri-o 初露锋芒;在客户端命令行工具中 podman,nerdctl 都是十分优良的工具。以 podman 工具为例,在应用办法上,它与 Docker 非常相似。
没错,能够将 podman 间接当作 Docker 应用,这极大缩小了开发者的迁徙老本。
在 CRI 的抉择上,咱们的可选项就更多了,因为 Kubernetes 的优良设计,很容易就能够实现一个 CRI,目前开源社区中的 CRI 实现也很多,比拟驰名的有 containerd 和 cri-o,理解 Kubernetes 的同学晓得,其实 Docker 后端就是调用的 containerd,因为 Docker 和 podman 构建的镜像都是 OCI 规范的,所以不必放心现有镜像的兼容性问题。另外,尽管 docker-shim 被正式移除了,然而 Mirantis(于 19 年底收买 docker 企业部门)保护的 cri-dockerd 我的项目依然能够帮忙大家实现 Kubernetes 和 Docker 的对接。
博云容器云平台很早就开始进行 containerd、cri-o 的兼容工作,目前曾经完满适配这两个 CRI,并且博云容器云平台的特色产品,裸金属容器也曾经适配了 containerd 和 cri-o。
随着 1.24 的公布,能够预期将来的 Kubernetes 部署环境中 Docker 占比会逐步缩小,containerd、cri-o、podman、nerdctl 等运行时和配套工具会逐步进入公众视线。Kubernetes 作为容器编排畛域多年的事实标准,此次变更对利用运维和部署的影响不大。同时,Docker 作为本次云原生浪潮的终点,在性能、易用性、用户积攒等方面依然有微小的劣势,在开发测试、集体应用等场景依然会长期存在。
2. Windows 的逐渐上位
容器技术生于 Linux,长于 Linux。尽管微软也为 Windows 退出了容器性能,然而 Kubernetes 对于 Windows 容器的兼容不尽如人意,很多性能都缺失。
不过在 1.24 版本中,咱们能够看见一些变动,Kubernetes 加强了 Windows 版本的一致性认证规范。这项工作的推动能够使云服务商提供更加稳固、合乎 Kubernetes 标准的 Kubernetes 发行版云平台。
因为历史遗留起因,其实有很多大型用户的业务程序只有 Windows 版本,他们对于 Windows 业务容器化、编排 Windows 容器也有着强烈的需要,所以博云容器云平台对于 Windows 容器的适配是非常重视的,咱们很早就适配了 Windows 零碎上的 Kubernetes。
博云的自研组件,例如 Fabric CNI 也推出了 Windows 版本,相比于 Kubernetes 官网举荐的 Flannel,Fabric 有着更优良的性能和更弱小的性能。
除此之外,博云容器云平台对 Windows 集群的计算、存储、网络和监控日志都进行了对立治理,能够说在应用体验上与 Linux 集群没有多少差异。
目前已有多个用户应用了 Windows 版本的博云容器云平台,实现了运行在 Windows 零碎上的业务在几千核 CPU 规模的集群中稳固高效运行。
3. 网络的稳中求进
网络始终是 Kubernetes 的重中之重。
在 1.24 中,Kubernetes 带来了几个对于网络的新性能,其中有两个值得特地关注
一是 NetworkPolicy 新增 NetworkPolicyStatus 字段,CNI 通过设置这个字段能够分明的通知用户目前 NetworkPolicy 是否失效
二是减少了 service 动静和动态 IP 的预留性能,此性能能够肯定水平上避免 IP 抵触。
博云自研 Fabric CNI 也将在下月公布 2.5 版本,在此版本中带来了很多新性能,而且也通过目前大热的 eBPF 技术进一步加强了 Fabric,敬请期待。
4. Job 的成长
在最近一两年,让 AI, big data, HPC 与 Kubernetes 联合始终是云原生一个乏味的方向,而 Kubernetes 的原生对象 — Job 是实现这一目标不可或缺的工具,所以在这个版本中,Kubernetes 社区为 Job 和 CronJob 做了很多优化:
Cronjob 反对设置时区
暂停 Job 的性能达到稳固状态
跟踪 Job 下 pod 状态的性能达到 beta 状态
索引作业的性能达到稳固状态
这些性能使得 Job 和 Cronjob 更加易用,然而笔者感觉,这些只是餐前小菜。
真正值得关注的是,在近期,Kubernetes 社区成立了批处理作业工作组,这个工作组可能会为 Kubernetes 原生 Job 在应用形式上带来新鲜血液,然而目前还需张望。
博云算力平台以 CNCF Volcano 我的项目为外围调度引擎,为泛滥客户提供了运行 AI、big data、HPC 等业务的土壤,切实解决了泛滥行业痛点。
5. 存储也不能落下
在 1.24 版本中,存储方向也有很多加强,其中值得关注的几项加强:
- 减少 CSI 卷运行状况监控
- CSI 卷扩大达到稳固状态
- 贮存容量跟踪达到稳固状态
在 1.24 中 CSI 卷的运行状态作为一个 Kubelet 指标被公开,通过这个指标,咱们能够更直观、实在的理解卷的状态。
博云在贮存畛域也有诸多口头,博云自研开源 CSI — Carina 曾经进入 CNCF 云原生全景图。欢送各位开发者来 Carina 社区沟通交流,博云将放弃凋谢的态度欢送各位开发者的参加(Carina 社区:https://github.com/carina-io/…)。
6. 有状态服务的减速迭代
有状态服务始终是 Kubernetes 的特色性能,它体现了 Kubernetes 对各种类型业务的容纳态度,使得诸如数据库等利用也能够很好的运行到 Kubernetes 上来。
通常在滚动更新时,为了升高失落利用实例失落的危险,并且更大限度进步可用性,有状态服务的 pod 会一次删除一个,再重建一个。然而这样速度会很慢。
在 1.24 版本中,为有状态服务引入了一个新的字段 maxUnavailable,通过设置这个字段的值,能够管制 pod 删除个数,例如将这个值设置为 5,则一次删除 5 个 pod,再新建 5 个 pod,通过这种形式,能够放慢有状态服务的滚动更新速度。
结语
“Kubernetes 1.24 是 2022 年 Kubernetes 更新的第一个版本。在疫情的第三年里,Kubernetes 社区中的贡献者们始终不懈贡献,将 Kubernetes 带到了一个全新的高度。在这个版本中,判若两人的退出了令人眼前一亮的新性能,既有移除 Docker 这样关键性的变更,也有在计算、存储、网络层面的加强。在 1.24 版本中,随着 Kubernetes 的成长,云原生将会有更多可能性值得咱们去挖掘。”
博云作为 Kubernetes 社区全球排名第 11 位的贡献者,长期继续为 Kubernetes 的倒退贡献力量。博云容器云将紧跟技术最新倒退,及时实现对 Kubernetes 1.24 版本的反对兼容,并实现对老版本的平滑降级。
最初,祝福 Kubernetes 贡献者和用户们,可能像 Kubernetes 1.24 的官网代号 –“观星者”所描述的一样,将眼光投向远方,摸索云计算更多的未知领域。
参考文章:
https://sysdig.com/blog/kuber…
https://kubernetes.io/zh/docs…
https://kubernetes.io/zh/blog…
https://kubernetes.io/zh/blog…
https://github.com/kubernetes…
https://podman.io/whatis.html
https://github.com/carina-io/…