内网开发环境福音:手把手教你用K3s v1.26.2+k3s1实现离线部署(含Harbor私有仓库配置)
企业级内网K3s离线部署全指南从私有仓库搭建到集群运维在金融、军工等对网络安全要求极高的行业环境中开发团队常面临一个核心矛盾如何在内网隔离环境下构建既轻量又功能完整的Kubernetes平台传统Kubernetes发行版在资源受限的隔离环境中往往显得笨重而K3s以其不足50MB的二进制体积和全兼容K8s API的特性成为内网环境容器编排的首选方案。1. 离线部署架构设计与核心组件1.1 为什么内网环境需要特殊部署方案典型的内网隔离环境通常具有以下特征网络隔离完全阻断互联网连接无法访问外部镜像仓库安全审计所有软件组件需经过安全扫描和版本固化资源限制物理服务器通常不具备公有云的弹性扩展能力在这种环境下K3s的离线部署需要解决三个核心问题基础组件镜像的内部分发部署过程的网络独立性后续维护的可持续性1.2 两种离线部署模式对比方案类型适用场景优势局限性手动加载镜像包单节点测试、快速验证部署简单无需额外服务难以扩展镜像更新复杂Harbor私有仓库团队协作、生产环境支持多项目隔离、镜像复制需要额外存储资源对于长期运行的生产环境我们推荐采用Harbor作为统一的镜像管理平台。最新统计显示超过68%的企业用户选择Harbor作为内网容器仓库其优势主要体现在细粒度的访问控制RBAC漏洞扫描集成镜像签名验证2. Harbor私有仓库深度配置2.1 定制化安装与优化配置Harbor的离线安装包可从官网获取建议选择v2.7版本以获得更好的性能# 下载离线安装包 wget https://github.com/goharbor/harbor/releases/download/v2.7.0/harbor-offline-installer-v2.7.0.tgz # 解压并准备配置文件 tar xzvf harbor-offline-installer-v2.7.0.tgz cd harbor cp harbor.yml.tmpl harbor.yml关键配置参数调整建议# harbor.yml核心配置段 hostname: registry.internal.company http: port: 8080 harbor_admin_password: StrongPassword123 database: password: DBPassword456 storage: filesystem: rootdirectory: /data/harbor注意生产环境务必启用TLS加密可通过内部CA颁发证书实现2.2 与K3s的深度集成在K3s节点上创建registry配置文件mkdir -p /etc/rancher/k3s/ cat /etc/rancher/k3s/registries.yaml EOF mirrors: registry.internal.company: endpoint: - https://registry.internal.company:8080 configs: registry.internal.company: auth: username: admin password: StrongPassword123 EOF验证配置生效crictl pull registry.internal.company/library/nginx:latest3. K3s集群离线部署实战3.1 准备工作与环境检查部署前需确认所有节点时间同步chrony或ntpd主机名解析正确/etc/hosts或内部DNS防火墙放行6443API、8472Flannel等端口资源需求建议Master节点至少2核CPU/4GB内存Worker节点根据工作负载调整3.2 分步安装流程准备离线镜像包wget https://github.com/k3s-io/k3s/releases/download/v1.26.2%2Bk3s1/k3s-airgap-images-amd64.tar mkdir -p /var/lib/rancher/k3s/agent/images/ cp k3s-airgap-images-amd64.tar /var/lib/rancher/k3s/agent/images/安装主控制节点chmod x k3s sudo cp k3s /usr/local/bin/ INSTALL_K3S_SKIP_DOWNLOADtrue \ K3S_TOKENSECRET_TOKEN \ ./install.sh加入工作节点INSTALL_K3S_SKIP_DOWNLOADtrue \ K3S_URLhttps://master-node:6443 \ K3S_TOKENSECRET_TOKEN \ ./install.sh3.3 部署验证与问题排查检查集群状态kubectl get nodes -o wide kubectl get pods -A常见问题处理镜像拉取失败检查registries.yaml格式和Harbor证书节点无法加入验证token和网络连通性Pod网络异常确认Flannel等CNI插件镜像已正确加载4. 生产环境运维进阶技巧4.1 高可用架构实现内网环境的高可用方案建议graph TD A[外部负载均衡] -- B[Master 1] A -- C[Master 2] A -- D[Master 3] B -- E[外部数据库] C -- E D -- E配置示例INSTALL_K3S_SKIP_DOWNLOADtrue \ K3S_TOKENSECRET_TOKEN \ INSTALL_K3S_EXECserver --datastore-endpointmysql://user:passtcp(db-server:3306)/k3s \ ./install.sh4.2 版本升级策略离线环境升级需要特别注意下载新版本镜像包和二进制文件更新Harbor中的相关镜像逐个节点滚动升级升级检查清单[ ] 备份集群关键资源kubectl get all -A -o yaml[ ] 验证新版本镜像的兼容性[ ] 准备回滚方案4.3 监控与日志方案推荐的内网监控组合指标收集Prometheus Operator kube-state-metrics日志系统Loki Promtail可视化Grafana预配置K3s监控面板配置示例# values-prometheus.yaml prometheus: prometheusSpec: retention: 30d resources: requests: memory: 4Gi cpu: 15. 安全加固最佳实践5.1 网络隔离策略建议的网络分区方案控制平面6443端口仅对管理网络开放数据平面工作节点间开放8472/51820端口存储网络为ETCD/数据库配置独立网卡5.2 认证与授权控制关键安全配置# 启用PSPPod安全策略 kubectl apply -f https://raw.githubusercontent.com/rancher/k3s/master/manifests/psp.yaml # 创建受限用户 kubectl create serviceaccount dev-user kubectl create rolebinding dev-user \ --clusterroleview \ --serviceaccountdefault:dev-user5.3 安全扫描与合规推荐工具组合镜像扫描Trivy集成到Harbor流水线配置检查kube-bench运行CIS基准测试运行时防护Falco部署为DaemonSet扫描示例trivy image --security-checks vuln registry.internal.company/nginx:latest在内网环境中维护K3s集群时我们团队发现最有效的管理方式是建立严格的变更控制流程。每次升级前在测试环境验证关键配置采用GitOps工具如Argo CD进行版本控制这些措施能显著降低生产环境风险。