“「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」[1]。 ”
大家好,我是张晋涛。
接近年底了,上游各个项目都在积极发布今年的最后一个版本,争取兑现年初立下的 flag。我们来看看最近有哪些值得关注的内容。
Kubernetes v1.29 是 2023 年的第三个大版本更新,也是今年的最后一个大版本,包含了 49 项主要的更新。 这个版本中有 19 个增强功能正在进入 Alpha 阶段,19 个将升级到 Beta 阶段,而另外 11 个则将升级到稳定版。
我已经在上一篇文章中进行了详细的介绍,感兴趣的小伙伴推荐阅读:Kubernetes v1.29 新特性一览 | MoeLove
今年是 Docker 的十周年,自从几年前 Docker Inc. 将自己的企业服务出售给 Mirantis,并专注在开发者服务上之后, Docker Inc. 的发展路线清晰了很多,并且今年也是各种大动作不断。
主要包括几个类型:
我很早前就开始在用这个项目了,非常方便。以下是我们在 kong/kubernetes-ingress-controller 项目中使用它的一段示例代码。
可以看到,它进行了一系列的抽象,还是很实用的。
// HTTPBin represents a docker container running the `kong/httpbin`.
type HTTPBin struct {
container testcontainers.Container
}
// NewHTTPBin spawns a docker container running the `kong/httpbin` which can be used for proxy routing testing.
func NewHTTPBin(ctx context.Context, t *testing.T) HTTPBin {
port, err := nat.NewPort("", strconv.Itoa(test.HTTPBinPort))
require.NoError(t, err)
req := testcontainers.ContainerRequest{
Image: test.HTTPBinImage,
ExposedPorts: []string{MappedLocalPort(t, port)},
WaitingFor: wait.ForListeningPort(port),
}
httpBinC, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{
ContainerRequest: req,
Started: true,
})
require.NoError(t, err)
t.Cleanup(func() {
assert.NoError(t, httpBinC.Terminate(ctx))
})
return HTTPBin{
container: httpBinC,
}
}
上述的两个收购,共同点 都是为了便于开发者进行开发和测试,而且都是知名的开源项目。
同时 Mutagen 还可以协助 Docker Desktop 优化其系统的性能,Atomicjar 则可以覆盖更多的客户。
docker compose
而非之前的 docker-compose
;image-20231218120931990
docker init
支持,便于新手入门;总体来看,我觉得 Docker Inc. 只要保持住当前的势头继续发展,应该还是可以有个不错的发展的,毕竟 Docker 也确实是个生产力工具,用户基数在那里的。
Talos 我在之前的文章中进行过介绍,不过它相对来说比较小众。
Talos 是一个现代化的操作系统,专门用于运行 Kubernetes。它是一个安全、不可变和精简的操作系统,完全开源,已经准备好用于生产环境,并得到了 Sidero Labs 团队的支持。Talos 通过 API 进行所有系统管理操作,没有 shell 或交互式控制台。它的优点包括:
它本次发布的版本中进行了如下主要组件的更新:
正好提前预告下,我搞了一套基于 Talos 的集群,我再用一段时间看看再分享下经验。
Karmada 是一个基于 Kubernetes 的管理系统, 它可以帮助用户在多 Kubernetes 集群和云平台上运行云原生应用程序, 并且无需修改这些应用程序。
通过与 Kubernetes 原生 API 的集成并提供先进的调度能力, Karmada 实现了开放式、多集群、多云的 Kubernetes。
Karmada 是在 2021 年 9 月成为 CNCF sandbox 项目的,由华为进行捐赠。当前已经被多个组织、公司应用于生产环境。
它的主体架构如下:
Karmada configuration
发展到现在, Karmada 几乎可以说是现在 Kubernetes 多集群(MultiCluster)的首选项目了。
同时 Kubernetes Multicluster SIG 中的项目基本上都处于归档和停滞的状态,我个人观点是,短时间内 不会出现完全由社区推进的 Multicluster 的其他能超越 Karmada 的项目了。
所以如果有需要,在进行技术选型的时候,我建议重点来看看 Karmada。
Rook 是一个针对 Kubernetes 的开源云原生存储编排工具,在其中使用了 Ceph 分布式存储系统,并且可以很好地与其本地集成。
Ceph 可以同时处理文件、块以及对象类型数据,并且被广泛应用于大型生产环境下的数据集群中。
通过 Rook 工具可以轻松实现 Ceph 的自动化部署及管理,从而获得可靠高效并且易于维护的分布式存储服务。
它基于 Kubernetes operator 进行构建,负责完成 Ceph 集群相关任务如:部署配置, 扩缩容, 升级更新等等.
目前该工具已经处于稳定状态,是 CNCF 的毕业项目。
其实 Rook 发展到现在也已经很不容易了,很早之前 Rook 有个比较宏大的想法,它希望能支持多种存储引擎。 但后来发现单单是支持 Ceph 已经耗费了太多的时间精力,并且也没有足够多的人能覆盖其他的存储引擎,所以后来就专注于发展 Ceph 的支持了。可以看到这个项目自从重新设定目标后,就简化了很多。
新发布的 v1.13.0 中有一些主要的破坏性变更:
此外,CephCSI v3.10 已经成为了默认的 CSI 驱动版本。
更多关于 Rook v1.13 的详细变更,请参考其 ReleaseNote
感谢大家,我们下期再见!
[1]
k8s生态: https://zhuanlan.zhihu.com/container