Administrator
发布于 2026-08-20 / 1 阅读
0
0

第十一章.k8s运维1-镜像仓库方案-1

来源链接:https://www.bilibili.com/video/BV1PbeueyE8V?spm_id_from=333.788.videopod.episodes&vd_source=d8c71ff24a3359a807967fc4b5daa0e4&p=79

【k8s教程】第十一章 k8s运维 第一部分:镜像仓库方案(Harbor部署)

1. 第十一章 k8s运维整体内容划分

本章节k8s运维内容分为多个部分,本小节为第一部分,后续还将涵盖以下内容:

  • 镜像管理方案
  • 资源监控方案:监控集群Pod的CPU、内存使用量,识别超配情况
  • 固定IP分配方案:解决默认Pod IP动态分配导致的实验/特定场景需求问题
  • 网络策略:为不同Pod配置网络规则,提升应用稳定性与安全性

2. 镜像仓库方案选型

在小型单机场景下镜像管理较为简单,但集群规模扩大、进入分布式场景后,需要统一的镜像仓库体系实现镜像的统一识别、管理、分发,因此选用当前行业最主流的Harbor作为集群镜像仓库。
Harbor基于Docker Distribution开发,核心作用是统一管理集群镜像,支持镜像的推送、拉取、扫描、同步等全生命周期管理,解决分布式集群下镜像分散、无法统一管控的问题。

3. Harbor核心特性

Harbor在原生镜像仓库能力的基础上,补充了以下企业级功能:

  • 基于角色的访问控制(RBAC):支持细粒度的用户权限管控;
  • 基于策略的镜像复制:支持跨镜像仓库的同步规则配置,可实现官方镜像自动同步到私有Harbor仓库;
  • 镜像漏洞扫描:类比物理服务器上架前的漏扫流程,容器化环境下每个镜像的漏洞扫描是生产环境安全必备能力;
  • 空闲镜像自动清理:支持自定义删除策略,自动清理无标签的空闲镜像(即Docker官方定义的dangling image,未设置标签的镜像),释放存储空间;
  • 友好的Web管理UI,操作直观易用;
  • 全量审计日志:记录所有用户的登录、操作全量行为,方便问题溯源与合规审计;
  • 完整的RESTful API:支持自动化集成与二次开发,可对接CI/CD等流程;
  • 部署方式灵活:支持Docker Compose、Kubernetes Helm两种方式一键部署。

4. Harbor架构核心组件

Harbor整体基于Nginx做入口转发,核心组件包括:

  • Nginx:作为反向代理入口,负责请求转发,区分镜像操作请求、UI访问请求、认证请求;
  • 镜像验证服务:处理Docker客户端、Kubernetes等客户端的镜像推送/拉取认证请求;
  • Harbor核心服务:处理镜像存储、管理、同步等核心逻辑;
  • Admin Server:提供Web UI、API接口、统一认证服务;
  • 漏洞扫描控制器:统一分析集群所有节点的镜像漏洞,生成审计报告;
  • 数据库:存储用户信息、镜像元数据、审计日志等数据;
  • 支持通过Service暴露能力,实现远程审计、自动化部署等扩展功能。

5. 部署前准备要求

  • 确认Kubernetes集群已部署完成且运行正常;
  • 具备持久化存储方案(如已部署的StorageClass、PV/PVC体系),用于存储Harbor的持久化数据(数据库、镜像文件等)。

6. Harbor详细部署步骤

6.1 清理集群残留资源

删除之前实验遗留的Deployment、Service、Ingress等资源,避免与Harbor部署冲突;将上层实验目录移动到/opt目录下,新建第11章专属目录,用于存储Harbor部署所需的资源文件。

6.2 创建专属Namespace

创建名为harbor的Namespace,后续所有Harbor相关的Pod、资源都部署在该Namespace下,可直接执行kubectl create ns harbor快速创建。

6.3 (可选)配置节点亲和性

若需Harbor运行在指定节点上,可先给目标节点添加自定义标签,再通过节点选择器配置Pod调度规则,仅调度到带对应标签的节点。

6.4 添加Harbor Helm仓库

执行Helm命令添加Harbor官方仓库地址。

6.5 查找Harbor镜像版本信息

通过helm search repo harbor查找当前可用的Harbor镜像版本信息。

6.6 版本选择注意事项

  • 视频演示及推荐使用v1.1.0版本(当前最新稳定版为v1.1.x/1.13,版本间差异极小);
  • 不建议直接使用未测试的最新版本,生产环境升级前必须先在测试环境验证功能兼容性,避免出现未知故障。

6.7 下载Harbor Helm安装包

执行helm pull命令指定版本下载对应的tgz安装包,可通过--version参数明确指定版本号。

6.8 配置Helm Values文件

  1. 解压下载的tgz包到harbor目录下,进入目录编辑values.yaml配置文件;
  2. 配置持久化存储:修改配置文件中所有声明PVC的storageClass字段,替换为集群已有的StorageClass名称(视频中使用的StorageClass为nrfs.com.pl),确保Harbor的数据库、镜像存储等组件有持久化存储支持;
  3. 配置漏洞扫描参数:找到漏洞扫描模块的配置项,默认开启自动拉取最新漏洞库,因网络问题拉取速度极慢,可配置为跳过自动更新,需要更新时手动替换容器内的漏洞库文件即可,也可调整超时时间规避超时问题。

6.9 执行Harbor部署

执行Helm安装命令,指定Release名称为harbor,部署到harbor Namespace下,使用修改后的values.yaml配置文件。

6.10 部署后异常处理

部署初期部分Pod可能处于Pending状态,原因是节点间需要互相调用、拉取镜像,等待一段时间后,手动删除处于CrashLoopBackOff状态的Pod,让Kubernetes重新调度重建;数据库Pod因镜像体积较大,可能需要更长时间拉取,需额外等待。

AI 总结

本次视频为Kubernetes运维系列的第一部分,重点讲解企业级镜像仓库Harbor的部署方案,从Harbor的核心能力、架构设计、部署前准备到完整的实操步骤进行了全流程讲解,同时强调了版本选择、存储配置、漏洞扫描网络适配等生产环境关键注意事项,为Kubernetes集群的镜像管理提供了可直接落地的实践指导。


评论