使用Rancher快速部署K8S集群

原文链接

1、安装要求

在开始之前,部署Kubernetes集群机器需要满足以下几个条件:

(1)一台或多台机器,操作系统 CentOS7.x-86_x64 (2)硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多 (3)可以访问外网,需要拉取镜像,如果服务器不能上网,需要提前下载镜像并导入节点 (4)禁止swap分区

2、准备环境

角色 IP 用途 k8s-master 192.168.1.76 master节点 k8s-node01 192.168.1.77 node节点 k8s-node02 192.168.1.78 node节点 k8s-server 192.168.1.79 rancher-server节点 以下操作在全部节点进行:

# 关闭防火墙
systemctl stop firewalld
# 禁用防火墙
systemctl disable firewalld
​
# 关闭selinux
setenforce 0  # 临时
sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
​
# 关闭swap
swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久  关闭后需要重启服务器
​
# 根据规划设置主机名
hostnamectl set-hostname <hostname>
​
# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.1.76 k8s-master
192.168.1.77 k8s-node01
192.168.1.78 k8s-node02
192.168.1.79 k8s-server
EOF
​
# 将桥接的IPv4流量传递到iptables的链
vim /etc/sysctl.conf
​
cat > /etc/sysctl.conf << EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system # 生效
# 时间同步
yum install ntpdate -y
ntpdate time.windows.com
3、安装rancher
(1)安装docker
(2)启动rancher(k8s-rancher-server)
mkdir -p /data/rancher2.7.9
docker run -d --privileged -p 80:80 -p 443:443 -v /data/rancher2.7.9:/var/lib/rancher --restart=always --name rancher2.7.9 rancher/rancher:v2.7.9
(3)访问https://192.168.1.79,设置admin的用户密码,最低12位
(4)创建集群

(4.1)选择自定义集群

image-20250328171214083

(4.2)基本信息

