K8S 生态周报| KSM 即将废弃对 VerticalPodAutoscaler 的支持

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」

大家好,我是张晋涛。

最近的 GitHub Universe 上 Kyle Daigle 介绍了 GitHub 的一个处于技术预览阶段的特性,名为 GitHub Blocks,你可以点击左侧的链接,加入 waitlist 或者查看其具体介绍。

简单来说 GitHub Blocks 就是允许在 GitHub 的仓库中增加一些 JavaScript 代码,并由 GitHub 直接进行执行/渲染。

这个特性的本意是用于增强 GitHub 上文档的体验 (当在 GitHub 上的文档体验很强大时,各种项目应该就没必要再自建文档站了吧(笑))。

我来列几个我认为特别实用的特性:

  • 对于上传到 GitHub 仓库中的 .csv 文件,不仅仅可以渲染成表格,而且还可以直接渲染出图表,根据用户的选择来自定义横纵轴,以及图表类型;
  • excalidraw 是我经常用来画图的工具,在 GitHub 中可以直接渲染 .excalidraw 的源文件,以及进行一些编辑,这可比 GitHub 集成 Mermaid 要强大的多;
  • 还可以很简单的将贡献者和趋势图等,目前在 Insights 可以看到的内容,用很简单的代码加到 markdown 文件中。我猜测这个功能上线后,有一些类似的工具可能就会被抛弃了;
  • 还有就是构建可交互的文档,比如现在很多前端框架/库的文档站基本都提供了交互的能力,在 GitHub 上也可以得到相同的能力了,而且还无需自己维护相关逻辑/代码,这不香吗?

当然,这里需要重点说明一下,这个功能目前是 GitHub 特有的,如果你依赖了这些功能,那么后续可能就无法简单的通过 迁移到其他的服务提供商(比如 GitLab)来得到相同的体验了。

kube-state-metrics v2.7 正式发布

kube-state-metrics (KSM) 是一个比较简单的,通过监听 kube-apiserver 并生成关于 Object 状态指标的组件。

我们可以通过这个组件暴露出集群内各种对象的 metrics,并结合 Prometheus 做一些监控,以及一些其他的需求。

在 v2.7 中有一个很重要的变化, 实验性的 VerticalPodAutoscaler metrics 被废弃,并将在 v2.9 中移除。 用户可以通过使用 CustomResourceStateMetrics 从 VPA 资源中获取。 主要是由于 VPA 并不是一个 Kubernetes 内置的资源,并且添加此实验性的特性,本身已经超过了该项目的主要目标,所以社区决定将其逐步移除。

此外 实验性的 CustomResourceState 也修改了其命名规则,以便于更加易用。 之前 CRD 的名称等信息都被插入到了 metrics 的名称中,这非常不方便进行聚合查询。本次的修改如下:

kube_apisix_apache_org_v2_ApisixRoute_myroute > kube_crd_myroute{group="apisix.apache.org", kind="ApisixRoute", version="v2"}

可以看到,经过这次修改,可读性更好,并且也更容易按 Group 聚合。如果存在多个版本的资源,也会很方便进行管理。

此外还有一些值得注意的变更:

  • #1752 实验性的增加了 kube_pod_container_status_last_terminated_exitcode 指标,这样就可以查看 Pod 上次退出时的状态码了,在排查问题的时候很方便;
  • #1905 添加了对 IngressClass 资源的 metrcis;

更多关于此版本的变更,请查看其 ReleaseNote

registry.k8s.io 达到 GA

Kubernetes 自 v1.25 起将默认的镜像仓库从 k8s.gcr.io 切换到了 registry.k8s.io ,以便于给用户提供更高可用的镜像服务,且可以通过 CDN 提升速度。

这主要是由于 k8s.gcr.io 本质上是由 Google 提供的镜像服务,但是目前有其他的供应商也可以提供类似的服务, 比如,近期 Amazon 也宣布会对 Kubernetes 进行捐赠。

并且以后可能也会有其他的厂商也可能会提供类似的服务。

所以本次切换相当于提供了一个中立的服务,并通过使用各个云厂商提供的镜像服务做为后端服务, 实现了镜像仓库的高可用,并且可以在各个厂商之间进行分流,节省开支等。

大家以后拉取镜像/安装的时候,默认就会使用这个镜像仓库了。

如果你不想使用此镜像仓库,可以通过以下两种方法来使用旧的域名:

  • 直接通过命令行传递参数
kubeadm init --image-repository=k8s.gcr.io
  • 或者通过 ClusterConfiguration 进行配置
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
imageRepository: "k8s.gcr.io"

此外,kubelet 中也可以通过如下方式来指定使用旧的仓库:

kubelet --pod-infra-container-image=k8s.gcr.io/pause:3.5

Flux 从 CNCF 毕业了

在我之前的文章 GitOps 应用实践系列 - Flux CD 及其核心组件 | MoeLove 中,我曾详细介绍过 Flux 的发展过程以及其用法,感兴趣的小伙伴可以翻翻那篇文章,这里就不重复了。

Flux 是 CNCF 第 18 个毕业的项目,自 2019 年 7 月加入 CNCF sandbox,2021 年 3 月达到孵化级别,截至目前该项目获得了 4.2K star, 并且有上百位贡献者,也有很多知名公司在生产环境中使用了它。

目前 Flux 社区正在积极推进 Flux 达到 GA,预计 Flux GitOps 和 Flux Helm 在 2023 年均会达到 GA。详细计划请参考 Flux Roadmap | Flux.

其他


欢迎订阅我的文章公众号【MoeLove】

TheMoeLove

加载评论