使用 kubeasz的ezdown部署单节点集群(aio),作为k8s集群的测试环境教程
摘要:ezdown是kubeasz项目的辅助脚本,用于简化Kubernetes集群安装过程。支持下载脚本、二进制文件、系统包和容器镜像,提供容器化运行环境。主要功能包括:一键下载所有资源(-D选项)、启动kubeasz容器(-S选项)、自定义组件版本等。特点包括离线安装支持、中国镜像源优化、容器化隔离和幂等操作。典型使用流程为先下载资源再启动容器部署集群,适合快速搭建k8s开发测试环境。脚本包含完
功能描述:
ezdown
是 kubeasz 项目的一个辅助脚本,主要用于简化 Kubernetes 集群的安装过程。它提供了下载所需脚本、二进制文件、系统包和容器镜像的功能,并支持在容器中运行 kubeasz。
使用该脚本能够快速搭建k8s开发,测试环境
一、基础环境搭建
- 准备一台虚机配置内存2G/硬盘30G以上
- 最小化安装
Ubuntu 16.04 server或者CentOS 7 Minimal
- 配置基础网络、更新源、SSH登录等
注意: 确保在干净的系统上开始安装,不能使用曾经装过kubeadm或其他k8s发行版的环境
下载地址:
https://github.com/easzlab/kubeasz/releaseshttps://github.com/easzlab/kubeasz/releases
如图上下载就行
方法二(官方的方法):
export release=3.5.0 wget https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown chmod +x ./ezdown
二、安装教程
1、下载kubeasz代码、二进制、默认容器镜像
./ezdown -D
【可选】下载额外容器镜像(cilium,flannel,prometheus等)
# 按需下载
./ezdown -X flannel
./ezdown -X prometheus
【可选】下载离线系统包 (适用于无法使用yum/apt仓库情形)
./ezdown -P
上述脚本运行成功后,所有文件(kubeasz代码、二进制、离线镜像)均已整理好放入目录/etc/kubeasz
/etc/kubeasz
包含 kubeasz 版本为 ${release} 的发布代码/etc/kubeasz/bin
包含 k8s/etcd/docker/cni 等二进制文件/etc/kubeasz/down
包含集群安装时需要的离线容器镜像/etc/kubeasz/down/packages
包含集群安装时需要的系统基础软件
2、安装集群
- 容器化运行 kubeasz
./ezdown -S
- 使用默认配置安装 aio 集群
docker exec -it kubeasz ezctl start-aio
# 如果安装失败,查看日志排除后,使用如下命令重新安装aio集群
# docker exec -it kubeasz ezctl setup default all
3、验证安装
$ source ~/.bashrc $ kubectl version # 验证集群版本 $ kubectl get node # 验证节点就绪 (Ready) 状态 $ kubectl get pod -A # 验证集群pod状态,默认已安装网络插件、coredns、metrics-server等 $ kubectl get svc -A # 验证集群服务状态
三、ezdown文件内容详解
官方脚本结构
1. 初始设置和默认配置
#!/bin/bash set -o nounset # 使用未定义变量时报错 set -o errexit # 命令失败时退出 set -o pipefail # 管道中任何命令失败则整个管道失败 #set -o xtrace # 调试模式(注释状态) # 默认版本设置 DOCKER_VER=20.10.22 KUBEASZ_VER=3.5.3 K8S_BIN_VER=v1.26.4 EXT_BIN_VER=1.7.1 SYS_PKG_VER=0.5.2 HARBOR_VER=v2.6.3 REGISTRY_MIRROR=CN # 默认使用中国镜像源
2. 镜像版本配置
脚本定义了多种类型的容器镜像版本:
-
默认下载的镜像(使用
-D
选项时) -
额外镜像(使用
-X
选项时) -
不下载的镜像
3. 功能函数
3.1 usage()
函数
显示脚本使用帮助信息,列出所有可用选项。
3.2 logger()
函数
提供带颜色和时间戳的日志输出功能,支持不同日志级别(debug、info、warn、error)。
3.3 download_docker()
函数
下载指定版本的 Docker 二进制文件:
-
根据架构和镜像源选择下载地址
-
支持断点续传(wget 或 curl)
-
解压并安装到系统路径
3.4 install_docker()
函数
安装和配置 Docker:
-
生成 systemd 服务文件
-
创建 Docker 配置文件(daemon.json)
-
设置代理(如果存在环境变量)
-
在 CentOS/RedHat 上禁用 SELinux
-
启动并启用 Docker 服务
3.5 get_kubeasz()
函数
下载 kubeasz 代码:
-
使用临时容器获取 kubeasz 文件
-
保留原有的 down 和 bin 目录内容
3.6 get_k8s_bin()
函数
下载 Kubernetes 二进制文件:
-
通过临时容器获取特定版本的 k8s 组件
-
将文件移动到指定位置
3.7 get_ext_bin()
函数
下载额外工具二进制文件(如 etcdctl 等)
3.8 get_sys_pkg()
函数
下载系统包用于离线安装
3.9 get_harbor_offline_pkg()
函数
下载 Harbor 离线安装包
3.10 get_default_images()
函数
下载默认所需的容器镜像:
-
Calico(网络插件)
-
CoreDNS(DNS 服务)
-
DNS Node Cache
-
Dashboard(Web 管理界面)
-
Metrics Server(资源监控)
-
Pause 容器
-
推送到本地仓库
3.11 get_extra_images()
函数
下载额外镜像(使用 -X
选项时):
-
Flannel(网络插件)
-
NFS Provisioner(存储供应)
-
Cilium(网络和安全)
-
Prometheus Chart(监控)
3.12 download_all()
函数
执行完整的下载流程:
-
下载 Docker
-
安装 Docker
-
获取 kubeasz
-
获取 Kubernetes 二进制文件
-
获取额外工具
-
启动本地仓库
-
获取默认镜像
3.13 start_local_registry()
函数
启动本地 Docker 仓库用于存储镜像
3.14 start_kubeasz_docker()
函数
在容器中运行 kubeasz:
-
设置别名方便使用
-
配置 SSH 密钥对用于本地访问
-
创建必要的符号链接
-
启动 kubeasz 容器
3.15 clean_container()
函数
清理所有运行的容器
4. 主函数 main()
脚本的主要逻辑:
-
设置基础路径
-
检查运行环境(bash shell 和 root 权限)
-
获取系统架构
-
解析命令行参数
-
根据参数执行相应操作
使用方式
脚本提供多种选项:
# 常用选项 ./ezdown -D # 下载所有默认资源 ./ezdown -S # 启动 kubeasz 容器 ./ezdown -C # 清理所有容器 # 自定义版本 ./ezdown -D -k v1.25.0 -z 3.4.0 # 指定 k8s 和 kubeasz 版本 # 下载额外资源 ./ezdown -X # 下载额外镜像 ./ezdown -P # 下载系统包 ./ezdown -R # 下载 Harbor
设计特点
-
离线支持:所有资源都可提前下载,支持完全离线安装
-
灵活性:允许自定义各个组件的版本
-
容器化:推荐在容器中运行 kubeasz,避免污染主机环境
-
镜像加速:针对中国网络环境优化镜像下载
-
错误处理:严格的错误检查和详细的日志输出
-
幂等性:多次运行相同命令不会重复下载已存在的资源
工作流程
典型的用法是:
-
./ezdown -D
下载所有必要资源 -
./ezdown -S
启动 kubeasz 容器 -
在容器内使用 kubeasz 工具部署 Kubernetes 集群
当然有单独需求也可以进行脚本二次开发
更多推荐
所有评论(0)