K3s轻量级K8s集群实战:从单节点到高可用的完整搭建指南(含国内镜像加速)

发布时间:2026/5/29 5:14:49

K3s轻量级K8s集群实战:从单节点到高可用的完整搭建指南(含国内镜像加速) K3s轻量级K8s集群实战从单节点到高可用的完整搭建指南含国内镜像加速在云计算和边缘计算快速发展的今天轻量级Kubernetes解决方案正成为中小型团队和IoT场景的首选。K3s作为Rancher Labs推出的精简版Kubernetes发行版保留了核心功能的同时将内存占用降低到传统K8s的1/4启动时间缩短至秒级。本文将带您从零开始构建适应国内网络环境的完整K3s集群并深入探讨高可用架构设计与性能优化技巧。1. 环境规划与前置准备1.1 硬件与网络需求对于生产级K3s集群建议至少准备3台节点服务器物理机或虚拟机配置要求如下组件类型CPU核心内存磁盘空间网络延迟Server节点2核4GB50GB5msAgent节点1核2GB30GB10ms关键网络配置确保节点间SSH互通开放6443API、8472Flannel VXLAN、10250Metrics等端口建议使用内网DNS或修改所有节点的/etc/hosts文件# 所有节点统一配置 192.168.1.10 k3s-server-1 192.168.1.11 k3s-server-2 192.168.1.12 k3s-server-3 192.168.1.20 k3s-agent-11.2 国内镜像加速方案针对国内网络环境我们需要配置以下镜像源加速组件下载# 替换CentOS基础源以CentOS 7为例 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 安装K3s依赖 sudo yum install -y container-selinux selinux-policy-base sudo yum install -y https://rpm.rancher.io/k3s/stable/common/centos/7/noarch/k3s-selinux-0.2-1.el7_8.noarch.rpm2. 单节点集群快速部署2.1 最小化安装使用国内镜像源快速安装单节点K3scurl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \ INSTALL_K3S_MIRRORcn \ K3S_NODE_NAMEmaster-01 \ sh -安装完成后验证集群状态# 获取kubeconfig mkdir -p $HOME/.kube sudo cp /etc/rancher/k3s/k3s.yaml $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config export KUBECONFIG$HOME/.kube/config # 检查核心组件 kubectl get nodes kubectl get pods -n kube-system2.2 关键组件解析K3s默认包含的轻量化组件组件名称传统K8s对应物内存占用对比SQLiteetcd减少80%Klipper LBkube-proxy减少60%Traefik IngressNginx Ingress减少40%Local Path PVCSI驱动内置简化提示生产环境建议将数据库从SQLite切换为MySQL/PostgreSQL执行--datastore-endpoint参数配置3. 多节点集群扩展实战3.1 Server节点高可用架构构建3节点高可用控制平面# 第一台Server节点初始化集群 curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \ INSTALL_K3S_MIRRORcn \ K3S_TOKENmysecuretoken \ sh -s - server --cluster-init # 后续Server节点加入集群 curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \ INSTALL_K3S_MIRRORcn \ K3S_TOKENmysecuretoken \ sh -s - server --server https://第一个server节点IP:6443高可用架构关键点使用嵌入式etcd实现分布式存储需奇数节点通过--cluster-init参数初始化集群负载均衡器配置建议以Nginx为例stream { upstream k3s_servers { server 192.168.1.10:6443; server 192.168.1.11:6443; server 192.168.1.12:6443; } server { listen 6443; proxy_pass k3s_servers; } }3.2 Agent节点批量接入使用Ansible实现Agent节点自动化注册# playbook-k3s-agent.yml - hosts: k3s_agents tasks: - name: 安装K3s Agent shell: | curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \ INSTALL_K3S_MIRRORcn \ K3S_URLhttps://{{ load_balancer_ip }}:6443 \ K3S_TOKEN{{ cluster_token }} \ sh - args: creates: /etc/rancher/k3s/k3s.yaml4. 生产级优化与故障排查4.1 性能调优参数关键启动参数优化示例# /etc/systemd/system/k3s.service.d/override.conf [Service] ExecStartPre-/sbin/sysctl -w net.ipv4.ip_forward1 ExecStart ExecStart/usr/local/bin/k3s \ server \ --kubelet-argconfig/etc/rancher/k3s/kubelet.conf \ --kube-controller-manager-argnode-monitor-grace-period20s \ --kube-apiserver-argdefault-not-ready-toleration-seconds30 \ --flannel-backendwireguard-native \ --cluster-cidr10.42.0.0/16 \ --service-cidr10.43.0.0/164.2 常见问题解决方案问题1Pod网络跨节点不通检查Flannel接口状态ip addr show flannel.1验证VXLAN隧道bridge fdb show dev flannel.1重启网络组件systemctl restart k3s-flannel问题2镜像拉取失败配置私有仓库镜像缓存# /etc/rancher/k3s/registries.yaml mirrors: docker.io: endpoint: - https://registry-1.docker.io - https://mirror.ccs.tencentyun.com问题3证书过期处理手动轮换证书k3s certificate rotate检查证书有效期openssl x509 -in /var/lib/rancher/k3s/server/tls/server-ca.crt -noout -dates5. 进阶场景边缘计算部署方案5.1 K3s与K3OS整合K3OS是专为K3s设计的轻量级操作系统特别适合边缘设备# 生成自动安装配置 cat config.yaml EOF k3os: install: device: /dev/sda server_url: https://LB_IP:6443 token: CLUSTER_TOKEN k3s_args: - --node-taint - k3os.io/mastertrue:NoExecute EOF # 写入USB安装盘 dd ifk3os.iso of/dev/sdX bs4M5.2 混合云连接方案通过Tunnel实现边缘节点与中心集群的安全连接# 边缘节点启动tunnel代理 k3s agent \ --server https://中心集群隧道端点 \ --token 共享token \ --node-external-ip 公网IP \ --snapshotter native \ --disable-cloud-controller在项目实践中我们发现K3s的轻量特性使其成为中小团队快速落地云原生的利器。特别是在开发测试环境和资源受限的边缘场景通过合理配置国内镜像源和优化参数部署效率可提升3倍以上。

相关新闻