「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。
KIND v0.10 正式发布
KIND (Kubernetes In Docker )是我很喜欢也一直在参与贡献的 Kubernetes SIG 子项目,本周 KIND 发布了 v0.10 版本,距离上次 v0.9 版本已过去了 4 个多月,在此期间,我们做了很多的优化和改进。下面我来具体介绍下:
破坏性变更
这个部分显然是大家最为关心的,这里有三个需要注意的点:
- 默认的 Node 镜像版本已经更新为了 Kubernetes v1.20.2 版本,所以个别有关 Kubernetes 自身特性变更的方面需要注意下;
- IPv6 Pod 子网默认从 /64 修改成了 /56 ,这里的修改参考了 RIPE 的一篇关于 IPv6 子网规划的最佳实践,有兴趣的朋友可以了解下;
- 我们目前能保障 KIND 与 v1.14.0+ 的 Kubernetes 完备的兼容,但对于 v1.13.x 版本我们只能尽量做到最好;
新特性
- 当构建 v1.19+ 版本的 Kubernetes 镜像时,可以不构建 dockershim 组件,以便减小镜像的体积;
- 通过优化编译参数,显著的减少了 KIND 二进制文件的体积(~7MB);
kind export logs
导出的 log 中将包含 KIND 的版本信息,以便于更好的定位问题;- 实验性使用 GitHub Action CI 提供 docker/podman/cgroup v2 等环境的支持;
- 文档内容的优化和完善,包括 WSL2,负载均衡等方面;
修正
- 优化了 cgroups 相关的处理逻辑;
- 优化了一些错误信息的内容;
大家可以直接在 KIND v0.10.0 版本的 Release 页面下载预编译好的二进制文件进行体验,有任何问题欢迎随时反馈。
Helm v3.5 正式发布
Helm v3.5 是 Helm 的一个特性版本,此版本的特性主要集中在 OCI 支持和模板函数,以下是我认为值得关注的一些变更:
- #9126 Helm 的 template 中新增加了超过 20 个的函数支持,具体函数列表可参考 sprig 的列表;
- #8843 允许在设置了
HELM_EXPERIMENTAL_OCI
环境变量的前提下,通过helm pull oci://
的方式来下载 OCI 仓库中下载 Chart 和更新依赖; - #8886 为
helm dep build
增加了一个--skip-refresh
的参数,这样就不会刷新本地仓库中的 cache 了; - #8363 添加了一个
wait-for-jobs
的参数,当同时设置了--wait
时候,helm install
等命令将会等待所有的 Job 都执行完成后,才会认为本次操作完成。当然,它也会受到--timeout
参数的影响,最多等待时间不会超过 timeout 设置的时间; #8958 添加了
--kube-cafile
的参数和等价的HELM_KUBECAFILE
环境变量,用来指定连接 Kubernetes 时的 CA 。在此变更之前,如果 Kubernetes 集群的证书未在系统层信任的话,就会出现失败的情况,提示x509: certificate signed by unknown authority
之类的。以下是三种可用的解决方案:- 在系统层信任证书,这个就不多说了;
- Kubeconfig 增加 certificate-authority:
KUBECONFIG=~/.mycustomkubeconfig kubectl config set-cluster internal.company --server=https://internal.company:443 --certificate-authority=/tmp/ca.crt kubectl config set-context some-context --cluster=internal.company --namespace=myns kubectl config use-context some-context HELM_NAMESPACE=myns HELM_KUBEAPISERVER=https://internal.company:443 helm install --kubeconfig="${KUBECONFIG}" some-app company/some-app
- 通过此处提供的
HELM_KUBECAFILE
的环境变量:
HELM_NAMESPACE=myns HELM_KUBEAPISERVER=https://internal.company:443 HELM_KUBECAFILE=/tmp/ca.crt helm install some-app company/some-app
可以看到,方便了很多。
- #8626 用 Artifact Hub 替代了 Helm Hub 。我在去年的 K8S 生态周报| Helm 五周岁啦! 中曾具体介绍过此事,感兴趣的小伙伴可以看看具体内容;
更多关于此版本的变更,请参考其 ReleaseNote
事件
- Docker 把 Distribution 捐给了 CNCF,Docker Distribution 是 Docker Hub 及众多镜像仓库的底层实现,捐给 CNCF 有望为其带来更强大的生命力;
- Docker Hub Tool 开源啦 可以在我之前的Docker Hub Tool 文章中了解其具体特性;
上游进展
- #96021 当往 CSI 卷上创建卷数据文件期间如果发生异常,不会再自动删除全部数据了,现在仅删除数据文件和卷路径;
- #98678 TTLAfterFinished 特性将默认启用,并且升级至 beta 。此特性是用于控制 Job 和 Pod 完成后的清理时间,通过
.spec.ttlSecondsAfterFinished
进行设置,在资源创建或完成后都可以修改这个值,但是一旦超过 TTL,并且 K8S 认为可删除资源的时候,再修改这个 TTL 也没有效果了;
欢迎订阅我的文章公众号【MoeLove】
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。