「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 时遇到网络连接失败,则进行重试。
所以,如果有应用 local
或 fluentd
等日志驱动的小伙伴,请尽量进行 Docker 的降级。其余场景可自行判断。
更多详细信息请参考其 ReleaseNote
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】