你那是追星吗?你那是追偶像吗?你他娘是馋ta的身子
博客
-
现在的大地主是谁?
现在的大地主六十那些中介平台,他们现在成了最大的地主,去过再来一场革命首先要打倒的就是他们
-
RKE2离线安装K8S集群
目录
架构概览
技术栈
- Kubernetes 发行版: RKE2 v1.31.4
- 容器运行时: containerd (RKE2 内置)
- 网络插件: Cilium CNI (启用 kube-proxy 替换)
- Ingress 控制器: Nginx Ingress
- 管理平台: Rancher 2.12.2
- 证书管理: cert-manager v1.18.2
集群架构
12345678910111213141516171819202122┌─────────────────────────────────────────────────────┐│ 负载均衡器 (可选) ││ 80/443 → Nginx Ingress │└─────────────────────────────────────────────────────┘↓┌─────────────────────────────────────────────────────┐│ RKE2 Server 节点 (Master) ││ – etcd ││ – kube–apiserver ││ – kube–controller–manager ││ – kube–scheduler ││ – Cilium CNI ││ – Rancher (管理界面) │└─────────────────────────────────────────────────────┘↓┌─────────────────────────────────────────────────────┐│ RKE2 Agent 节点 (Worker) ││ – kubelet ││ – Cilium Agent ││ – 应用 Pod ││ – Longhorn 存储 (推荐) │└─────────────────────────────────────────────────────┘环境准备
硬件要求
Server 节点 (Master)
资源 最低配置 推荐配置 CPU 2 核 4 核 内存 4 GB 8 GB 磁盘 50 GB 100 GB 网络 1 Gbps 10 Gbps Agent 节点 (Worker)
资源 最低配置 推荐配置 CPU 2 核 8 核 内存 4 GB 16 GB 磁盘 50 GB 200 GB 网络 1 Gbps 10 Gbps 操作系统要求
- 支持的系统: RHEL/CentOS 7/8/9, Ubuntu 20.04/22.04
- 内核版本: >= 4.18
- SELinux: Permissive 或 Disabled
- 防火墙: 配置或禁用
节点规划示例
角色 主机名 IP 地址 说明 Server k8s-server-1 192.168.1.10 Master 节点 Agent k8s-node-1 192.168.1.11 Worker 节点 1 Agent k8s-node-2 192.168.1.12 Worker 节点 2 (可选) 网络规划
12345678# Pod 网络cluster-cidr: 172.16.0.0/16# Service 网络service-cidr: 172.17.0.0/16# DNS 服务器cluster-dns: 172.17.0.10必需端口
Server 节点
端口 协议 用途 6443 TCP Kubernetes API 9345 TCP RKE2 Agent 通信 2379-2380 TCP etcd (Server 间) 10250 TCP kubelet 80, 443 TCP Ingress Agent 节点
端口 协议 用途 10250 TCP kubelet 30000-32767 TCP NodePort 服务 安装 RKE2 集群
第一步:准备离线安装文件
在有网络的环境中下载以下文件:
123456789101112131415161718# 设置版本export RKE2_VERSION=“v1.31.4+rke2r1”export RANCHER_VERSION=“2.12.2”export CERT_MANAGER_VERSION=“v1.18.2”# 1. 下载 RKE2 离线包wget https://github.com/rancher/rke2/releases/download/${RKE2_VERSION}/rke2–images.linux–amd64.tar.zstwget https://github.com/rancher/rke2/releases/download/${RKE2_VERSION}/rke2.linux–amd64.tar.gzwget https://github.com/rancher/rke2/releases/download/${RKE2_VERSION}/sha256sum–amd64.txtwget https://get.rke2.io –O install.sh# 2. 下载 Rancher 相关文件wget https://github.com/rancher/rancher/releases/download/v${RANCHER_VERSION}/rancher–images.txtwget https://github.com/rancher/rancher/releases/download/v${RANCHER_VERSION}/rancher–save–images.shwget https://github.com/rancher/rancher/releases/download/v${RANCHER_VERSION}/rancher–load–images.sh# 3. 下载 cert-managerwget https://github.com/cert–manager/cert–manager/releases/download/${CERT_MANAGER_VERSION}/cert–manager.crds.yaml将所有文件传输到离线环境的
/data/rke2-artifacts/
目录。第二步:安装 Server 节点
1. 创建目录结构
123456# 创建数据目录mkdir –p /data/rancher/rke2/agent/imagesmkdir –p /etc/rancher/rke2# 创建软链接(保持兼容性)ln –sf /data/rancher /var/lib/rancher2. 复制镜像文件
123# 复制镜像到指定位置(RKE2 会自动加载)cp /data/rke2–artifacts/rke2–images.linux–amd64.tar.zst \/data/rancher/rke2/agent/images/3. 安装 RKE2
123456cd /data/rke2–artifactschmod +x install.shINSTALL_RKE2_ARTIFACT_PATH=/data/rke2–artifacts \INSTALL_RKE2_TYPE=server \./install.sh4. 创建配置文件
12345678910111213141516171819202122232425262728293031cat > /etc/rancher/rke2/config.yaml <<EOF# 节点配置node–name: “k8s-server-1”node–ip: 192.168.1.10# 数据目录data–dir: /data/rancher/rke2write–kubeconfig: /etc/rancher/rke2/rke2.yamlwrite–kubeconfig–mode: “0644”# TLS SAN(添加域名和 IP)tls–san:– “rancher.example.com”– “192.168.1.10”# CNI 配置 – 使用 Ciliumcni: cilium# 网络配置cluster–cidr: 172.16.0.0/16service–cidr: 172.17.0.0/16cluster–dns: 172.17.0.10cluster–domain: cluster.local# Cilium 配置cni–config:cilium:kubeProxyReplacement: strictenablePolicy: truepolicyEnforcementMode: alwaysEOF5. 配置镜像仓库(如使用私有仓库)
12345678910111213141516171819cat > /etc/rancher/rke2/registries.yaml <<EOF# 镜像代理配置mirrors:docker.io:endpoint:– “https://registry.example.com”quay.io:endpoint:– “https://quay.example.com”# 私有仓库认证configs:“registry.example.com”:auth:username: your–usernamepassword: your–passwordtls:insecure_skip_verify: falseEOF6. 配置 Nginx Ingress
12345678910111213141516171819202122232425262728293031323334353637383940mkdir –p /data/rancher/rke2/server/manifestscat > /data/rancher/rke2/server/manifests/rke2–ingress–nginx–config.yaml <<EOF—–apiVersion: helm.cattle.io/v1kind: HelmChartConfigmetadata:name: rke2–ingress–nginxnamespace: kube–systemspec:valuesContent: |–controller:# 使用 hostNetwork 模式hostNetwork: truekind: DaemonSet# 监听主机端口service:type: ClusterIP# 容忍度配置tolerations:– key: “node-role.kubernetes.io/control-plane”operator: “Exists”effect: “NoSchedule”# 配置config:use–forwarded–headers: “true”compute–full–forwarded–for: “true”# 资源限制resources:limits:cpu: 1000mmemory: 512Mirequests:cpu: 100mmemory: 128MiEOF7. 启动 RKE2
123456# 启用并启动服务systemctl enable rke2–server.servicesystemctl start rke2–server.service# 查看启动日志journalctl –u rke2–server –f8. 配置 kubectl
1234567891011# 设置环境变量export KUBECONFIG=/etc/rancher/rke2/rke2.yamlexport PATH=$PATH:/var/lib/rancher/rke2/bin# 添加到 bashrccat >> ~/.bashrc <<EOFexport KUBECONFIG=/etc/rancher/rke2/rke2.yamlexport PATH=\$PATH:/var/lib/rancher/rke2/binEOFsource ~/.bashrc9. 验证 Server 节点
123456789# 检查节点状态kubectl get nodes# 预期输出NAME STATUS ROLES AGE VERSIONk8s–server–1 Ready control–plane,etcd,master 2m v1.31.4+rke2r1# 检查系统 Podkubectl get pods –A10. 获取 Agent 加入 Token
12345# 查看 tokencat /data/rancher/rke2/server/node–token# 输出示例:# K10xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx::server:xxxxxxxxxxxxxxxx第三步:安装 Agent 节点
1. 准备 Agent 节点
12345678910# 创建目录mkdir –p /data/rancher/rke2/agent/imagesmkdir –p /etc/rancher/rke2# 创建软链接ln –sf /data/rancher /var/lib/rancher# 复制镜像文件cp /data/rke2–artifacts/rke2–images.linux–amd64.tar.zst \/data/rancher/rke2/agent/images/2. 安装 RKE2 Agent
123456cd /data/rke2–artifactschmod +x install.shINSTALL_RKE2_ARTIFACT_PATH=/data/rke2–artifacts \INSTALL_RKE2_TYPE=agent \./install.sh3. 创建配置文件
123456789101112cat > /etc/rancher/rke2/config.yaml <<EOF# 加入集群配置server: https://192.168.1.10:9345token: <从 Server 节点获取的 token># 节点配置node–name: “k8s-node-1”node–ip: 192.168.1.11# 数据目录data–dir: /data/rancher/rke2EOF4. 配置镜像仓库(同 Server 节点)
1234567cat > /etc/rancher/rke2/registries.yaml <<EOF# 与 Server 节点保持一致mirrors:docker.io:endpoint:– “https://registry.example.com”EOF5. 启动 Agent
12345systemctl enable rke2–agent.servicesystemctl start rke2–agent.service# 查看日志journalctl –u rke2–agent –f6. 验证节点加入
在 Server 节点上执行:
123456kubectl get nodes# 预期输出NAME STATUS ROLES AGE VERSIONk8s–server–1 Ready control–plane,etcd,master 10m v1.31.4+rke2r1k8s–node–1 Ready <none> 2m v1.31.4+rke2r1第四步:等待集群完全就绪
123456789# 检查所有系统组件kubectl get pods –A# 等待所有 Pod 运行kubectl wait —for=condition=ready pod \–l k8s–app=cilium –n kube–system —timeout=300s# 检查 Ingress Controllerkubectl get pods –n kube–system | grep nginx安装 Rancher
第一步:安装 Helm
12345# 下载 Helm 安装脚本curl –fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get–helm–3 | bash# 验证安装helm version第二步:安装 cert-manager
12345678910111213141516171819202122# 创建 namespacekubectl create namespace cert–manager# 安装 CRDskubectl apply –f /data/rke2–artifacts/cert–manager.crds.yaml# 添加 Helm 仓库helm repo add jetstack https://charts.jetstack.iohelm repo update# 安装 cert-managerhelm install cert–manager jetstack/cert–manager \—namespace cert–manager \—version v1.18.2# 验证安装kubectl get pods –n cert–manager# 等待就绪kubectl wait —for=condition=ready pod \–l app.kubernetes.io/instance=cert–manager \–n cert–manager —timeout=300s第三步:安装 Rancher
12345678910111213141516171819# 创建 namespacekubectl create namespace cattle–system# 添加 Rancher Helm 仓库helm repo add rancher–stable https://releases.rancher.com/server–charts/stablehelm repo update# 安装 Rancherhelm install rancher rancher–stable/rancher \—namespace cattle–system \—set hostname=rancher.example.com \—set replicas=1 \—set bootstrapPassword=admin# 等待 Rancher 启动kubectl –n cattle–system rollout status deploy/rancher# 查看 Rancher Podkubectl get pods –n cattle–system第四步:配置 Ingress
123456# 查看 Ingresskubectl get ingress –n cattle–system# 预期输出NAME CLASS HOSTS ADDRESS PORTS AGErancher nginx rancher.example.com 80, 443 2m验证和访问
配置 DNS 或 Hosts
在客户端机器的
/etc/hosts
文件中添加:1192.168.1.10 rancher.example.com访问 Rancher
在浏览器中打开:
1https://rancher.example.com初始登录:
- 用户名:
admin
- 密码:
admin
(首次登录需要修改)
验证集群状态
登录 Rancher 后,检查:
- 集群状态:应显示为
Active
- 节点列表:所有节点应为
Active
状态 - 系统组件:所有组件应为
Healthy
常见问题
1. Pod 无法启动 – 镜像拉取失败
问题:
ImagePullBackOff
错误解决方案:
123456789# 检查 registries.yaml 配置cat /etc/rancher/rke2/registries.yaml# 检查 containerd 是否识别配置grep –A 10 “registry.example.com” \/var/lib/rancher/rke2/agent/etc/containerd/config.toml# 测试镜像拉取crictl pull registry.example.com/rancher/rancher:v2.12.22. Agent 节点无法加入
问题:Agent 无法连接到 Server
排查步骤:
1234567891011# 1. 测试网络连接curl –k https://192.168.1.10:9345/ping# 2. 检查防火墙firewall–cmd —list–ports# 3. 检查 token 是否正确cat /etc/rancher/rke2/config.yaml# 4. 查看 Agent 日志journalctl –u rke2–agent –f3. Rancher 无法访问
问题:浏览器无法访问 Rancher
排查步骤:
1234567891011# 1. 检查 Ingress Controllerkubectl get pods –n kube–system | grep nginx# 2. 检查 Rancher Podkubectl get pods –n cattle–system# 3. 检查 Ingress 配置kubectl get ingress –n cattle–system –o yaml# 4. 检查端口监听netstat –tlnp | grep –E ’80|443′4. Cilium 网络问题
问题:Pod 之间无法通信
解决方案:
1234567891011# 检查 Cilium 状态kubectl get pods –n kube–system –l k8s–app=cilium# 安装 Cilium CLI(可选)CILIUM_CLI_VERSION=v0.16.21wget https://github.com/cilium/cilium–cli/releases/download/${CILIUM_CLI_VERSION}/cilium–linux–amd64.tar.gztar xzvf cilium–linux–amd64.tar.gzmv cilium /usr/local/bin/# 检查连通性cilium connectivity test最佳实践
1. 高可用部署
生产环境建议:
- Server 节点:至少 3 个(奇数)
- Agent 节点:至少 2 个
- 负载均衡:为 Server 节点配置 LB
2. 数据备份
定期备份关键数据:
12345678910111213141516171819#!/bin/bash# 备份脚本示例BACKUP_DIR=“/backup/rke2/$(date +%Y%m%d_%H%M%S)”mkdir –p ${BACKUP_DIR}# 备份 etcdtar czf ${BACKUP_DIR}/etcd.tar.gz \–C /data/rancher/rke2/server db/# 备份证书tar czf ${BACKUP_DIR}/tls.tar.gz \–C /data/rancher/rke2/server tls/# 备份配置tar czf ${BACKUP_DIR}/config.tar.gz \–C /etc/rancher rke2/echo “备份完成: ${BACKUP_DIR}”3. 监控告警
建议安装:
- Prometheus:监控指标收集
- Grafana:可视化展示
- AlertManager:告警通知
4. 日志管理
配置日志轮转:
123# 编辑 /etc/systemd/journald.confSystemMaxUse=1GSystemMaxFileSize=100M5. 安全加固
- 定期更新系统和组件
- 使用强密码和密钥认证
- 启用 RBAC 和网络策略
- 配置审计日志
6. 资源隔离
使用 Longhorn 时,避免在 Master 节点运行:
12345# 给 Master 节点添加 taintkubectl taint nodes k8s–server–1 \node–role.kubernetes.io/master=:NoSchedule# Longhorn 会自动调度到 Worker 节点总结
本文介绍了 RKE2 和 Rancher 的完整离线安装流程,主要步骤包括:
- ✅ 准备离线安装文件
- ✅ 安装 RKE2 Server 节点
- ✅ 添加 RKE2 Agent 节点
- ✅ 等待集群就绪
- ✅ 安装 Helm 和 cert-manager
- ✅ 安装 Rancher 管理平台
- ✅ 验证和访问
通过本指南,您应该能够在离线环境中成功部署一个生产级别的 Kubernetes 集群和 Rancher 管理平台。
参考资源
-
有点累
有点困,严重需要补觉
-
百度地图打车有感
百度地图的聚合打车平台,数次派新手司机进行打车,还收高额费用,人不能准时送到就算了,接人慢,道路不熟悉,而且还能收高额费用,也是奇迹。你去问问题,他们客服就说是三方收的。我他妈导航的时候选择的预估是9-13,你给我跑到15块,也是三方的锅???你自己不清楚自己几斤几两吗?你们平台的客服都拉去进行扫盲培训吧
-
高德地图你去死吧
那先说说高德地图吧,路径规划太垃圾,老是推荐你走原路,广告多到要死,他恨不得把所有广告和阿里系软件都塞进去。一个搜索按钮你都要塞个广告进去。因为这一点,五年前就从高德切换到百度了。
再说说聚合打车平台。打车收费设置复杂,动不动就给用户勾选高价车,还要用户二次确认,急用的话直接被坑。
又要说回路径规划,路径规划差的要死,平时就不说了,预估时间从来没有提前过。你们是不是一定要压榨司机到极致才行?早高峰的时候,预估时间就更离谱,你们的技术是从永琪理发请的吧??
-
睡醒了
一点准时午睡,一点四十醒来。自己感冒了,睡觉很难受,胃里不舒服,嗓子也不舒服,趴在办公桌子上又睡了二十分钟
-
又开博了
时隔十年继续开播写心得
-
联想产品一生黑
从今天开始,不推荐任何亲戚朋友买联想。自己兄弟姐妹买电脑,直接断绝关系