k8s依赖离线下载方法

一、离线下载k8s所需依赖和工具

1.准备条件

1.1 先找一台刚装完系统或者干净的相同版本的服务器,如我的版本是CentOS7.8

1.2 只下载不安装软件,yum install --downloadonly --downloaddir=/data/package

1.3 配置yum源为阿里源

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

1.4 编写shell脚本下载软件,每个软件都有自己的目录

[root@node2 k8s1231_centos78_20241231_all]# cat k8s_tools.sh 
#!/bin/bash

# 日志输出函数
log_message() {
    local LOG_LEVEL="$1"
    local MESSAGE="$2"
    echo "$(date +'%Y-%m-%d %H:%M:%S') [$LOG_LEVEL] $MESSAGE" >> "$LOG_FILE"
}

# 目标目录
DOWNLOAD_DIR="/data/k8s1231_centos78_20241231_all/package"
LOG_FILE="/data/k8s1231_centos78_20241231_all/package/download_log.txt"

# 确保目录存在
mkdir -p "$DOWNLOAD_DIR"

# 清空日志文件
> "$LOG_FILE"

# 软件包列表
PACKAGES=(
    "yum-utils"
    "device-mapper-persistent-data"
    "lvm2"
    "wget"
    "net-tools"
    "nfs-utils"
    "lrzsz"
    "gcc"
    "gcc-c++"
    "make"
    "cmake"
    "libxml2-devel"
    "openssl-devel"
    "curl"
    "curl-devel"
    "unzip"
    "ntp"
    "libaio-devel"
    "vim"
    "ncurses-devel"
    "autoconf"
    "automake"
    "zlib-devel"
    "python-devel"
    "epel-release"
    "openssh-server"
    "socat"
    "ipvsadm"
    "conntrack"
    "ntpdate"
    "nc"
    "telnet"
    "tcpdump"
    "pciutils"
    "iptraf"
)

# 输出使用说明函数
usage() {
    echo "Usage: $0 {d|i}"
    echo "  d: Download packages only"
    echo "  i: Install packages only"
    exit 1
}

# 参数检查,必须是 d 或 i
if [[ "$1" != "d" && "$1" != "i" ]]; then
    log_message "ERROR" "Invalid argument: $1. Only 'd' or 'i' are allowed."
    usage
fi

# 下载函数
download_packages() {
    log_message "INFO" "Download Alibaba Cloud YUM repository"
    curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

    log_message "INFO" "Starting package download at $(date)"
    for PACKAGE in "${PACKAGES[@]}"; do
        PACKAGE_DIR="$DOWNLOAD_DIR/$PACKAGE"
        mkdir -p "$PACKAGE_DIR"

        log_message "INFO" "Downloading $PACKAGE to $PACKAGE_DIR..."
        yum install --downloadonly --downloaddir="$PACKAGE_DIR" "$PACKAGE" &>> "$LOG_FILE"

        # 检查下载是否成功
        if [ $? -ne 0 ]; then
            log_message "ERROR" "Failed to download: $PACKAGE"
        else
            log_message "INFO" "Successfully downloaded: $PACKAGE"
        fi
    done
    log_message "INFO" "Download process completed at $(date)"
}

# 安装函数
install_packages() {
    log_message "INFO" "Starting package installation at $(date)"
    
    #解压工具包
    tar zxf k8s_tools_package_centos7.8.tar.gz 

    # 检查下载目录是否存在
    if [ ! -d "$DOWNLOAD_DIR" ]; then
        log_message "ERROR" "Download directory $DOWNLOAD_DIR does not exist. Skipping installation."
        return 1
    fi
    
    # 使用 yum 安装所有 .rpm 文件
    RPM_FILES=$(find "$DOWNLOAD_DIR" -type f -name "*.rpm")
    
    # 使用 yum 安装 RPM 包
    log_message "INFO" "Installing RPM packages using yum localinstall"
    yum localinstall -y $RPM_FILES &>> "$LOG_FILE"
    
    if [ $? -ne 0 ]; then
        log_message "ERROR" "Failed to install RPM packages."
    else
        log_message "INFO" "Successfully installed RPM packages."
    fi
    
    log_message "INFO" "Installation process completed at $(date)"
}

# 根据传入参数选择下载或安装
if [[ "$1" == "d" ]]; then
    download_packages
elif [[ "$1" == "i" ]]; then
    install_packages
fi

2.下载后的目录(每个目录下对应自己的rpm包)

[root@localhost data]# ls /data/package
autoconf  conntrack   device-mapper-persistent-data  gcc      ipvsadm        lrzsz  nc             nfs-utils  openssh-server  python-devel  telnet  wget
automake  curl        download_log.txt               gcc-c++  libaio-devel   lvm2   ncurses-devel  ntp        openssl-devel   socat         unzip   yum-utils
cmake     curl-devel  epel-release                   iptraf   libxml2-devel  make   net-tools      ntpdate    pciutils        tcpdump       vim     zlib-devel

