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

Node Exporter v1.0.0 正式发布

Prometheus 是最早由 SoundCloud 开源的监控告警解决方案。并已经成长为继 Kubernetes 之后,第二个从 CNCF 毕业的项目。伴随着云原生理念的普及和 Kubernetes 等技术的发展, Prometheus 在监控领域也有了长足的发展。

其主要组件包括 Prometheus,Alertmanager,Node Exporter,Blackbox Exporter 和 Pushgateway 等。

Promethues 采取 Pull 的模式,所采集的 metrics 需要由对应的 Exporter 暴露出来。我们最常用的用于收集系统 metrics 的组件便是 Node Exporter 了。

本周,Node Exporter 终于迎来了 v1.0.0 版本,标志着它更加稳定,更加通用。

我在本周专门写了一篇文章来介绍它这个版本中我最关注的特性: 为 Prometheus Node Exporter 加上认证, 我们可以让监控变得更加安全。

当然这个版本中也包含了众多变更和 bugfix, 这里暂且跳过,有兴趣的小伙伴可直接参阅其 ReleaseNote

Docker v19.03.10 发布

Docker 在本周发布了 v19.03.10 版本,距离上个版本 v19.03.9 仅过了两周的时间,如果在使用 Docker v19.03.x 版本的小伙伴,我个人还是建议你更新到此版本。

此版本中最主要的一个修复是网络相关的,具体而言是与内置 DNS (embedded DNS) 有关的问题,在特定场景下,如果你创建了自定义网络,当解析外部域名时,可能会出现解析失败的情况。

这个问题的根因最早是今年 3 月份我在参与 Docker 开发时遇到的,当内置 DNS 服务器域名解析失败时,可能会触发 panic 导致 Docker daemon 异常退出。随后 Sam Whitedmoby/libnetwork 中快速的对其进行了修正。

-		if err != nil && !resp.Truncated {
+		if err != nil && (resp != nil && !resp.Truncated) {

修改的内容看起来很简单,在异常处理时,增加了 resp != nil 的条件,这确实修正了我当时遇到的情况。

但这个修正却会忽略返回错误但无响应的情况,比如 DNS 服务器异常之类的情况。但由于后续 Docker 中的逻辑处理中,需要依赖于此处的错误处理,所以会错误的认为 DNS 服务器已连接成功,只是没有响应罢了。这也就带来了问题。

所以这次的修正,也还是在这个位置:

-		if err != nil && (resp != nil && !resp.Truncated) {
+		if err != nil && (resp == nil || !resp.Truncated) {

处理了两种情况:

  • 如果返回了错误,并且响应为空;
  • 如果返回了错误,并且和截断的响应无关;

经过这次的修正,那就基本覆盖了目前能考虑到的所有情况了。希望大家能尽早升级版本。

trivy 发布 v0.8 版本

在之前的 「K8S 生态周报」中已经介绍过 trivy 工具了,是一款很方便的镜像安全扫描工具。 本周它发布了 v0.8 的版本,带来了几个值得关注的变更。

  • 增加了新的子命令 trivy image $IMAGE_NAME ,同时废弃了之前的 trivy $IMAGE_NAME 的格式;
  • 增加 --format=json 用于以 JSON 形式输出结果,更便于与其他系统进行集成;
  • 通过设置 TRIVY_REGISTRY_TOKEN 环境变量,可设置 registry token 便于直接拉取镜像进行扫描;

可直接访问 Release 页面 下载使用新版本。

上游进展

  • #90960 修正了 kubectl create secret docker-registry --from-file 不可用的问题;
  • #91182 kubelet 的 --seccomp-profile-root 选项移动到了配置文件中;
  • #91171 将 etcd 的镜像换成了基于 distroless 的镜像,之前已经把其他的一些镜像都换掉了,主要考虑的点可能是安全和体积相关的问题吧。

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

TheMoeLove