K8s v1.32.13 Rocky8.6 完整版离线移植打包方案(cgroup-v2专属)
关注博主,可以分享到完整文件包哦!
一、方案说明(专属你的环境)
适配环境:Rocky 8.6 全部机器、cgroup-v2、containerd 1.6、K8s 1.32.13、Calico 3.28.0
实现效果:
当前已经跑通的集群,完整打包
新机器只要是 Rocky8.6,执行几条命令即可一键复刻一模一样的集群
全程无外网、无拉取、零报错、版本完全对齐
打包内容:二进制 + containerd镜像 + calico镜像 + 配置文件 + 一键部署脚本
二、第一步:在当前成功的机器上【完整打包】
1. 建立离线打包目录
mkdir -p /root/k8s-offline/{bin,images,yaml,conf,scripts} cd /root/k8s-offline
2. 打包 K8s 三大二进制文件
Rocky8.6 直接拷贝即可,无需安装包
cp /usr/bin/kubeadm /root/k8s-offline/bin/ cp /usr/bin/kubelet /root/k8s-offline/bin/ cp /usr/bin/kubectl /root/k8s-offline/bin/ # 拷贝kubelet系统服务 cp /etc/systemd/system/kubelet.service /root/k8s-offline/conf/ cp /etc/systemd/system/kubelet.service.d/10-kubeadm.conf /root/k8s-offline/conf/
3. 打包全部离线镜像(最核心)
包含:k8s核心组件 + calico完整镜像,全部导入k8s.io命名空间
# 导出k8s基础镜像 ctr -n k8s.io image export ./images/k8s-base.tar \ registry.aliyuncs.com/google_containers/kube-apiserver:v1.32.13 \ registry.aliyuncs.com/google_containers/kube-controller-manager:v1.32.13 \ registry.aliyuncs.com/google_containers/kube-scheduler:v1.32.13 \ registry.aliyuncs.com/google_containers/kube-proxy:v1.32.13 \ registry.aliyuncs.com/google_containers/etcd:3.5.24-0 \ registry.aliyuncs.com/google_containers/coredns:v1.11.3 \ registry.aliyuncs.com/google_containers/pause:3.10 # 导出calico v3.28.0 全套镜像 ctr -n k8s.io image export ./images/calico.tar \ docker.io/calico/cni:v3.28.0 \ docker.io/calico/node:v3.28.0 \ docker.io/calico/kube-controllers:v3.28.0
4. 拷贝配置文件
# containerd完整配置(适配rocky8.6 cgroup-v2) cp /etc/containerd/config.toml /root/k8s-offline/conf/ # 当前成功的calico.yaml cp /root/calico.yaml /root/k8s-offline/yaml/ # 导出kubeadm初始化配置 kubeadm config print init-defaults > /root/k8s-offline/conf/kubeadm-config.yaml
5. 修改kubeadm配置(核心离线修复)+ 生成专属一键部署脚本
默认导出的kubeadm配置会优先外网拉取镜像,需手动修改为强制离线、阿里云镜像仓库、适配本机网段,杜绝外网请求。
# 修改离线配置:关闭镜像校验、固定镜像仓库、适配离线初始化 sed -i 's#imageRepository: k8s.gcr.io#imageRepository: registry.aliyuncs.com/google_containers#g' /root/k8s-offline/conf/kubeadm-config.yaml sed -i 's#kubernetesVersion: v1.32.0#kubernetesVersion: v1.32.13#g' /root/k8s-offline/conf/kubeadm-config.yaml # 禁止kubeadm校验外网镜像,纯离线运行 echo 'skipImagePullCheck: true' >> /root/k8s-offline/conf/kubeadm-config.yaml # 生成Rocky8.6专属一键离线部署脚本 cat > /root/k8s-offline/scripts/deploy.sh <<'EOF' #!/bin/bash set -e # Rocky8.6 纯离线K8s v1.32.13部署脚本(cgroup-v2专属) OFFLINE_ROOT=$(cd $(dirname $0)/..;pwd) echo "==================== 部署K8s二进制工具 ====================" cp ${OFFLINE_ROOT}/bin/* /usr/bin/ chmod +x /usr/bin/kubeadm /usr/bin/kubelet /usr/bin/kubectl echo "==================== 注册kubelet系统服务 ====================" cp ${OFFLINE_ROOT}/conf/kubelet.service /etc/systemd/system/ mkdir -p /etc/systemd/system/kubelet.service.d cp ${OFFLINE_ROOT}/conf/10-kubeadm.conf /etc/systemd/system/kubelet.service.d/ systemctl daemon-reload systemctl enable --now kubelet echo "==================== 导入全部离线镜像(k8s.io命名空间) ====================" ctr -n k8s.io image import ${OFFLINE_ROOT}/images/k8s-base.tar ctr -n k8s.io image import ${OFFLINE_ROOT}/images/calico.tar echo "==================== 纯离线初始化K8s集群(无外网拉取) ====================" kubeadm init --config ${OFFLINE_ROOT}/conf/kubeadm-config.yaml --skip-pull-image echo "==================== 配置kubectl管理员权限 ====================" mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config echo "==================== 部署Calico v3.28.0网络插件 ====================" kubectl apply -f ${OFFLINE_ROOT}/yaml/calico.yaml echo "==================== 解除主控节点污点,允许Pod调度 ====================" kubectl taint nodes --all node-role.kubernetes.io/control-plane- echo "==================== 等待集群组件就绪 ====================" sleep 20 echo "========== Rocky8.6 纯离线K8s集群部署完成 ==========" kubectl get nodes kubectl get pods -n kube-system EOF chmod +x /root/k8s-offline/scripts/deploy.sh
6. 打包最终压缩包(唯一需要拷贝的文件)
cd /root tar -zcvf k8s-rocky8.6-v1.32.13-full-offline.tar.gz k8s-offline/
得到最终包:k8s-rocky8.6-v1.32.13-full-offline.tar.gz
三、新机器 Rocky8.6 前置固定环境(必须执行)
所有新机器统一执行一遍,只做一次
# 关闭swap swapoff -a sed -i '/swap/s/^/#/' /etc/fstab # 内核模块 modprobe overlay modprobe br_netfilter # sysctl内核参数 cat > /etc/sysctl.d/k8s.conf <<EOF net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF sysctl --system
关键:新机器必须已经开启 cgroup-v2(和源机器一致)
检查命令:stat /sys/fs/cgroup/cgroup.controllers有输出即为正常
四、新机器极简离线部署流程(全程0外网、无冗余操作)
1. 将打包好的k8s-rocky8.6-v1.32.13-full-offline.tar.gz上传至新机器 /root 目录
2. 执行解压、覆盖适配配置、重启服务、一键部署
tar -zxvf k8s-rocky8.6-v1.32.13-full-offline.tar.gz # 替换适配cgroup-v2的containerd核心配置(关键步骤) cp /root/k8s-offline/conf/config.toml /etc/containerd/ systemctl daemon-reload systemctl restart containerd systemctl enable containerd # 一键全自动离线部署集群 cd /root/k8s-offline ./scripts/deploy.sh
2. 解压 + 替换containerd配置 + 一键部署
五、专属适配说明(只针对你的环境)
100%适配Rocky 8.6系统,剔除所有不兼容高版本系统配置
固定cgroup-v2运行架构,与当前成功集群环境完全一致,无架构报错
Calico版本强锁定v3.28.0,统一yaml与镜像版本,彻底解决镜像拉取、版本不匹配问题
纯离线机制,新增跳过外网镜像校验、跳过拉取逻辑,全程零外网请求、零超时报错
全程一键自动化,无需手动修改IP、版本、仓库地址,新手可直接落地
集群一致性复刻,复刻后的集群组件版本、配置、网络模式与原集群完全一致
六、最终校验命令
kubectl get nodes kubectl get pods -n kube-system
全部 Ready、Running 即复刻成功