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

KIND v0.9 正式发布

KIND 是我很喜欢也一直在参与贡献的 Kubernetes SIG 子项目,本周 KIND 发布了 v0.9 版本,距离上次 v0.8 版本已过去了 4 个多月,在此期间,我们做了很多的优化和改进。下面我来具体介绍下:

破坏性变更

  • 默认的 Node 镜像版本已经升级为最新的 Kubernetes v1.19.1 版本;
  • v1alpha3 版本的 KIND config 配置文件版本已被废弃,当前最新的版本是 v1alpha4
  • 执行 kind build node-image 命令时,如果 --type 指定为 bazel ,则仅能与 Kubernetes v1.15+ 版本兼容。如果使用默认的 docker 类型的构建方式,则可以与 v1.13+ 版本兼容;
  • 使用 KIND v0.9.0 版本构建的节点 image,仅支持与 KIND v0.9.0+ 版本一起工作。如果是使用 KIND v0.8+ 版本构建的镜像,也可与 KIND 最新版一起工作,但是少了一些内部优化的特性;
  • 不再支持 Kubernetes v1.13 之前的 Kubernetes 版本了。 多节点集群的话,仅支持 Kubernetes v1.14+ 版本了,主要是与 kubeadm 有关;

新特性

  • KIND 的配置文件中直接支持 Kubernetes RuntimeConfig 的配置了;
  • NFS volume 应该可以工作了;
  • 目前我们为每个节点设置了一个以 kind:// 前缀开头的 providerID,但以后可能会再做改动;
  • 如果配置了 proxy ,则会自动增加 no_proxy 相关的配置;
  • 默认的 CNI 会自动匹配网关的 MTU;

修正

  • 对 HA 模式及 restart 相关逻辑的修正;
  • IPv6 相关网络问题的修正;
  • 个别场景下端口转发的问题修正;

对此版本感兴趣的小伙伴,可直接访问 Release 页面 下载预编译的二进制使用。

Open Service Mesh (OSM) 已捐献给 CNCF

Open Service Mesh (OSM) 目前已经捐献给 CNCF 成为 sandbox 级别的项目。正如 OSM 创建之初时说的那样, 它将会按照 CNCF 的开源治理模型发展,应该会有个不错的后续的。

Open Service Mesh(OSM)是一个轻量级,可扩展的云原生服务网格,它使用户能够统一管理,保护和获得针对高度动态微服务环境的开箱即用的可观察性功能。

OSM 在 Kubernetes 上运行基于 Envoy 的控制平面,可以使用 SMI API 进行配置。它通过以 sidecar 的形式注入 Envoy 代理来工作。

控制面负责持续配置代理,以配置策略和路由规则等都保持最新。代理主要负责执行访问控制的规则,路由控制,采集 metrics 等。(这和目前我们常见到的 Service Mesh 方案基本都一样的)

对 Open Service Mesh (OSM) 感兴趣的小伙伴,可参考我之前写的文章 初试 Open Service Mesh(OSM)

containerd 1.4.1 发布

containerd 1.4.1 是 v1.4 系列的第一个 patch 版本,在此版本中带来了一些重要的改进,我们一起来看看吧:

  • 总是保持消费 shim 的日志;

上面这句话看似简单,但背后的影响很大。

在将 containerd 升级至 v1.4.0 后,众多 Arch Linux 的用户都遇到了配置了健康检查的容器 Hang 住的问题。详细情况请参考 Arch Linux 上的 bug 记录

目前 ArchLinux 的仓库中,已经重新构建了 containerd 的包,可以直接更新使用。

当然,还有另外两种解决办法:

  1. 直接更新至 containerd v1.4.1 版本。 此版本中已经加入了相关逻辑,始终消费 shim 的日志;

  2. 开启 shim_debug 选项( 仅作为一种不能快速升级时的临时解决办法,开启 shim_debug 后,可能会带来更多问题,比如日志更多之类的 );

  • 更新了 seccomp 默认的 profile ;

对此版本感兴趣的小伙伴,可参阅其 ReleaseNote 了解更多信息。

Harbor v2.1 发布

Harbor v2.1 本周发布了,具体上个版本 v2.0 已经过去了挺长时间了。本次 Harbor v2.1 有一些值得关注的新特性:

  • Harbor 可作为 Proxy Cache 。但 Harbor 目前的实现,是将 proxy cache 也作为一个 Harbor 中的项目来处理,所以需要将待拉取的镜像设置为 <harbor_servername>/<proxy_project_name>/repo/name:tag 的形式,才能作为缓存使用。我个人感觉这样是不太方便的。 最方便的形式是 pull through cache, 也就是 docker daemon 中的 registry-mirror ,可以正常 pull 镜像,然后由 docker 对请求镜像转发处理, 感兴趣的小伙伴,可以参考我发布的文章 突破 DockerHub 限制,全镜像加速服务
  • 非阻塞的 GC (GC 一直是 Harbor 比较受人诟病的点);
  • P2P 分发,与 Dragonfly 或 Kraken 集成;
  • 新增 sysdig 镜像扫描集成;

对此版本感兴趣的小伙伴,可参阅其 ReleaseNote 了解更多信息。

上游进展

  • #88337 kubectl/drain 支持自定义 pod 过滤了, 仅作为库使用时。目前尚未在 CLI 中暴露相关选项;
  • #94140 PidLimits 特性 GA 了!非常实用的特性,可以规避很多问题。

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

TheMoeLove