当前位置: 首页 > news >正文

手把手教你搞定RKE2离线安装:从CentOS7.6环境准备到第一个Pod跑起来

手把手教你搞定RKE2离线安装:从CentOS7.6环境准备到第一个Pod跑起来

在完全隔离的内网环境中部署Kubernetes集群,是许多金融、政务、军工等对安全性要求极高行业的刚需。RKE2作为Rancher实验室推出的轻量级Kubernetes发行版,凭借其全兼容性、军事级安全特性和简化的离线部署流程,正成为企业级私有化部署的首选方案。本文将彻底拆解从零开始搭建RKE2集群的每个技术细节,特别针对无外网访问的生产环境,提供可复制的完整解决方案。

1. 离线环境的核心挑战与应对策略

离线部署的本质是构建一个自包含的软件生态闭环。与常规安装相比,我们需要解决三大核心问题:

  1. 依赖隔离:所有组件(包括容器镜像、二进制文件、配置文件)必须预先下载并存储在本地
  2. 环境适配:操作系统配置必须完全匹配Kubernetes的运行要求
  3. 故障自愈:安装过程无法实时获取外部支持,每个步骤都需要具备错误回滚能力

针对CentOS 7.6这类经典但稍显陈旧的操作系统,我们采用以下技术路线:

# 系统兼容性检查清单 cat /etc/redhat-release # 确认版本为7.6+ uname -r # 内核版本应≥3.10.0-1160 lscpu # 建议至少2核CPU free -h # 建议至少4GB内存 df -h / # 根分区建议≥50GB

提示:生产环境强烈建议使用相同版本的干净系统镜像初始化所有节点,避免因系统差异导致不可预期的问题。

2. 系统级准备工作深度解析

2.1 网络配置的精细调整

NetworkManager与Kubernetes网络插件的冲突是离线环境中最常见的坑。以下配置不仅解决基础兼容问题,还优化了容器网络的性能表现:

# 创建网络管理排除规则 cat << EOF > /etc/NetworkManager/conf.d/rke2-canal.conf [keyfile] unmanaged-devices=interface-name:cali*;interface-name:flannel*;interface-name:wireguard* EOF # 重载配置并验证 systemctl reload NetworkManager nmcli device status | grep -E 'cali|flannel' # 应无输出

关键参数说明

  • unmanaged-devices:声明这些接口由Kubernetes CNI插件直接管理
  • wireguard*:为未来可能使用的加密通信预留配置项

2.2 安全模块的平衡配置

完全关闭防火墙和SELinux虽然简单但存在安全隐患。更专业的做法是精细配置:

# 防火墙保留但放行必要端口 firewall-cmd --permanent --add-port=6443/tcp # Kubernetes API firewall-cmd --permanent --add-port=8472/udp # Flannel VXLAN firewall-cmd --permanent --add-port=10250/tcp # Kubelet API firewall-cmd --reload # SELinux切换为宽容模式 setenforce 0 sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

2.3 内核模块的静态加载

离线环境无法动态获取内核模块,必须确保关键模块在启动时自动加载:

# 内核模块配置文件 cat << EOF > /etc/modules-load.d/rke2.conf overlay br_netfilter ip_vs ip_vs_rr ip_vs_wrr ip_vs_sh nf_conntrack EOF # 立即加载模块 modprobe overlay modprobe br_netfilter sysctl --system

故障排查技巧

  • dmesg | grep -i error检查模块加载错误
  • lsmod | grep ip_vs验证IPVS模块状态

3. RKE2离线安装实战

3.1 构建本地软件仓库

在可联网的跳板机上准备所有依赖:

# 下载核心组件(示例版本,请替换为最新) export RKE2_VERSION=v1.25.9+rke2r1 curl -LO "https://github.com/rancher/rke2/releases/download/${RKE2_VERSION}/rke2-images.linux-amd64.tar.zst" curl -LO "https://github.com/rancher/rke2/releases/download/${RKE2_VERSION}/rke2.linux-amd64.tar.gz" curl -LO "https://github.com/rancher/rke2/releases/download/${RKE2_VERSION}/sha256sum-amd64.txt" curl -sfL https://get.rke2.io --output install.sh # 验证文件完整性 sha256sum -c sha256sum-amd64.txt

3.2 节点初始化流程

控制平面节点安装

# 部署二进制文件 mkdir -p /var/lib/rancher/rke2/agent/images/ cp rke2-images.linux-amd64.tar.zst /var/lib/rancher/rke2/agent/images/ cp rke2.linux-amd64.tar.gz /usr/local/bin/ tar xzf rke2.linux-amd64.tar.gz -C /usr/local/bin/ chmod +x /usr/local/bin/rke2 # 创建配置文件 mkdir -p /etc/rancher/rke2/ cat << EOF > /etc/rancher/rke2/config.yaml token: "securetoken@2023" tls-san: ["node1.internal","10.18.97.185"] system-default-registry: "registry.internal:5000" node-taint: - "CriticalAddonsOnly=true:NoExecute" EOF # 启动服务 systemctl enable rke2-server --now

工作节点加入集群

# 从控制节点获取token ssh node1 "cat /var/lib/rancher/rke2/server/node-token" # 工作节点配置 cat << EOF > /etc/rancher/rke2/config.yaml server: https://node1.internal:9345 token: "上一步获取的token" system-default-registry: "registry.internal:5000" EOF # 以agent模式启动 INSTALL_RKE2_TYPE="agent" systemctl enable rke2-agent --now

