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
二、下载的软件包说明
-
yum-utils
- 功能:增强
yum
的功能,例如清理缓存、管理yum
源等。 - 适用场景:安装软件时扩展功能,例如
yum-config-manager
。
- 功能:增强
-
device-mapper-persistent-data
- 功能:支持设备映射器,通常用于 LVM 和 Docker 的存储管理。
- 适用场景:Docker 的存储驱动。
-
lvm2
- 功能:逻辑卷管理工具,用于管理分区。
- 适用场景:创建和管理逻辑卷。
-
wget
- 功能:非交互式文件下载工具,支持 HTTP、HTTPS 和 FTP。
- 适用场景:从网络下载文件。
-
net-tools
- 功能:提供网络工具套件,如
ifconfig
、netstat
等。 - 适用场景:网络配置和调试。
- 功能:提供网络工具套件,如
-
nfs-utils
- 功能:支持 NFS 文件系统,用于挂载远程文件共享。
- 适用场景:配置和使用 NFS 共享。
-
lrzsz
- 功能:支持通过
rz
和sz
上传/下载文件。 - 适用场景:通过终端传输文件。
- 功能:支持通过
-
gcc
和gcc-c++
- 功能:GNU 编译器集合,支持 C 和 C++。
- 适用场景:编译程序。
-
make
- 功能:自动化构建工具,执行
Makefile
中定义的构建规则。 - 适用场景:编译代码和生成程序。
- 功能:自动化构建工具,执行
-
cmake
- 功能:跨平台的构建系统,用于生成
Makefile
或其他构建脚本。 - 适用场景:现代化构建项目。
- 功能:跨平台的构建系统,用于生成
-
libxml2-devel
- 功能:XML 解析库的开发包。
- 适用场景:开发需要处理 XML 文件的应用程序。
-
openssl-devel
- 功能:OpenSSL 的开发库,用于加密通信。
- 适用场景:开发 SSL/TLS 功能的程序。
-
curl
和curl-devel
- 功能:命令行工具和库,用于传输数据,支持 HTTP、FTP 等。
- 适用场景:下载和上传文件、测试 API。
-
unzip
- 功能:解压
.zip
文件。 - 适用场景:文件解压。
- 功能:解压
-
sudo
- 功能:以超级用户身份运行命令。
- 适用场景:权限管理。
-
ntp
和ntpdate
- 功能:时间同步工具。
- 适用场景:保持系统时间与时间服务器一致。
-
libaio-devel
- 功能:异步 I/O 的开发库。
- 适用场景:开发高性能应用。
-
vim
- 功能:文本编辑器。
- 适用场景:编辑代码和配置文件。
-
ncurses-devel
- 功能:提供字符终端图形界面的开发库。
- 适用场景:开发终端应用。
-
autoconf
和automake
- 功能:自动化生成
configure
脚本和Makefile
。 - 适用场景:编译和安装源码程序。
- 功能:自动化生成
-
zlib-devel
- 功能:提供压缩功能的开发库。
- 适用场景:开发支持压缩的程序。
-
python-devel
- 功能:Python 的开发库。
- 适用场景:开发和编译 Python 扩展。
-
epel-release
- 功能:安装 EPEL (Extra Packages for Enterprise Linux) 仓库。
- 适用场景:获取额外的软件包。
-
openssh-server
- 功能:SSH 服务端。
- 适用场景:远程登录管理服务器。
-
socat
- 功能:通用的双向数据传输工具。
- 适用场景:网络调试。
-
ipvsadm
- 功能:管理 IPVS (IP Virtual Server) 内核模块。
- 适用场景:配置负载均衡。
-
conntrack
- 功能:管理和监控连接跟踪表。
- 适用场景:网络调试,Kubernetes 常用。
-
nc
- 功能:
netcat
工具,支持网络调试和端口扫描。 - 适用场景:检查端口连接性。
- 功能:
-
telnet
- 功能:测试网络连接。
- 适用场景:调试网络服务。
-
tcpdump
- 功能:抓取网络数据包。
- 适用场景:网络问题排查。
-
htop
- 功能:动态监控系统资源的命令行工具。
- 适用场景:监控 CPU、内存、进程。
-
pciutils
- 功能:用于查看 PCI 硬件设备信息。
- 适用场景:硬件检测和故障排查。
-
iptraf
- 功能:实时网络监控工具。
- 适用场景:查看网络流量。
分类:
k8s
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)