K8S 生态周报| Helm v3.5 正式发布,带来完备的 OCI 支持

「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 和更新依赖;

  • #8886helm 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

事件

上游进展

  • #96021 当往 CSI 卷上创建卷数据文件期间如果发生异常,不会再自动删除全部数据了,现在仅删除数据文件和卷路径;
  • #98678 TTLAfterFinished 特性将默认启用,并且升级至 beta 。此特性是用于控制 Job 和 Pod 完成后的清理时间,通过 .spec.ttlSecondsAfterFinished 进行设置,在资源创建或完成后都可以修改这个值,但是一旦超过 TTL,并且 K8S 认为可删除资源的时候,再修改这个 TTL 也没有效果了;

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

TheMoeLove

加载评论