阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

用 Harbor 和 Kubernetes 构建高可用企业级镜像仓库

  • 2020-03-06
  • 本文字数:1678 字

    阅读完需:约 6 分钟

用 Harbor 和 Kubernetes 构建高可用企业级镜像仓库

VMware 公司去年 3 月开源了企业级容器 Registry 项目 Harbor,由 VMware 中国研发的团队负责开发。Harbor 可帮助用户迅速搭建企业级的 registry 服务。它提供了管理图形界面, 基于角色的访问控制 RBAC,镜像远程复制(同步),AD/LDAP 集成、以及审计日志等企业用户需求的功能,同时还原生支持中文和英文,深受国内外用户的喜爱。许多开源社区的开发者也给 Harbor 项目添砖加瓦,贡献代码、反馈问题和提出建议。在大家共同努力下,Harbor 项目推出以来,在 GitHub 获得了近 2000 个 star 和 500 多个 forks。

Harbor 架构简介


从上图我们可以看出,Harbor 的几个基础模块:


1、Nginx:负责请求转发,URL 以 /v2/ 开始的请求会被转发到 Docker Registry 中,其它请求由 Admin Server 处理;


2、Admin Server:Harbor 的主体模块,提供 Web UI 和 RESTful API 以及 Auth 相关功能;


3、Replication Service:提供多个 Harbor 实例之间的镜像同步功能;


4、MySQL:Admin Server 和 Replication Service 所用到的数据库;


5、Docker Registry:Docker 官方镜像仓库;


6、Image Storage:镜像的存储介质,可以是本地磁盘,或者分布式存储,根据 Docker Registry 的配置而不同;

Harbor 高可用设计

提到系统的高可用性 (High Availability),我们一般会从这几个方面来设计:


1、计算高可用;


2、存储高可用;


3、网络高可用;


4、其他方面;


这里,我们主要围绕前两个方面,即计算高可用和存储高可用来展开讨论。



如上图所示,Replication Service 目前不支持多实例的并行同步,我们暂时去掉,只需要考虑其他模块,为了保证整个 Harbor 系统的高可用,除 Replication Service 以外的组件均需扩展为 3 个;

方案 1

独立的 3 个 Harbor 实例 + MySQL Galera 集群 + 镜像共享存储,如下图:



3 个独立的 Harbor 实例,通过一个 Load Balancer 来做流量转发。同时采用了共享会话方式,把会话的信息保存在 MySQL 数据库中,这样无论哪个实例响应用户的请求,都不会丢失会话;


3 个 Harbor 的 Docker Registry 共享一个存放镜像数据的存储,例如阿里云 OSS、GlusterFS、NFS 等,可参考 Harbor 或 Docker Distribution 的文档配置;MySQL 由于不能共享存储,采用了 Galera 集群,这是一个多主的 MySQL 集群,每个节点均可读可写,同时支持同步复制数据,保证了高可用,具体的部署在这里就不展开讨论,可以参考下面的链接:


GlusterFS,https://www.gluster.org/


Galera 集群,http://galeracluster.com/

方案 2

独立的 Harbor 子模块 + MySQL Galera 集群 + 镜像共享存储,如下图:



独立的 Harbor 子模块之间,通过负载均衡来通信,MySQL Galera 集群和镜像共享存储和方案 1 基本一样。这个方案的优点是各个子模块相互独立,每个子模块都有 2 个备份,通过负载均衡实现高可用,这里使用 Kubernetes Service 非常容易实现 LB,下面的章节会展开来说。

Harbor 基于 Kubernetes 的高可用实现

这里我们选择上面的方案 2,使用 Kubernetes 的 Replication Controller 来实现单个模块的备份,通过 Service 来实现服务发现和负载均衡,如果不想用共享存储,可以用 Kubernetes 提供的 PV 和 PVC(host path 模式),整体架构如下图所示:



下面步骤需要有一些 Kubernetes 的背景知识,同时可参考在 Harbor 的项目中的相关安装文档,https://github.com/vmware/harbor/blob/master/docs/kubernetes_deployment.md


