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

Docker V2 GitHub Action 已 GA

Docker Inc. 近期在其官方博客宣布 Docker V2 GitHub Action 已经 GA 。

我在之前的文章《K8S 生态周报| 首个 Docker 官方 Action 发布》 中曾详细介绍过 Docker 提供的V1 GitHub Action 的用法。

此次,V2 版本带来的最大变化是由原先单一的 GitHub Action 转换成了现在的多个模块化,且包含复杂功能的独立 Action。这里我也介绍下其中重点的内容:

独立的 Login Action

本次发布了独立的 Login Action ,之前版本的 Action 是将登录操作同时封装在整个 Action 流程中的。

- name: Login to DockerHub
  uses: docker/[email protected]
  with:
    username: ${{ secrets.DOCKER_USERNAME }}  
    password: ${{ secrets.DOCKER_TOKEN }}

此外,在 Action 执行完成后,会有个 Post Login 的 job ,自动将 Login 动作时创建的用户凭证进行销毁。

集成 Docker Buildx

通过此 Action 可以将 builder 设置为 Buildkit,以便提供更灵活和丰富的特性。关于 Buildx 之前的周报中都介绍过了,此处略过。

- name: Setup Docker Buildx
  uses: docker/[email protected]

多平台构建

可通过设置 QEMU 和 Buildx 来实现多平台的构建,比如通过以下配置可同时构建 linux/amd64linux/s390x 平台的镜像,并将其推送至 DockerHub 的指定镜像仓库中。

- name: Setup QEMU
  uses: docker/[email protected]

- name: Build and push
  id: docker_build
  uses: docker/[email protected]
  with:
    context: .
    file: ./Dockerfile
    platforms: linux/amd64,linux/s390x
    push: true
    tags: ${{ secrets.DOCKER_USERNAME }}/redis:6.0

更多关于此次变更的示例,请参考我的示例代码仓库

DockerHub 正式启用限速

在 8 月份的文章 《K8S 生态周报| DockerHub 修改了定价和 TOS》 一文中,我曾介绍过 Docker Inc. 修改了 DockerHub 的定价,以及在 11 月份将启用限速功能。

限速策略是对于匿名用户限制 100 次/6小时,而对于登录的普通用户则限制为 200次/6小时。

这里我来详细介绍下这个限速具体的 实施方式

首先,它是 基于对 DockerHub 上镜像 manifest 的请求数量 ;其次它区分的账户类型是根据拉取镜像的帐号来的,而不是根据镜像所有者进行限制;

最后, 对于匿名用户/未登录用户,则是根据其单个 IP 进行限制的。

在了解了上述的基本概念后,我们再来看看实际在使用时,是如何消耗配额的。其 基本流程如 下:

在执行 docker pull <image> 的时候, 首先会向 registry 请求该镜像的 manifest;

如果该镜像是支持多架构的,那么会在其中匹配对应需要拉取的架构,并选择其对应层(layer) 的 blob 进行下载。

前面提到本次限制是基于对镜像的 manifest 请求做的。所以,在 拉取镜像的时候,无论镜像是只包含 一层还是多层,实际都是算一次。 这对用户体验来说是非常好的。这也是 Docker Inc. 在充分听取社区用户反馈后做出的调整。

我们看看如何知道自己还有多少配额呢?

可以直接使用 curl 或者其他方式构造任意构造一个对 DockerHub 上镜像的 manifest 的请求,在响应头中,会包含两个自定义的头:

  • RateLimit-Limit : 表示配额是多少,比如 匿名用户是 100 , 已经登录的普通用户是 200;
  • RateLimit-Remaining:表示当前剩余的额度;

此外,我也在之前的文章 《突破 DockerHub 限制,全镜像加速服务》 中,介绍了企业/个人如何突破 DockerHub 限制,更好的使用 DockerHub 的镜像服务。

Kubernetes v1.20.0-beta.0 发布

此版本中最主要的变化在于双栈 service 相关的变化。以及一些其他的内容:

  • #91452 添加了 Windows 1809, 1903, 1909, 2004 的 pause 3.4 版本的镜像;
  • #95505 Windows hyper-v container featuregate 在 1.20 中废弃,将在 1.21 中删除;

更多关于此版本的变更,请参阅其 ReleaseNote

Thanos v0.16.0 发布

Thanos v0.16.0 于本周正式发布,我们来看看此版本中最主要的变更:

  • Thanos 新的组件 Query Frontend 增加了更多选项和支持共享缓存,当前是 Memcached;
  • 为 Thanos UI 增加了 Debug 模式;
  • 为 Thanos 所有组件改善其 Debug, 增加了 off-CPU profile;
  • 显著改善了用于获取指标的 Sidecar 的延迟和 CPU 使用率;

更多关于此版本的变更,请参与其 ReleaseNote

上游进展

#91824 双栈 service 支持。这是一个 Break Change,原先的一个 ipFamily 修改成了三个字段:

  • ipFamilyPolicy 的可选项为 SingleStack PreferDualStackRequireDualStack
  • ipFamilies
  • clusterIPs

当然,多数用户其实也无需担心,默认情况下 Kubernetes 会自动处理相关的配置。


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

TheMoeLove