K8S 生态周报| Helm v3.8 OCI 支持正式 GA,Docker 新版本修复多个严重 bug

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

KIND v0.12.0 发布

KIND(Kubernetes In Docker)是我很喜欢,也是一直在参与的一个开源项目。 在我之前的文章中有过多次介绍,可以参考 我基本上每天都会用到它,非常的方便。

距离上个大版本,v0.11 已经过了近十个月,我们来看看这个新版本带来哪些值得关注的特性吧:

目前 v0.12.0 默认使用的 Kubernetes 版本为 v1.23.4 版本。如果升级 KIND 的话,会重新拉取最新的镜像,镜像托管在 Docker Hub 上, 可能会比较耗时,建议确保网络顺畅。

在 v0.12.0 中专门优化了对多架构的支持,默认的所有已发布镜像都包含了 amd64 和 arm64 的支持。 在镜像中也对相关组件都做了升级:

  • containerd v1.5.10
  • crictl 1.23.0
  • CNI plugin v1.1.0

此外,也修复了 Docker + cgroup2 + rootless 环境下的支持,和 WSL2 环境下的支持。建议大家进行升级。

更多详细信息请参考其 ReleaseNote

Docker v20.10.13 发布

本周 Docker 发布了 v20.10.13 版本,是的,你没有看错,现在发布的版本还是在给 v20.10 打 patch 。 实际上当前 Docker 仓库中最新的代码比 v20.10 已经多了很多功能特性,只不过尚未达到发布一个全新的大版本的目标,所以一直没有发布新的大版本。

这个版本中主要是进行了一些 bugfix 和打包相关的变更。其中包括:

  • 将 buildx 升级到了 v0.8.0 版本。
  • #43165 修复了当使用 local 日志驱动时,如果迅速产生大量日志,可能会产生 OOM 的问题。 如果有在使用 local 日志驱动的小伙伴,建议进行升级
  • #43147 修复了 fluentd 日志驱动配合 fluentd-async-connect=true 使用,并且远端服务不可用时,可能会导致 docker daemon 发生 crash 。
  • #43333 当 pull image 的时候,如果在 image-manifests 时遇到网络连接失败,则进行重试。

所以,如果有使用 localfluentd 等日志驱动的小伙伴,请尽量进行 Docker 的升级。其余场景可自行判断。

更多详细信息请参考其 ReleaseNote

扫描二维码关注公众号,回复: 13696186 查看本文章

Helm v3.8 发布

Helm v3.8 是一个特性版本,在这个版本中最大的变化就是对 OCI registry 的支持达到 GA。

如果想要登陆一个 OCI registry 的话,可以使用类似 Docker CLI 的用法,使用 helm registry login 镜像仓库 进行操作。

例如,可以使用如下命令登陆 GitHub 的镜像仓库地址:

➜ (MoeLove) ~ helm registry login ghcr.io                     
Username: tao12345666333
Password: 
Login Succeeded
复制代码

它实际参考了 Docker CLI 的做法,包括配置文件的结构等都与 Docker CLI 保持一致。

如果想要将 Helm chart 提交到 GitHub 镜像仓库的话,可以进行如下操作:

(MoeLove) ➜ helm create foo
Creating foo
(MoeLove) ➜ helm package foo 
Successfully packaged chart and saved it to: /tmp/foo-0.1.0.tgz
(MoeLove) ➜ helm push foo-0.1.0.tgz oci://ghcr.io/tao12345666333/foo-chart
Pushed: ghcr.io/tao12345666333/foo-chart/foo:0.1.0
Digest: sha256:1b0a889b4e0fee5b5679512182fc6c2e802f39bdc5ba9d11fff0affb962b9b49
复制代码

也可以通过如下命令完成 Chart 的 pull 操作:

# Pull chart
(MoeLove) ➜ helm pull oci://ghcr.io/tao12345666333/foo-chart/foo --version 0.1.0
Pulled: ghcr.io/tao12345666333/foo-chart/foo:0.1.0
Digest: sha256:1b0a889b4e0fee5b5679512182fc6c2e802f39bdc5ba9d11fff0affb962b9b49
复制代码

或者安装操作:

# Install
(MoeLove) ➜ helm install foo oci://ghcr.io/tao12345666333/foo-chart/foo --version 0.1.0   
NAME: foo
LAST DEPLOYED: Sun Mar 13 16:52:55 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:
  export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=foo,app.kubernetes.io/instance=foo" -o jsonpath="{.items[0].metadata.name}")
  export CONTAINER_PORT=$(kubectl get pod --namespace default $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
  echo "Visit http://127.0.0.1:8080 to use your application"
  kubectl --namespace default port-forward $POD_NAME 8080:$CONTAINER_PORT
复制代码

这次 OCI 支持达到 GA 最大的好处就在于,我们不再需要分别维护容器镜像仓库和 Helm chart 的仓库了。可以直接使用同一个,维护成本可以降低。

上游进展

#108309 · kubernetes/kubernetes 这是 KEP-2799: Reduction of Secret-based Service Account Tokens 的实现,主要原因是由于 Kubernetes 默认情况下的 Service Account Token 的机制,如果 Pod 引用了某个 Service Account,则默认会为其挂载对应的 Token。当然,我们也可以通过配置 automountServiceAccountToken: false 来避免此行为。

在这个 PR 中,将 LegacyServiceAccountTokenNoAutoGeneration 特性设置为 beta 级别,并且在 Kubernetes v1.24 版本中将默认启用。届时,所有新创建的 ServiceAccount 默认不会获取到 Token 信息。这是需要额外注意的,当然,这个变更并不会影响到 Pod 使用的。

其他一些变更

  • Thanos v0.25 发布
  • Knative v1.3 发布
  • CNI plugins v1.1.0 发布

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

TheMoeLove

猜你喜欢

转载自juejin.im/post/7074757052853125134