「K8S 生态周报」一周年了!

「K8S 生态周报」已经整整一年啦!感谢大家的关注和支持! 从 2019 年 3 月 25 日发布第一篇「K8S 生态周报」到今天已正好一年,已经发布了 52 篇内容。在这个特殊的日子里,很想与大家分享下我的感受,以及「K8S 生态周报」的初衷和发展。 缘起 凡是接触 K8S 生态或者容器生态的小伙伴都不难发现,整个生态中涉及的东西很多,每天有无数的新消息,新变化,稍不留神就会错过很多有价值的内容。 这是一个信息爆炸的时代,同时大多数人包括我在内应该也都会存在着一定的“焦虑”,所以面对着海量的信息总是希望能更快的筛选出有价值的内容。 在去年年初,我在做个人总结时发现,虽然我每天接触到的信息很多,但真正有价值的,或者说值得我花很多精力持续去关注的内容并没有那么多。 并且由于没有归档,光靠自己记忆的话,有些事情可能就忘记了。之后也许还会再次花费时间了解或学习相关的内容,这也是另一种形式的浪费。 于是「K8S 生态周报」就以这个思路开始发布了第一篇 K8S 生态周报| 2019.03.25~2019.03.31。 过程改进 第一篇「K8S 生态周报」发布后,我觉得这个事情是值得做的。同时为了能提升效率,简化一些人工操作(自动化才是第一生产力),所以周末抽空写了个工具,把周报加到了我的 TODO 中。 具体而言,由于多年参与开源项目,我比较习惯使用 GitHub 的 issue 来管理个人的 TODO,加上 GitHub 提供了 Project 管理的功能,所以它现在看起来是这个样子: 每周有自动执行的任务来帮助我管理这些 issue,并将其加入我的每周计划便于跟踪进度。每周「K8S 生态周报」的草稿也是在 issue 中完成的,到周末时,再将内容筛选整理并发布。 用于管理这类 issue 的任务,是托管在 GitLab 上的。执行情况如下: 这组工具已经稳定运行一年了,基本没做过什么调整,还是比较能提升我的效率的。 发展阶段 「K8S 生态周报」一开始只发布在我的博客,公众号(MoeLove)、知乎专栏和掘金上,后来增加了SegmentFault和微博。也收获了很多小伙伴的支持和反馈。 上个月考虑到文字版不够详尽,所以在我家小可爱的支持下,增加了 内容更详细的视频版,同步发布在 BiliBili,西瓜视频和微信视频号上。感谢我的小可爱~ 收获 简单的分享下现在的「K8S 生态周报」的数据,基本情况如下: 可以看到非常符合我周报的更新频率,每周有明显的波动。我一直保持在周一的早上在公众号进行推送。 这些数据意义不大,只不过看着数据上涨,知道自己写的内容被更多人看到了,也会有些开心,所以我这里也就只是分享个趋势。 真正的收获有以下几项: 周报我一直坚持没有断更,所以算是用另一种方式强迫我解决了之前信息没有「归档」的这个问题; 另外,由于要把内容讲清楚明白,所以也更加深了对信息印象和理解; 个人时间比较少,要抽时间写完整的文章会比较麻烦,通过周报的形式,也可以顺便把自己想说的内容稍微加进去,也方便了很多; 去年参加 KubeCon 的时候,还有小伙伴说每周都在坚持看我的「K8S 生态周报」,嘿嘿~; 开了交流群,也有不少小伙伴的加入; 在大量信息中能快速的筛选出有效信息,并对其持续关注,对个人成长有很大好处; 展望 「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。

