“「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」[1]。
”
大家好,我是张晋涛。抱歉拖更了,这次为大家带来了近一段时间内值得关注的 K8S 生态的信息。其中,Docker 和 上游进展的部分是需要重点关注的。
Docker v20.10.7 正式发布
Docker 在近期也发布了 v20.10.7 版本,这个版本中主要都是侧重在稳定性和安全性上,我们一起来看看具体有哪些值得关注的内容吧!
CLI
CLI 方面主要是移除掉了一直以来存在的 WARNING: No kernel memory limit support
这个 Warning 信息,同时在 cgroup v2 下也不会再显示 WARNING: No oom kill disable support
的 Warning 信息了。
为什么呢?因为 oom kill disable 在 cgroup v2 下不可用。如果你在 cgroup v2 下使用了 --oom-kill-disable
选项就会看到如下提示:
➜ ~ docker info |grep Cgroup
Cgroup Driver: systemd
Cgroup Version: 2
➜ ~ docker run --rm -it --oom-kill-disable -m 6m alpine sh
WARNING: Your kernel does not support OomKillDisable. OomKillDisable discarded.
这里如果要介绍 cgroup v2 那内容就太多了,我在 2019 年接受访谈聊容器技术趋势的时候就做了如下预测:
“从底层次技术的角度来看,cgroup v2 将逐步普及,进而取代 cgroup v1,但这个过程可能需要两三年左右。
整体而言,稳定性和性能优化将会是未来的主旋律。
”
现在已经过去了一年多的时间,完全符合我当时的预测。 现在包括 runc、containerd、Docker、Kubernetes 等组件已经全部都支持了 cgroup v2 ,包括 Fedora 等操作系统也已将 cgroup v2 设置成了系统默认选项。各公司也都逐步在往 cgroup v2 上进行了迁移。
Networking
在此版本中,主要解决了两个网络相关的问题。
修复了一个可能导致 Docker DNS 无法解析的 deadlock 问题,此问题主要是在使用 Swarm 集群时才会遇到 ,其他直接使用 Docker 或者将 Docker 作为 Kubernetes 容器运行时的用户不受影响。
由于在 Docker v20.10.6 版本中处理了针对有 IPv6 网络机器上容器端口映射 API 的问题,详情请参考我之前的 K8S 生态周报 - Docker v20.10.6 发布一文的内容 。但是这里没有正确的处理当内核带有
ipv6.disable=1
选项启动时的问题,这会导致 当服务器启动时候,如果设置了 ipv6.disable=1 参数且进行了端口映射,则容器无法正常启动 。解决办法有 3 种:
-
取消
ipv6.disable=1
选项的设置(但通常这么设置了应该是有特定原因的);升级到 Docker v20.10.