Harbor 在 Github 上的文档是基于单实例的配置,修改成多实例高可用架构的具体部署可以参考下面的介绍:


1、部署 Replication Controller


make/kubernetes/**/*.rc.yaml 文件里面定义的组件副本数目为 1 个,可修改为多个,例如:replicas: 3, 如下图所示:


2、部署 ConfigMap


ConfigMap 可通过编辑 harbor.cfg 文件之后,由./prepare 脚本自动生成,存放在 templates 目录下,以下是一个生成的 yaml 文件样例:



3、部署 PV & PVC


PV 和 PVC 的配置定义了 Harbor 每个组件使用的存储,缺省是本机文件系统,可以改成 NFS,GlusterFS 等共享存储,以实现高可用。



本文转载自才云 Caicloud 公众号。


原文链接:https://mp.weixin.qq.com/s/Tj7XGo023h3zXOpxDtkNMQ


2020-03-06 20:46862

评论

发布
暂无评论
发现更多内容

Scrum Patterns:产品的自豪感(Product Pride)

Bruce Talk

Scrum 敏捷 Agile Scrum Patterns

OSPF路由协议三

初学者

网络 11月月更

两阶段提交与三阶段提交

急需上岸的小谢

11月月更

OSPF高级配置——虚链路介绍与配置

我叫于豆豆吖.

11月月更

网页基本代码

我叫于豆豆吖.

11月月更

数据预处理和特征工程-特征选择-相关性过滤-互信息法 & F检验

烧灯续昼2002

人工智能 机器学习 算法 特征工程 11月月更

Camtasia2023免费电脑录屏视频软件使用教程

茶色酒

Camtasia Camtasia2023

FL Studio水果软件V21完整版本全面升级支持简体中文语言界面

茶色酒

FL Studio 水果FL Studio FL Studio 21

Redis分布式锁剖析和几种客户端的实现

C++后台开发

redis 分布式 后端开发 C++开发

ABBYY FineReader16最新版PDF编辑器功能介绍

茶色酒

abbyy

FL Studio21最新版编曲DJ舞曲制作软件

茶色酒

FL Studio FL Studio 21

架构实战营模块 5 作业

陌生流云

架构实战营

一篇文章彻底理解 HDFS 的安全模式

明哥的IT随笔

hadoop hdfs

云原生系列 二【轻松入门容器基础操作】

叶秋学长

云原生 华为云 沙箱实验 11月月更

cap理论和base理论

急需上岸的小谢

11月月更

TCC

急需上岸的小谢

11月月更

赞不绝口!仅靠阿里P9分享的 Redis 工作手册,拿到60W年薪Offer

程序知音

Java 数据库 redis 后端技术 Redis 6.0

微服务连接:Subset子集划分算法

董哥的黑板报

微服务 云原生 连接 RPC 集群

有限状态机

二哈侠

Verilog 11月月更 Melay FSM

架构误区系列5:滥用分布式锁

agnostic

分布式锁

CorelDraw2023主要功能特性

茶色酒

CorelDraw2023 CorelDraw

EasyExcel导出数据超过Excel单表上限解决方案

@下一站

大数据 技术 Excel Java core 11月月更

网站与应用

我叫于豆豆吖.

11月月更

CleanMyMac2023Mac系统电脑磁盘优化软件

茶色酒

CleanMyMac CleanMyMac2023

算法题学习---链表的奇偶重排

桑榆

算法题 11月月更

LeetCode题解:783. 二叉搜索树节点最小距离,栈,JavaScript,详细注释

Lee Chen

JavaScript 算法 LeetCode

聊聊香港优才-续篇(58/100)

hackstoic

香港优才

精选2022年大厂高频Java面试真题集锦(含答案),面试一路开挂

程序知音

java面试 大厂面试 java架构 后端技术 Java面试八股文

代码的衡量标准

Lemoon Can

写好代码 好代码的衡量标准

python中封装和继承

乔乔

11月月更

API渗透测试4个关键步骤

阿泽🧸

11月月更 API渗透测试

用 Harbor 和 Kubernetes 构建高可用企业级镜像仓库_行业深度_才云科技_InfoQ精选文章