K8S 生态周报| Helm v3.1.2 发布

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 Docker CE v19.03.8 发布 这是一个临时增加的安全更新版本,主要用于改进之前版本中对 CVE-2019-14271 的修复措施。 在去年 9 月份,我发布的 K8S 生态周报| Harbor v1.9 带来众多新特性 一文中,我曾介绍过 Docker v19.03.1 的发布主要也是为了修复 CVE-2019-14271 漏洞。 尽管这是一个安全更新版本,但我并不建议你立马升级到此 v19.03.8 版本,除非你并没有用到 Docker 对文件系统识别相关的功能。详情请参考我上周发布的周报 K8S 生态周报| Docker v19.03.7 发布。 简单来说就是在 v19.03.7 中,执行 docker info 命令的时候,会看到 Backing Filesystem 显示为 unknown 的情况。 该问题我已经修复,原计划在 v19.03.8 中发布,不过恰逢此安全更新版本,所以现在推迟到了 v19.03.9 版本中发布,敬请期待。 Helm v3.1.2 发布 Helm 于本周发布了 v3.1.2 版本,此版本是 Helm v3.1 的第二个 bugfix 版本。在此版本中有两个值得注意的内容: #7674 当使用 APIVersionV2 时,执行 helm package 会将 Chart.

K8S 生态周报| Docker v19.03.7 发布

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 Docker v19.03.7 发布 我在之前的两次周报 《K8S 生态周报| Docker CE v19.03.6 正式发布》 和《K8S 生态周报| containerd v1.2.13 发布》 中已经介绍过了 Docker CE v19.03.6 在单核机器上 会由于 containerd 中的一个 bug 导致任务 hang 住。本周发布的 v19.03.7 已经将默认的 containerd 版本升级至 v1.2.13 ,该版本中包含了对此 bug 的修复。 此外这个版本中还包含了一个小的优化,可以让 docker stats 比之前的启动速度更快一点,直观上的感受目前可能还不是很明显。但如果是针对于某些特殊需求,需要采集使用量分析的时候,那就会比较明显了。 注意 升级到此版本后, 如果你在使用 overlay2 存储驱动时,可能会有人在执行 docker info 时,Backing Filesystem 那一栏显示会有点问题,这是因为代码里面移除了一些文件系统的检查逻辑,导致赋值也有些问题,之后会做修复。 你可能会得到类似下面的输出,不用太紧张。(如果你没有使用 Storage 相关配置的话,没太大影响的) (MoeLove) ➜ ~ docker info --format '{{ index .DriverStatus 0 }}' [Backing Filesystem <unknown>] 更新:我已经将它进行了修复,会包含在 Docker v19.

K8S 生态周报| rkt 项目正式归档并宣布终止

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 rkt 项目正式归档并宣布终止 rkt 项目我在之前的周报《K8S 生态周报| rkt 项目正式被 CNCF 归档》 就已经详细介绍过了,这里不再赘述。 从去年 rkt 项目正式被 CNCF 归档后,直到现在 rkt 项目的维护者们也终于在 GitHub 上归档该项目,并宣布此项目正式终止。 公告信息请参考 rkt/rkt@bbd90a1 。 再次感谢 rkt 在容器生态领域做出的贡献!(大概以后也不会再提到 rkt 了) Kubernetes NGINX Ingress 发布 v0.30.0 Kuberentes NGINX Ingress 近期相继发布了 v0.29 和 v0.30 两个版本,变更较频繁。主要值得注意的内容如下: NGINX 升级到了 v1.17.8 版本; 允许 ExternalName 类型的 service 有不同的 port 和 targetPort(这是一个 bugfix); 顺便聊个无关紧要的内容,这个版本中有一个 commit 比较有趣,请看 #5041 。这个 commit 其实是由一个 bot 生成的,专门用来做图片优化的应用, 通过这个 ImgBot 使得该项目中图片资源的体积减少了 36.