3.下载后进行打包,打包目录/data/package

[root@localhost data]# tar zcf k8s_tools_package.tar.gz package

4. 打包后传送到对k8s部署服务器

5. 脚本安装离线包

[root@localhost data]# sh k8s_tools.sh 
Usage: k8s_tools.sh {d|i}
  d: Download packages only
  i: Install packages only

 

二、下载的软件包说明

  1. yum-utils

    • 功能:增强 yum 的功能,例如清理缓存、管理 yum 源等。
    • 适用场景:安装软件时扩展功能,例如 yum-config-manager
  2. device-mapper-persistent-data

    • 功能:支持设备映射器,通常用于 LVM 和 Docker 的存储管理。
    • 适用场景:Docker 的存储驱动。
  3. lvm2

    • 功能:逻辑卷管理工具,用于管理分区。
    • 适用场景:创建和管理逻辑卷。
  4. wget

    • 功能:非交互式文件下载工具,支持 HTTP、HTTPS 和 FTP。
    • 适用场景:从网络下载文件。
  5. net-tools

    • 功能:提供网络工具套件,如 ifconfignetstat 等。
    • 适用场景:网络配置和调试。
  6. nfs-utils

    • 功能:支持 NFS 文件系统,用于挂载远程文件共享。
    • 适用场景:配置和使用 NFS 共享。
  7. lrzsz

    • 功能:支持通过 rz 和 sz 上传/下载文件。
    • 适用场景:通过终端传输文件。
  8. gcc 和 gcc-c++

    • 功能:GNU 编译器集合,支持 C 和 C++。
    • 适用场景:编译程序。
  9. make

    • 功能:自动化构建工具,执行 Makefile 中定义的构建规则。
    • 适用场景:编译代码和生成程序。
  10. cmake

    • 功能:跨平台的构建系统,用于生成 Makefile 或其他构建脚本。
    • 适用场景:现代化构建项目。
  11. libxml2-devel

    • 功能:XML 解析库的开发包。
    • 适用场景:开发需要处理 XML 文件的应用程序。
  12. openssl-devel

    • 功能:OpenSSL 的开发库,用于加密通信。
    • 适用场景:开发 SSL/TLS 功能的程序。
  13. curl 和 curl-devel

    • 功能:命令行工具和库,用于传输数据,支持 HTTP、FTP 等。
    • 适用场景:下载和上传文件、测试 API。
  14. unzip

    • 功能:解压 .zip 文件。
    • 适用场景:文件解压。
  15. sudo

    • 功能:以超级用户身份运行命令。
    • 适用场景:权限管理。
  16. ntp 和 ntpdate

    • 功能:时间同步工具。
    • 适用场景:保持系统时间与时间服务器一致。
  17. libaio-devel

    • 功能:异步 I/O 的开发库。
    • 适用场景:开发高性能应用。
  18. vim

    • 功能:文本编辑器。
    • 适用场景:编辑代码和配置文件。
  19. ncurses-devel

    • 功能:提供字符终端图形界面的开发库。
    • 适用场景:开发终端应用。
  20. autoconf 和 automake

    • 功能:自动化生成 configure 脚本和 Makefile
    • 适用场景:编译和安装源码程序。
  21. zlib-devel

    • 功能:提供压缩功能的开发库。
    • 适用场景:开发支持压缩的程序。
  22. python-devel

    • 功能:Python 的开发库。
    • 适用场景:开发和编译 Python 扩展。
  23. epel-release

    • 功能:安装 EPEL (Extra Packages for Enterprise Linux) 仓库。
    • 适用场景:获取额外的软件包。
  24. openssh-server

    • 功能:SSH 服务端。
    • 适用场景:远程登录管理服务器。
  25. socat

    • 功能:通用的双向数据传输工具。
    • 适用场景:网络调试。
  26. ipvsadm

    • 功能:管理 IPVS (IP Virtual Server) 内核模块。
    • 适用场景:配置负载均衡。
  27. conntrack

    • 功能:管理和监控连接跟踪表。
    • 适用场景:网络调试,Kubernetes 常用。
  28. nc

    • 功能:netcat 工具,支持网络调试和端口扫描。
    • 适用场景:检查端口连接性。
  29. telnet

    • 功能:测试网络连接。
    • 适用场景:调试网络服务。
  30. tcpdump

    • 功能:抓取网络数据包。
    • 适用场景:网络问题排查。
  31. htop

    • 功能:动态监控系统资源的命令行工具。
    • 适用场景:监控 CPU、内存、进程。
  32. pciutils

    • 功能:用于查看 PCI 硬件设备信息。
    • 适用场景:硬件检测和故障排查。
  33. iptraf

    • 功能:实时网络监控工具。
    • 适用场景:查看网络流量。

 

posted @   Leonardo-li  阅读(62)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示