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

Helm v3.3.4 发布

本周 Helm v3.3.4 发布了, 这个版本是一个 bugfix 版本, 修复了自 Helm v3.3.2 中引入的一些问题。

  • #8779 确保 warning 信息输出到 stderr 而不是 stdout ;
  • #8791 修复了自 #8779 中引入的,在 windows 上 build 的异常。主要是在 PR CI 中没有测试 Windows 平台;
  • #8777 修复了自 v3.3.2 中带来的 break change 。在 v3.3.1 及之前版本中,helm repo add 是一个幂等操作,但自 v3.3.2 中为了修复安全问题,引入了一个 break change ,如果要添加同名的 repo ,需要增加 --force-update 参数才可以。这导致了很多自动化工具的失败,所以在 v3.3.4 版本中对此进行了修复。即:如果添加的 repo 完全相同,则此操作还是幂等的,如果 repo 仅是 name 相同,但是 url 或者 repo 的信息不同,则需要增加 --force-update 参数才可以。

Docker v19.03.13 发布

Docker v19.03.13 发布了, 虽然这个版本的变更看起来不多,在 ReleaseNote 中没有做太多的说明,但 这个版本其实需要格外注意

  • 修复了 rootless 模式下,端口转发造成的资源泄漏问题,主要是 rootless 模式下依赖的组件的泄漏导致的;
  • 修复了 network sandbox 未被完全回收的问题,主要是代码中的用来清理的 defer 函数检查的变量有误;

  • 将 containerd 升级至 v1.3.7 在此版本之前,Docker v19.03 系列一直在使用 containerd v1.2.x 版本。在 Docker v19.03.12 版本中,使用的是 containerd v1.2.13 。

containerd v1.2 系列原定于 2020 年 9 月 26 日终止维护(EOL),现在经过维护者们讨论,决定将此时间延长至 10 月 15 日,以便用于迁移至 v1.3 版本中去。

也就是说, 如果你在负责 Docker / 相关容器基础环境的话,我建议你将 Docker 版本升级至 v19.03.13 ,或者直接将 containerd 从 v1.2 系列升级至 v1.3.7 版本。

至于 containerd v1.3 版本与 v1.2 之间的变化,我建议你阅读我往期的 「K8S 生态周报」,自去年 9 月 containerd v1.3.0 发布开始,几乎每个版本我都有详细介绍过。

Podman v2.1 发布

Podman 在 v2.1 带来了很多新的特性,我们一起来看看吧:

  • 新增 podman savepodman load 现在也可以像 docker 那样,创建或者加载包含多个镜像的归档文件了;

  • 现在的配置文件默认使用 $HOME/.config/containers/containers.conf 了,如果从旧版本升级可能会遇到如下提示:

    WARN[0000] Found deprecated file /home/tao/.config/containers/libpod.conf, please remove. Use /home/tao/.config/containers/containers.conf to override defaults.                                                     
    WARN[0000] Ignoring libpod.conf EventsLogger setting "journald". Use "/home/tao/.config/containers/containers.conf" if you want to change this setting and remove libpod.conf files.     
    WARN[0000] Found deprecated file /home/tao/.config/containers/libpod.conf, please remove. Use /home/tao/.config/containers/containers.conf to override defaults.                                                     
    WARN[0000] Ignoring libpod.conf EventsLogger setting "journald". Use "/home/tao/.config/containers/containers.conf" if you want to change this setting and remove libpod.conf files. 
    
  • rootless 模式下,现在完全支持 podman network 相关功能,并且 rootless 容器可加入网络;

  • podman runpodman create--cgroups 模式增加了一个新的选项 --cgroups=split,这对于将 podman 容器作为 systemd unit 运行时比较有用;

  • podman play kube 做了很多改进,比如支持 read-only 挂载,可以处理 HostAlias 等;

  • podman runpodman create 可以增加 --tz 参数,用来直接设置容器的时区,算是个比较有用的功能。

安全漏洞 CVE-2020-14386

CVE-2020-14386 这个漏洞我在 9 月初就看到了邮件组的消息,当时做了下大概的测试,不过没有写相关内容出来。

今天正好有朋友又讨论到这个漏洞,这里简单的聊一下好了。

这是一个影响面很广泛的漏洞,因为是内核漏洞而非应用层漏洞,并且 内核版本是 v4.6-rc1v5.9-rc4 之间的,全部会受此漏洞影响。

我在 CentOS 8 的系统上,直接下载 https://seclists.org/oss-sec/2020/q3/att-146/trigger_bug_c.bin 使用 gcc 编译后,执行会立即使系统 crash 并重启。

ReaHat 对此漏洞有一篇介绍, 其中介绍了触发此漏洞的条件是,具备 CAP_NET_RAW 权限的本地用户才能触发此漏洞。

对于云原生从业者而言,如果你在用 Kubernetes ,那我建议你如果没有啥特殊原因,可以直接设置 PSP ,禁止 CAP_NET_RAW 权限。

或者跳过受影响版本的内核。 当前在内核 5.4.64 和 5.8.8 均已修复。我已经将自己的环境升级到了 5.8.11 版本的内核。

上游进展

  • #94728 kubectl portforward 可以继续转发 TCP 和 UDP 了。

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

TheMoeLove