<think> 嗯,用户这次问的是Rancher离线部署Kubernetes集群的具体步骤,看来是在无网环境下搭建生产级集群的需求。从引用内容看,用户应该是个运维工程师或DevOps,正在处理企业内网的容器平台部署,而且环境限制很严格——既没外网又可能只有单台测试机。 用户引用的三篇资料其实已经覆盖了关键点:引用1说明场景是单机all-in-one部署,引用2强调主机预处理,引用3涉及节点删除的脏活。但用户显然需要系统化的实操指南,而不是零散注意事项。尤其要注意的是,用户上次问过类似问题,这次更聚焦“详细步骤”,说明可能卡在某个环节了。 技术上需要拆解几个层面:首先是离线资源的完整获取(包括Rancher镜像、K8s组件、系统依赖),然后是主机环境的严格隔离处理(防火墙/SELinux/磁盘清理),最后才是Rancher的特殊配置。引用3里那段暴力清理脚本特别危险,必须强调操作风险——有些命令会直接清空docker卷和iptables。 用户可能遇到的隐藏痛点:1)air gap模式下的证书问题 2)私有镜像仓库的证书信任链 3)RKE版本与K8s版本的匹配。这些在步骤里需要用⚠️明确标出。另外他提到“1台机器安装”,需要提醒单节点集群的生产环境风险。 响应策略上,把三篇引用的精华整合成标准化流程:从准备阶段(资源下载清单)到安装后验证(kubectl补全技巧),最后补充弹性部署选项。尤其要突出引用2的主机预处理要求,这是很多部署失败的根本原因。相关问题的设计则引导用户进阶思考,比如高可用方案——毕竟单机部署只是起点。 </think> 以下是基于引用资料的Rancher离线部署Kubernetes集群的详细步骤,结合关键注意事项: --- ### **一、离线环境准备** 1. **资源离线下载** - 从有网络环境下载: - Rancher Server Docker镜像 (`rancher/rancher:v2.4.x`) - Kubernetes组件镜像 (通过`rancher/rke-tools`自动打包) - Helm Charts (用于部署Rancher) - 系统依赖包 (如`conntrack`, `socat`, `nfs-utils`等) [^2] - **存储路径**:将所有资源存放到本地文件服务器或私有镜像仓库。 2. **节点主机预处理** ```bash # 关闭防火墙和SELinux(所有节点) systemctl stop firewalld && systemctl disable firewalld setenforce 0 sed -i 's/^SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config # 配置内核参数 echo "net.bridge.bridge-nf-call-iptables=1" >> /etc/sysctl.conf sysctl -p ``` --- ### **二、部署私有镜像仓库** > ⚠️ 若无现成仓库,需在离线环境搭建 1. 安装Docker Registry: ```bash docker run -d -p 5000:5000 --restart=always --name registry \ -v /data/registry:/var/lib/registry registry:2 ``` 2. 导入镜像到私有仓库: ```bash # 加载离线镜像包 docker load -i rancher-images.tar # 重新打标签并推送 docker tag rancher/rancher:v2.4.8 localhost:5000/rancher/rancher:v2.4.8 docker push localhost:5000/rancher/rancher:v2.4.8 ``` --- ### **三、安装Rancher Server(单节点)** 1. 启动Rancher容器: ```bash docker run -d --privileged --restart=unless-stopped \ -p 80:80 -p 443:443 \ -v /opt/rancher:/var/lib/rancher \ -e CATTLE_SYSTEM_DEFAULT_REGISTRY=localhost:5000 \ # 指定私有仓库 localhost:5000/rancher/rancher:v2.4.8 ``` 2. 访问Web UI: `https://<服务器IP>` ,按提示设置管理员密码。 --- ### **四、创建离线K8S集群** 1. **添加集群** - 在Rancher UI选择 **添加集群 > 自定义** - 配置集群名称和Kubernetes版本(选择支持离线环境的版本) 2. **节点配置** - 复制生成的`docker run`命令到**每个工作节点**执行: ```bash docker run -d --privileged --restart=unless-stopped \ --net=host -v /etc/kubernetes:/etc/kubernetes \ -v /var/run:/var/run localhost:5000/rancher/rancher-agent:v2.4.8 \ --server https://<RANCHER_SERVER_IP> --token <TOKEN> --ca-checksum <CA_CHECKSUM> \ --worker # 根据节点角色选择 --etcd, --controlplane, --worker ``` - **关键参数**: `--server`:Rancher Server地址 `--ca-checksum`:Rancher Server证书校验值(通过`openssl x509 -fingerprint -sha256 -in /path/to/cert.pem`获取)[^2] 3. **节点清理(若需重置)**[^3] ```bash # 在问题节点执行(危险操作!确认节点无重要数据) docker rm -f -v $(docker ps -aq) docker volume rm $(docker volume ls -q) rm -rf /var/lib/rancher /etc/kubernetes /var/lib/kubelet /var/lib/etcd iptables -F && iptables -t nat -F ip link del flannel.1 2>/dev/null ``` --- ### **五、验证集群状态** 1. **Rancher UI检查**: - 所有节点状态显示 **Active** - 核心组件(Ingress, Pod监控)无报错 2. **命令行验证**: ```bash kubectl get nodes # 确认所有节点Ready kubectl get pods -A # 检查CoreDNS等系统Pod运行状态 ``` --- ### **六、部署应用测试** 1. 通过Rancher应用商店部署离线Chart(需提前导入Chart包) 2. 或手动部署示例应用: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-test spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: localhost:5000/nginx:1.18 # 使用私有仓库镜像 ports: - containerPort: 80 ``` --- ### **关键注意事项** 1. **版本兼容性** - Rancher v2.4.x 最高支持 K8s v1.18 - 需确认Docker版本匹配(推荐 Docker 19.03.x)[^2] 2. **证书信任** - 所有节点必须信任私有镜像仓库的证书(将仓库证书放入`/etc/docker/certs.d/<仓库域名>`) 3. **磁盘空间** - `/var/lib/rancher` 至少预留50GB空间(ETCD数据增长快) --- ### **弹性部署选项** | **模式** | 适用场景 | 配置要点 | |----------------|-------------------------|----------------------------| | **单节点All-in-One** | 测试环境 | Rancher/K8s共享同一节点 | | **高可用Rancher** | 生产环境 | 需额外部署RDS和S3存储[^1] | | **分离式ETCD** | 大规模集群 | 专用高性能ETCD节点[^3] | > 引用来源: > [^1]: 单节点离线部署Rancher+K8S流程 > [^2]: 节点防火墙/SELinux关闭及版本兼容性要求 > [^3]: 节点故障清理操作指南 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值