K8S 生态周报| containerd v1.2.13 发布

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 containerd v1.2.13 发布 上周的 K8S 生态周报 中,我在 Docker CE v19.03.6 正式发布 的部分,介绍了 Docker v19.03.6 在单核的机器/虚拟机中,可能会由于 containerd 的一个 bug 导致任务 hang 住。 本周 containerd v1.2.13 发布了,此版本中已经包含了对该内容的修复。 如果受到此问题影响的用户, 可直接下载安装使用 containerd v1.2.13 以修复此问题。 近期 Docker v19.03.7 也将发布,将会默认使用 containerd v1.2.13 ,届时直接重装/升级均可规避此问题。 Helm v3.1.1 发布 上周 Helm 3.1.0 刚发布便马上迎来了 v3.1.1 版本,这是一个 bugfix 版本,包含了几个主要的修复: 修复了 helm list 不能正确抛出错误信息的问题,原因是代码中有个错误未被捕获; 现在,如果设置了 --wait 参数时,service 不会等待 externalIPs 便可以返回了,可规避一些类似 helm upgrade --wait 时可能超时的问题; 上游进展 #87714 kubectl 的 --server-dry-run 被标记为废弃,并且可以通过使用 --dry-run=server 替代。并且 kubectl 的 --dry-run 参数接收的值,也变成了 client, server 以及 none; #86810 kubeadm config images list 实现了结构化输出,支持文本,JSON,YAML 和 GO 模板等。(我个人认为,这个功能不错的,但目前我还没想到什么情况下我会需要它); #87975 kubeadm upgrade node config 从 v1.

K8S 生态周报| Helm v3.1.0 正式发布

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 Docker CE v19.03.6 正式发布 在上次的周报 K8S 生态周报| Docker v19.03.6-rc2 发布 中,我已经介绍了 Docker v19.03.6 中包含的主要更新了。 这里我要额外增加一点提醒: 如果你在使用单核的机器/虚拟机,在升级 v19.03.6 后,可能会由于 containerd 中的一个 bug 而导致任务 hang 住 比较常见的一个可能出错的地方就是使用 GitLab.com 的共享 runner (单核的 vm),如果你没有将 dind(Docker In Docker)镜像指定为具体的版本号,而是使用类似 docker:dind 这样的 tag 时,你可能已经遇到相关的问题了。推荐当前固定为 docker:19.03.5-dind ,待后续修正。 containerd v1.2.13 中将会包含此修复(尚未发布),或者临时解决办法可以是暂时降级 containerd 。 当 container 发布新版本后,可以通过重新安装/升级 containerd 来解决此问题。 Helm v3.1.0 正式发布 自 2019 年 11 月 13 日 Helm 正式发布 v3.0.0 至今已过了三个月,Helm 终于迎来了新的特性版本, v3.

K8S 生态周报| Docker v19.03.6-rc2 发布

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 Docker v19.03.6-rc2 发布 自 2019 年 11 月 15 日 Docker v19.03.5 发布后,Docker Inc. 包括社区都发生了不少的变化。 v19.03.6 将会是 v19.03 系列的下一个 bugfix 版本。在此版本中,有几个比较值得注意的内容: buildkit: 修复了在触发 ONBUILD 规则之后,未清理掉 ONBUILD 规则的问题。对于依赖 ONBUILD 指令,且使用 buildkit 的用户而言是个重要修复; buildkit: 修复了启用了 userns 时,可能导致权限错误的问题; 使用了 libnetwork 的短 ID, 以避免遇到 UNIX_PATH_MAX 的错误; 说到这个问题,其实也蛮有趣的,可能不少人都遇到过类似的问题。当然我也想在这个 UNIX_PATH_MAX 的问题上稍微多聊一点。 这个问题其实在四五年前我在 Docker 项目中其他的部分就遇到过,解决起来也简单就是缩短路径长度即可。但你可能会好奇,要缩短到什么程度呢?多长是合理值呢? 其实这个问题要深究的话,背后有蛮多历史的,这里我先跳过。我主要说下目前的限制是什么,这个限制可以在 Linux 的源码中找到的。 // include/uapi/linux/un.h #ifndef _LINUX_UN_H #define _LINUX_UN_H #include <linux/socket.h> #define UNIX_PATH_MAX 108 struct sockaddr_un { __kernel_sa_family_t sun_family; /* AF_UNIX */ char sun_path[UNIX_PATH_MAX]; /* pathname */ }; #define SIOCUNIXFILE (SIOCPROTOPRIVATE + 0) /* open a socket file with O_PATH */ #endif /* _LINUX_UN_H */ 可以看到现在头文件中定义的是 108 。( 注意我此处使用的是 Linux 5.