4. 私有镜像仓库集成

Harbor作为企业级私有仓库的首选,需要与RKE2深度集成:

# /etc/rancher/rke2/registries.yaml 配置示例 mirrors: "registry.internal:5000": endpoint: - "http://registry.internal:5000" configs: "registry.internal:5000": tls: insecure_skip_verify: true auth: username: admin password: Harbor12345

关键验证步骤

# 检查镜像拉取策略 kubectl get pods -n kube-system -o jsonpath='{.items[*].spec.containers[*].image}' # 测试私有仓库连通性 crictl pull registry.internal:5000/library/nginx:alpine

5. 集群验证与故障诊断

5.1 健康状态检查

# 核心组件状态 kubectl get pods -n kube-system -o wide # 网络连通性测试 kubectl run test-$(date +%s) --image=registry.internal:5000/library/busybox --rm -it -- ping 10.43.0.1 # 存储卷测试 kubectl apply -f - <<EOF apiVersion: v1 kind: PersistentVolumeClaim metadata: name: test-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi EOF

5.2 常见问题处理指南

场景1:服务启动超时

journalctl -u rke2-server -f --no-pager | grep -A 10 -B 10 "ERROR"

可能原因:

  • 镜像拉取失败 → 检查registry.yaml配置
  • 端口冲突 →netstat -tulnp | grep 6443
  • 证书问题 → 检查/var/lib/rancher/rke2/server/tls/

场景2:节点NotReady

# 检查kubelet日志 journalctl -u kubelet -f # 网络插件诊断 kubectl logs -n kube-system -l app=rke2-canal -c canal

典型解决方案:

  • 确认网络插件镜像已正确加载
  • 检查节点防火墙规则
  • 验证内核模块加载情况

6. 生产环境优化建议

稳定性增强配置

# /etc/rancher/rke2/config.yaml 高级参数 kubelet-arg: - "max-pods=250" - "image-gc-high-threshold=85" - "image-gc-low-threshold=80" kube-controller-manager-arg: - "node-monitor-grace-period=40s" - "pod-eviction-timeout=5m0s"

资源隔离方案

# 为关键组件分配保留资源 cat << EOF > /etc/rancher/rke2/config.yaml.d/90-reserved.yaml kube-reserved: cpu: "1" memory: "1Gi" system-reserved: cpu: "500m" memory: "512Mi" eviction-hard: memory.available: "200Mi" nodefs.available: "10%" EOF

备份与恢复策略

# 定期快照关键目录 tar czf rke2-backup-$(date +%Y%m%d).tar.gz \ /etc/rancher/rke2 \ /var/lib/rancher/rke2/server \ /var/lib/kubelet
http://www.jsqmd.com/news/559432/

相关文章:

  • LiuJuan20260223Zimage操作系统概念学习与实验环境
  • 10分钟搞定:Cursor Pro功能无限使用终极指南
  • 别再为内网Java应用调不通外网API发愁了!用双层Nginx搞定HTTPS代理(含SNI避坑)
  • 从零到英雄:3步掌握UE4SS脚本注入系统,彻底改变虚幻引擎游戏体验
  • Locale Emulator终极指南:Windows多语言软件兼容性解决方案
  • 影刀经验库共建:5个岗位提效的RPA模板分享
  • Ollama部署GLM-4.7-Flash常见问题解决:一篇搞定所有报错
  • NMN哪个牌子最好?2026主流抗衰产品推荐,具备核心竞争力、技术前沿观热门NMN品牌全面评测 - 资讯焦点
  • 软件工程师的副业地图:非技术收入来源
  • 硬件调试新纪元:85%效率提升的AMD Ryzen系统优化方案
  • Unidbg、Frida、IDA怎么选?一份给移动安全新手的逆向工具组合使用手册
  • HWD32F407-HAL_内部时钟
  • Transformer的自注意力机制与位置编码
  • 终极指南:如何用Ice轻松管理你的Mac菜单栏,打造清爽高效的工作空间
  • 避免K8s时间混乱!手把手教你用PodPreset统一集群时区(含最新API适配指南)
  • 【云原生Java冷启动优化黄金法则】:20年实战提炼的7步精准调优路径(含GraalVM+Quarkus实测数据)
  • 一套 SAPUI5 应用,连接多个后端:SAP Fiori 多 Back-End 系统配置与实现详解
  • Spring Boot项目从零搭建太耗时?试试用Trae AI 5分钟生成带JWT和RBAC的企业级后台
  • 终极指南:如何在Windows上实现完美的三指拖拽体验
  • 构建非苹果硬件的macOS运行环境:Hackintosh长期维护方案
  • 2026上海装修公司推荐:多家实力突出及口碑标杆企业调研 - 资讯焦点
  • GitHub功能全景:从AI代码创作到机器学习入门指南的技术盛宴
  • 使用USearch进行媒体内容审核:违规内容的向量识别终极指南
  • 百川2-13B-4bits中文优势:OpenClaw在本地化办公场景的实测表现
  • 上海高端腕表养护全指南:30 + 名表养护要点与六城专业服务科普 - 时光修表匠
  • 别再为百万Excel数据导入发愁了!用EasyExcel的这3种异步+批量方案,性能直接起飞
  • 多无人机协同打击任务分配方法
  • 3步实现抖音无水印备份:告别内容丢失与版权困扰的完整方案
  • 企业级后台开发的高效解决方案:Vue3+Element Plus管理系统实践指南
  • CANoe实战排雷:高频疑难场景与高效应对策略