最近 kubernetes-sig 社区的 kubespray 项目正式 release 了 v2.18.0 版本,同时对应 k8s-conformance 的 v1.21 和 v1.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
个人感觉部署一些像 dnsautoscaler
、 argoCD
这样的应用,还是使用 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 会用到;
已知问题
- 在 #8239 中 cristicalin 大佬引入了一个修改,如果是 containerd 运行时,则使用 nerdctl 下载镜像。这将会导致配置了 containerd registry mirrors 的参数将会失效。