K8s v1.32.13 Rocky8.6 完整版离线移植V2打包方案
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-offline2. 打包 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.04. 拷贝配置文件# 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.yaml5. 修改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.sh6. 打包最终压缩包唯一需要拷贝的文件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.sh2. 解压 替换containerd配置 一键部署五、专属适配说明只针对你的环境100%适配Rocky 8.6系统剔除所有不兼容高版本系统配置固定cgroup-v2运行架构与当前成功集群环境完全一致无架构报错Calico版本强锁定v3.28.0统一yaml与镜像版本彻底解决镜像拉取、版本不匹配问题纯离线机制新增跳过外网镜像校验、跳过拉取逻辑全程零外网请求、零超时报错全程一键自动化无需手动修改IP、版本、仓库地址新手可直接落地集群一致性复刻复刻后的集群组件版本、配置、网络模式与原集群完全一致六、最终校验命令kubectl get nodes kubectl get pods -n kube-system全部 Ready、Running 即复刻成功