引言
Kubernetes(K8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。kubeasz 是一个用于快速搭建 Kubernetes 高可用集群的项目,它基于 Ansible,通过提供一套简单、易用的配置,使得在多种环境中部署 K8s 集群变得容易。
kubeasz 简介
kubeasz(Kubernetes Easy Setup with Ansible)是一个开源项目,旨在简化 Kubernetes 集群的部署过程。它使用 Ansible 作为基础设施管理工具,通过预定义的剧本和配置模板,自动化整个 K8s 集群的搭建流程。
还在为部署K8S繁琐的程序发愁吗,开源软件kubeasz可以一键部署K8S大大节省运维成本。
首先确保你的机器规划,然后之前没有安装K8S防止冲突。
项目参考:https://github.com/easzlab/kubeasz
由于国内限制可能登录不上可以用现成的已打包好文件资源已经放到文件中了从第2步开始:
https://download.csdn.net/download/m0_59744084/89397853
将文件放入你所在目录下,然后chmod+x就可以了
安装示例:
配置从部署节点能够ssh免密登陆所有节点,并且设置python软连接
ssh-copy-id $你的所有节点ip
1.下载工具脚本ezdown,举例使用kubeasz版本3.5.0
export release=3.5.0
wget https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown
chmod +x ./ezdown
2.下载kubeasz代码、二进制、默认容器镜像(更多关于ezdown的参数,运行./ezdown 查看)
# 国内环境
./ezdown -D
# 海外环境
#./ezdown -D -m standard
3.【可选】下载额外容器镜像(cilium,flannel,prometheus等)
# 按需下载
./ezdown -X flannel
./ezdown -X prometheus
...
4.【可选】下载离线系统包 (适用于无法使用yum/apt仓库情形)
./ezdown -P
5.上述脚本运行成功后,所有文件(kubeasz代码、二进制、离线镜像)均已整理好放入目录/etc/kubeasz
创建集群配置实例
# 容器化运行kubeasz
./ezdown -S
# 创建新集群 k8s-01
docker exec -it kubeasz ezctl new k8s-01
2021-01-19 10:48:23 DEBUG generate custom cluster files in /etc/kubeasz/clusters/k8s-01
2021-01-19 10:48:23 DEBUG set version of common plugins
2021-01-19 10:48:23 DEBUG cluster k8s-01: files successfully created.
2021-01-19 10:48:23 INFO next steps 1: to config '/etc/kubeasz/clusters/k8s-01/hosts'
2021-01-19 10:48:23 INFO next steps 2: to config '/etc/kubeasz/clusters/k8s-01/config.yml'
到这一步的时候就可以更改/etc/kubeasz/clusters/k8s-01/hosts和/etc/kubeasz/clusters/k8s-01/config.yml 文件进行部署了
具体更改哪些:
1.hosts文件里(必须要改):
etcd数据库的ip
你规划上机器作为master和node节点的ip和主机名,我这里示范只用了两台可以根据你的需求来。
还有其他一些例如harbor配置可以自行开放,默认安装不安装。
2 config.yml 文件里(必须要改):
设置master节点的ip,不然会报错。
然后就可以运行了
dk ezctl setup k8s-01 all
等待一段时间后,出现:
就说明成功了
检查一下节点:
成功了 记得把/etc/kubeasz/bin/kubectl移动到/usr/local/bin/目录下
其他的/etc/kubeasz/bin/也都集成在了里面十分方便不用自己去一个个下载了
cp /etc/kubeasz/bin/kubectl /usr/local/bin/
另外他的kubeconfig文件放在了/etc/kubeasz/clusters/k8s-01/目录下,可以自行拿去下载
遇到的某些坑注意事项:
可能就是因为防火墙导致etcd连接不上K8S api
使用systemctl stop firewalld就可以了
另外:
项目根据k8s版本提供不同的默认容器运行时:
k8s 版本 < 1.24 时,支持docker containerd 可选
k8s 版本 >= 1.24 时,仅支持 containerd
由于K8S弃用了docker。使得K8S安装>=1.24时使用了containerd ,这时就要把那个crictl放到/usr/local/bin目录下
所以网上说之所有镜像不生效是因为可能你的K8S集群可能使用了containerd
移动命令:
mv /etc/kubeasz/bin/containerd-bin/crictl /usr/local/bin/
介绍:
ctr是containerd的一个客户端工具
crictl 是 CRI 兼容的容器运行时命令行接口,可以使用它来检查和调试 Kubernetes 节点上的容器运行时和应用程序
crictl 则直接对应了命名空间 k8s.io,即”crictl image list“等同于“ctr -n=k8s.io image list“
所以crictl是kubernetes专属的containerd管理命令,crictl -v 输出的是当前 k8s 的版本。
使用crictl images可以看到容器了有关这些的镜像我已经打包好了可以自行查看:
https://download.csdn.net/download/m0_59744084/89397853
命令ctr -n=k8s.io images import calico.tar.gz 导入镜像