本期敖行客研发实战日记,依旧邀请小伙伴赛博缝合师带来实战干货,适配中小型企业机房落地使用。
赛博缝合师:代码世界里的"重症监护室医生"。
开发负责给系统注入灵魂,负责用 Docker、Kubernetes 和各类配置脚本,在服务器的荒原上缝合出一条稳固的生命线。白天隐匿在监控面板的绿光之中,深夜则化身救火队长,用最冷静的眼神盯着每一次版本发布,死守着系统不崩溃的底线。
在企业实际生产环境中,由于网络安全策略限制,服务器往往处于内网或无互联网连接的孤岛环境。本文将详细讲解如何通过离线模式,将多台独立服务器组装成一个高效、稳定的 K3s 容器集群,并采用 Docker 作为底层的容器运行时(Container Runtime),以兼顾生态兼容性与轻量化优势。
要求:先安装好Docker 与 Docker Compose
1、 节点角色与网络规划
建议挑选一台物理配置相对优越(尤其是 CPU 与内存)的服务器作为Master(主节点)节点,其余服务器作为 Work(工作节点)节点。
以下为本指南的环境示例
主机名称:k3s-master | 内网 IP:172.31.0.2 | 集群角色:Master (主节点) | 核心组件:k3s server, Docker, kubectl
主机名称:k3s-worker01 | 内网 IP:172.31.0.3 (示例) | 集群角色:Work (工作节点) | 核心组件:k3s agent, Docker
2、 K3s Master (主节点) 部署
2.1、离线安装包准备与权限配置
提前下载好 K3s 的离线二进制文件 k3s 以及安装脚本 k3s-install.sh,将它们上传到主节点服务器的 /usr/local/bin 目录下。执行以下命令赋予可执行权限
cd /usr/local/bin
chmod +x k3s-install.sh //赋予安装脚本可执行权限
chmod +x k3s //赋予二进制文件可执行权限
2.2、离线安装环境变量配置(指定 Docker 运行时)
在执行脚本前,需要通过环境变量明确告知安装程序跳过在线下载,并指定使用 Docker 作为容器运行时,执行以下命令
export INSTALL_K3S_SKIP_DOWNLOAD=true //设置跳过下载 K3s 二进制文件(使用本地文件)
export INSTALL_K3S_BIN_DIR=/usr/local/bin //设置 K3s 二进制及工具的安装目录
export INSTALL_K3S_EXEC="--docker --write-kubeconfig ~/.kube/config --write-kubeconfig-mode 666"
//指定docker运行时
2.3、配置文件修改与环境变量固化
安装完成后,需要对集群的配置文件进行微调,将默认的集群访问地址变更为本机的内网 IP 172.31.0.2
vi /etc/rancher/k3s/k3s.yaml
修改其中的 server: https://127.0.0.1:6443 为 server: https://172.31.0.2:6443。
2.4、写入环境变量
vi /etc/profile# 在文件末尾追加以下内容:export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
保存退出后,使配置立即生效source /etc/profile
2.5、验证节点状态
使用以下命令动态观测主节点状态,确保状态(STATUS)显示为 Ready
watch kubectl get node -o wide

3、K3s Work (工作节点) 部署与扩容
工作节点专门用于承载业务容器。将其加入集群时,需要依赖主节点生成的 Token 凭证以及通信地址。
3.1、在主节点机器上运行以下命令,获取一段高强度的集群验证令牌:
cat /var/lib/rancher/k3s/server/node-token
3.2、工作节点离线文件准备与权限配置
登录到所有的 Work 节点服务器上,重复文件准备工作。
将 k3s 和 k3s-install.sh 同样放置于 /usr/local/bin 目录下,并赋予权限:
cd /usr/local/bin
chmod +x k3s-install.sh
chmod +x k3s
声明离线安装与运行时变量:export INSTALL_K3S_SKIP_DOWNLOAD=trueexport INSTALL_K3S_BIN_DIR=/usr/local/binexport INSTALL_K3S_EXEC="--docker --write-kubeconfig ~/.kube/config --write-kubeconfig-mode 666"
3.3、执行节点加入集群离线安装命令
利用上一步从主节点获取到的真实 Token 字符串以及主节点的内网(或公网)通信 IP,外加前面声明的环境变量,直接运行加入命令(请将下方命令中加粗部分替换为真实的凭证和 IP): K3S_TOKEN="K10e9fb4eafcbd2e847d9289e6a6bb3f5d43f5a0cc2afe07bdba9f33274f1fe2d44::server:ee248540ca55564b33fc9f75dc76331c" K3S_URL=https://172.31.0.2:6443 ./k3s-install.sh
生产网络注意: K3S_URL 中的 IP 地址,在完全内网环境中应填写主节点的内网 IP(如 172.31.0.2);若是跨地域、跨云厂商组网,则需替换为真实的、控制平面端口(6443)已放通的公网 IP 地址。
4、最终集群验证
当所有 Work 节点执行完安装脚本后,回到主节点服务器上,通过 kubectl 工具查看整个集群架构:
kubectl get node -o wide
此时,您应该能看到控制台打印出多行记录,包含了 Master 节点和刚刚成功添加的 Work 节点。所有节点状态均为 Ready,至此,多台服务器已成功组装、整合成了一套高可用、统一调度的高性能 K3s 容器集群。
结语
如果你在实操过程中碰到节点加入失败、镜像离线导入、运行时适配报错等问题,或是有高可用集群改造、业务容器迁移的相关疑问,欢迎在评论区留言交流探讨,感兴趣可以持续关注,一起打磨更贴合企业生产的落地架构方案。
敖行客介绍:
敖行客(Allthinker)聚焦服务企业研发团队及开发者,以搭载自研企业级智能体引擎的 AT Work-Agent 研发工作台为核心支撑,打造 AI 原生一体化研发协同体系,依托企业智能体重构研发协作范式,致力于赋能各类研发团队轻量化完成智能化升级。
AT Work介绍:
AT Work-Agent 研发工作台是国内首个分钟级部署、AI 原生全链路研发协同平台,依托企业级智能体赋能研发全流程,零门槛打造专属 AI 研发团队,实现研发效率与数据安全的双重飞跃。
邮箱:allthinker@allthinker.com