使用 Kind 在离线环境创建 K8S 集群

Kind 是我很喜欢也一直在参与的项目,我计划将 Kind 相关的文章写成一个系列。这是第二篇。 背景 Kind 是 Kubernetes In Docker 的缩写,顾名思义是使用 Docker 容器作为 Node 并将 Kubernetes 部署至其中的一个工具。现在包括 Kubernetes 自身在内的很多云原生基础项目都将 Kind 应用于自身的 e2e 测试或项目的入门示例中。 默认情况下使用 Kind 创建 Kubernetes 集群,只需要先安装好 Kind 执行 kind create cluster 便可, Kind 会自动下载所需的 Docker 镜像,并启动集群。 但是,在某些情况下,我们也会有需要在离线环境中启动 Kubernetes 集群的需求。本篇文章我来为你介绍两种使用 Kind 在离线环境创建 Kubernetes 集群的方式。 使用预构建镜像 Kind 在每次发布版本时,会同时构建并发布默认使用的镜像,目前托管在 Docker Hub 上。建议你使用在每次 ReleaseNote 中指定了 shasum 的镜像。 当你在离线环境中想要使用 Kind 预构建的镜像创建集群时,你可以在任意可联网的机器上或目标机器上有网络的情况下,提前下载该镜像,并拷贝至需要创建集群的目标机器上。 如果你的机器上已经安装了 Docker,那可以直接使用 docker pull 命令下载镜像: (MoeLove) ➜ ~ docker pull kindest/node:v1.

K8S 生态周报| Rook v1.2.3 发布

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 Rook v1.2.3 发布 Rook 昨天发布了 v1.2.3 版本,此版本中仍然重点是对 Ceph 相关的内容做了改进。值得关注的内容如下: 允许使用 Ceph-CSI v2.0.0 驱动了,不过默认还是使用 CSI v1.2.2 ; 修正了 prepare job 资源配额的处理逻辑; 改善 ceph-volume 的日志输出,暴露每个 pvc ceph-volume 日志; 修正了 CSI 驱动的垃圾回收机制,这个问题根本原因是资源的 OwnerReference 所使用的 API 错了。可能导致的情况是,某些情况下 CSI 相关的 Pod 被清掉了; 对此版本感兴趣的朋友可参考其 ReleaseNote CoreDNS v1.6.7 发布 本周 CoreDNS v1.6.7 发布了,是个小版本的更新,需要注意的更新如下: plugin/{kubernetes, etcd}:允许通过 CNAME 解析 TXT 记录。这个更新是为 backend_lookup.go 中的 TXT 方法增加了一个参数,需要注意的是当前已经更新了 kubernetes 和 etcd 插件的相关调用,如果有自己实现或者使用其他第三方 plugin 的话,需要注意。 其他更新请参考 ReleaseNote

K8S 生态周报| runc v1.0.0-rc10 正式发布

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 Kubernetes 发布 v1.18.0-alpha.2 版本 这个版本包含了不少变更,这里列一些我个人感觉比较重要的内容: 修复了一个 kubectl apply --prune 时,未接收 kubectl 指定 namespace 的问题 #85357; 为 kubeadm 在 pull image 时增加了自动重试,默认是 5 次; kubelet 的一些 metrics 标记过期; 可以为 kubelet 传递 --node-ip :: 默认设置 IPv6 地址为主地址了; 关于此版本的其他变更,请查看 ReleaseNote runc v1.0.0-rc10 正式发布 runc 想必大家不会太陌生,关注我的朋友大多都看到过我之前几篇关于 runc 的文章,这里不再赘述。 本次发布的版本最主要的目的是修复 CVE-2019-19921 ,由于 runc 是个基础软件,目前也已经将 containerd 和 Docker 做了相应的更新升级以应对此漏洞。 关于这个漏洞的修复主要就是避免挂载 /proc 到非目录,以避免攻击者利用软链的方式利用 runc 将 /proc 挂载到其他的地方实现攻击。 另一个重要变更是在 runc 中增加了 cgroups2 的支持。