「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」[1]。
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/login-action@v1
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/setup-buildx-action@v1
多平台构建
可通过设置 QEMU 和 Buildx 来实现多平台的构建,比如通过以下配置可同时构建 linux/amd64
和 linux/s390x
平台的镜像,并将其推送至 DockerHub 的指定镜像仓库中。
- name: Setup QEMU
uses: docker/setup-qemu-action@v1
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
platforms: linux/amd64,linux/s390x
push: true
tags: ${{ secrets.DOCKER_USERNAME }}/redis:6.0
更多关于此次变更的示例,请参考我的示例代码仓库[2]
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
PreferDualStack
和RequireDualStack
;ipFamilies
clusterIPs
当然,多数用户其实也无需担心,默认情况下 Kubernetes 会自动处理相关的配置。
欢迎订阅我的文章公众号【MoeLove】
参考资料
[1]
k8s生态: https://zhuanlan.zhihu.com/container
[2]docker-github-action: https://github.com/tao12345666333/docker-github-action