Kubespray 2.18 版本特性预览

最近 kubernetes-sig 社区的 kubespray 项目正式 release 了 v2.18.0 版本,同时对应 k8s-conformancev1.21v1.22 版本 kubespray 也都已经得到 CNCF 的一致性认证。于是今天就借这个新版本 release 的机会整理一下 2.18 版本的 kubespray 有哪些有趣的变化。

组件版本

以下是 v2.18.0 版本中 kubespray 部署组件的一些版本信息:

K8s 核心组件

  • kubespray 支持的 Kubernetes 支持从 v1.22.0 到 v1.23.1 之间的所有正式版本,默认部署的版本为 v1.22.5,并且 v1.22 版本得到了 CNCF 官方的一致性认证;
  • etcd 从原来的 v3.4.13 升级到了 v3.5.0;
  • coredns 版本升级到了 v1.8.0,它的搭档 dnsautoscaler 则为 1.8.5;
  • pod_infra 即 pause 镜像的版本没有变化依旧为 3.3;
Addon Version
kube v1.22.5
pod_infra 3.3
etcd v3.5.0
coredns v1.8.0

容器运行时

目前市面上所有的 Kubernetes 集群部署工具中,对容器运行时的支持 kubespray 无疑是最丰富的。部署能支持 docker、containerd、crun、kata、cri-o。默认的容器运行时已经从之前的 docker 切换到了 containerd,containerd 的版本是 v1.5.8。

Addon Version
containerd 1.5.8
docker 20.10
docker_containerd 1.4.12
crun 1.3
runc v1.0.3
crio 1.22
kata_containers 2.2.3
gvisor 20210921

CNI

同样,目前市面上所有的 Kubernetes 集群部署工具中,对 CNI 的支持 kubespray 也无疑是最为丰富的,能支持 9 种 CNI 以及多种 CNI 组合部署的 multus

Addon Version
calico v3.20.3
flannel v0.15.1
flannel_cni v1.0.0
cni v1.0.1
weave 2.8.1
cilium v1.9.11
kube_ovn v1.8.1
kube_router v1.3.2
multus_cni 0.4.0
multus v3.8

Kubernetes-app

同时,kubespray 还支持一些 CLI 工具以及第三方应用的部署。

  • CLI 工具

一些 CLI 工具,比如 helm、nerdctl、krew、crictl。其中 nerdctl 的部署支持是咱在 #7500 中加入支持的,目的是为 containerd 用户提供一个相对友好的命令行操作体验,以替代 docker CLI。

addon version
helm v3.7.1
nerdctl 0.15.0
krew v0.4.2
crictl v1.22.0
  • app

个人感觉部署一些像 dnsautoscalerargoCD 这样的应用,还是使用 helm 比较好。因为基于 ansible 的 kubespray 维护这么多第三方组件,以及它们的升级管理都远不如 helm 方便。因此考虑到这些组件的升级维护成本,个人还是不太建议使用 kubespray 来部署这些组件。

Addon Version
dnsautoscaler 1.8.5
netcheck v1.2.2
nodelocaldns 1.21.1
metrics_server v0.5.0
cert_manager v1.5.4
addon_resizer 1.8.11
cinder_blockstorage v3
external_vsphere 6.7u3
nvidia_driver 390.87
oci_cloud_controller 0.7.0
metallb v0.10.3
argocd v2.1.6

支持的 OS

distribution version
Amazon Linux 2
Fedora CoreOS 34.x/35.x
Flatcar Container Linux by Kinvolk
Alma Linux 8
Rocky Linux 8
CentOS/RHEL 7/8
Oracle Linux 7/8
Debian 8/9/10/11
Ubuntu 16.04/18.04/20.04
Fedora 34/35
openSUSE Leap 15.x/Tumbleweed

主要变化

废除

  • #8086 中移除了对 Ambassador 的支持;
  • #8327 中移除了对 registry-proxy 的支持;
  • #8246 中移除了对 Fedora 33 的支持,因为 Fedora 33 在 2021-11-30 就已经 EOL 了,所以被废弃支持也理所当然;
  • #8265 中移除了对 Mitogen 的支持,Mitogen 的作用就是用来优化 Ansible 的性能,但 Mitogen 对于一些新的 Linux 发行版支持的额并不是很友好,在 Kubespray 中维护的成本也比较大,因此社区就废弃它了;

新特性

  • #7895 中新增了 ArgoCD 的部署支持,通过设置 argocd_enabled 即可在部署集群的时候安装 ArgoCD。不过个人认为,ArgoCD 这玩意儿不太适合放在 K8s 部署当中来,看看 ks-installer 的代码你就能明白了 😂。
  • #8175 中默认使用 containerd 作为默认的容器运行时,替代掉了 docker。不过需要注意的是,当前版本的 kubespray 是使用 containerd 官方 repo release 的二进制安装包,但二进制安装包并没有 arm64 版本的。所以如果要部署的集群节点包含 arm64 的机器,最好还是使用 docker 作为容器运行时。
  • #8291 新增了 registry 部署支持多种 ServiceTypes 的支持;
  • #8229 中新增了支持 registry 认证的方式,私有化部署的时候使用带有认证的 registry 会用到;

已知问题

  • #8239cristicalin 大佬引入了一个修改,如果是 containerd 运行时,则使用 nerdctl 下载镜像。这将会导致配置了 containerd registry mirrors 的参数将会失效。