功能描述

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() 函数

执行完整的下载流程:

  1. 下载 Docker

  2. 安装 Docker

  3. 获取 kubeasz

  4. 获取 Kubernetes 二进制文件

  5. 获取额外工具

  6. 启动本地仓库

  7. 获取默认镜像

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

设计特点

  1. 离线支持:所有资源都可提前下载,支持完全离线安装

  2. 灵活性:允许自定义各个组件的版本

  3. 容器化:推荐在容器中运行 kubeasz,避免污染主机环境

  4. 镜像加速:针对中国网络环境优化镜像下载

  5. 错误处理:严格的错误检查和详细的日志输出

  6. 幂等性:多次运行相同命令不会重复下载已存在的资源

工作流程

典型的用法是:

  1. ./ezdown -D 下载所有必要资源

  2. ./ezdown -S 启动 kubeasz 容器

  3. 在容器内使用 kubeasz 工具部署 Kubernetes 集群

当然有单独需求也可以进行脚本二次开发

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