Harbor-registry 使用 NFS 做后端存储实现高可用

2023-11-11

目录

需求分析

方案实施

安装 NFS

配置 harbor-registry 

配置后端存储为 NFS

配置 harbor-registry 副本数为 2

配置 K8S Registry

配置 k8s registry 配置文件

配置 registry 后端 nfs 

迁移数据

重启 registry

registry 高可用

测试 registry


需求分析

厦门地铁 POC 环境需要对镜像仓库实现高可用,因客户现场有 NFS 分布式存储,现对此方案进行验证测试。

方案实施

安装 NFS

安装 NFS

yum install -y nfs-utils rpcbind

启动 NFS 

systemctl enable rpcbind

systemctl enable nfs

systemctl start rpcbind

systemctl start nfs

配置 NFS 共享目录

mkdir /data/nfs -p

chmod 755 /data/nfs

根据这个目录,配置NFS可访问地址

vim /etc/exports

/data/nfs 172.16.179.0/24(rw,sync,no_root_squash)

保存配置后,重启 NFS 服务

systemctl restart nfs

配置 harbor-registry 

配置后端存储为 NFS

kubectl edit deploy harbor-harbor-registry -n harbor    ##搜索 volumes:,修改 - name: registry-data 如下

      volumes:

      - name: registry-data

        nfs:

          path: /data/nfs               ##对应上述创建的目录

          server: 172.16.179.17       ##对应上述配置 nfs 的节点的 ip 地址

配置 harbor-registry 副本数为 2

kubectl edit deploy harbor-harbor-registry -n harbor    ##搜索 replicas,修改 1 为 2

spec:

  progressDeadlineSeconds: 600

  replicas: 2

Harbor 已部署完成可以参考上述步骤,若是新部署 Harbor,可以手动解压修改 harbor-package.tar.gz 包下的文件:

  1. 修改 charts/harbor/templates/registry/registry-dpl.yaml 下 volumes: - name: registry-data 为 nfs 相关配置,另外以防 2 个 pod 调度到同一节点上,可以添加 affinity 部分。具体文件如下:
  2. 修改 yamls/harbor-values.yaml.tmpl 文件下 registry.replicas 为 2

 展开源码

然后手动执行 bash -x deploy.sh 部署 harbor 集群。

调整完毕后,查看 harbor-registry 的状态

kubectl get po -n harbor | grep registry

待 harbor-registry 正常启动后,手动通过 docker push 命令把相关 images 上传到 harbor 镜像仓库。

配置 K8S Registry

配置 k8s registry 配置文件

 展开源码

配置 registry 后端 nfs 

创建 registry 后端 nfs 共享目录

mkdir /data/registry

chmod 777 /data/registry

配置NFS可访问地址

vim /etc/exports

/data/registry 172.16.179.0/24(rw,sync,no_root_squash)

保存配置后,重启 NFS 服务

systemctl restart nfs

迁移数据

通过原来的 registry manifest 文件可以发现,原有 registry 相关镜像都存在 /registry-data 目录下

scp -r /registry-data/docker root@172.16.179.17:/data/registry/

重启 registry

登录 registry 所在节点,重启 registry

cd /opt/kubernetes/

mv manifests-multi/registry.manifest /tmp/

mv registry.manifest /opt/kubernetes/manifests-multi/     ##把上述新的 registry.manifest 拷贝到 manifests-multi 目录下

registry 高可用

TOS 集群默认会有 3 个 master,拷贝上面 registry.manitest 到第二台 master 节点的 /opt/kubernetes/manifests-multi/ 目录下

mv registry.manifest /opt/kubernetes/manifests-multi/

kubectl get po -n kube-system | grep registry  ## 查看 registry pod 的状态

测试 registry

通过 docker 相关命令验证 registry 是否正常

docker pull transwarp/alpine:transwarp-base

docker tag busybox:1.28 172.16.179.14:5000/test/busybox:1.28

docker push 172.16.179.14:5000/test/busybox:1.28

docker pull test/busybox:1.28

上述 docker pull,docker push 命令可正常运行,就 OK 了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Harbor-registry 使用 NFS 做后端存储实现高可用 的相关文章

随机推荐

  • [论文阅读笔记77]LoRA:Low-Rank Adaptation of Large Language Models

    1 基本信息 题目 论文作者与单位 来源 年份 LoRA Low Rank Adaptation of Large Language Models microsoft International Conference on Learning
  • 2019新年flag

    多的不说了 直接立flag吧 看看年底的时候完成情况 dubbo的细节回顾结合dubbo面试题进行学习 netty的项目总结和源码学习 es的源码学习 系统学习 结合脑图 要有输出 数量不在多 在于精 多运动 多读书 少看直播
  • UI Automation编程辅助工具Inspect的下载和使用

    UIAutomation微软提供的UI自动化库 主要用AutomationElement类来表示UI 自动化目录树中的一个UI自动化元素 NET Windows的窗体应用程序和WPF应用程序 Inspect是一款类似于SPY的界面捕捉工具
  • 拉普拉斯的原理

    拉普拉斯是一种二阶导数算子 是一个与方向无关的各向同性 旋转轴对称 边缘检测算子 若只关心边缘点的位置而不顾其周围的实际灰度差时 一般选择该算子进行检测 拉普拉斯算子为二阶差分 其方向信息丢失 常产生双像素 对噪声有双倍加强作用 因此它很少
  • ng-model指令

    ng model指令作用是绑定HTML表单元素到AngularJS应用程序数据中 即 scope变量中 语法
  • Ispci命令详解

    说明 lspci 是一个用来显示系统中所有PCI总线设备或连接到该总线上的所有设备的工具 参数 v 使得 lspci 以冗余模式显示所有设备的详细信息 vv 使得 lspci 以过冗余模式显示更详细的信息 事实上是 PCI 设备能给出的所有
  • 二进制数组的操作

    ES6之前是不能通过代码直接操作二进制数据的 为了方便开发者可以直接操作二进制数据 ES6提出了三个操作二进制数据的接口 ArrayBuffer TypedArray和DataView ArrayBuffer ArrayBuffer代表储存
  • mysql设置了utf8mb4还是报错_详解JDBC对Mysql utf8mb4字符集的处理

    写在前面 在开发微信小程序的时候 评论服务模块希望添加上emoji表情 但是emoji表情是4个字节长度的 所以需要进行设置 当前项目是JAVA编写 使用JDBC连接操作数据库 如下针对的JDBC操作的解决方案 一 JDBC的URL的正常操
  • springboot_使用servlet的两种方式

    虽然在springboot中我们使用Controller可以应付大部分的需求 但servlet等也是必不可少的 在springboot中使用servlet有两种方式 第一种 用注解方式创建一个servlet 并在注解中声明其url 在App
  • git stash 暂存命令

    一个分支切换另一个分支的时候 当时分支并没有完成任务 我们就可以把他暂存下来 暂存代码 git stash m 暂存信息 也可以git stash 查看所有的存储列表 git stash list 释放最新的存储 工作区是这次存储对应的代码
  • dns配置

    dns配置文件详解 dns配置文件默认在 etc named conf中 vim etc named conf options 影响zone设置 listen on port 53 127 0 0 1 监听端口和ip 若监听所有 则 any
  • 知识梳理:链接形式

    驱动开发 链接 PowerPC介绍
  • 计算机专业建议买苹果笔记本吗,笔记本买win还是买Mac?也许可以参考这些建议...

    原标题 笔记本买win还是买Mac 也许可以参考这些建议 笔记本买win还是买Mac 相信各位在买笔记本的时候 都曾经在 Windows 和 Mac 之间犹豫过 其实 这个问题并没有标准答案 毕竟适合自己的才是最好的 那么 最后您选择了哪个
  • 皮卡堂显示服务器超时,皮卡堂服务生职业

    皮卡堂服务生职业赶快点击皮卡堂 开始玩游戏吧 服务生1级 职业经验 lt 500 吆喝 1 学习了服务生后 可以在聊天输入框处设置3句快捷语言 2 右键单击自己 可以选择举三个固定的礼仪牌 分别显示 请您点菜 欢迎光临 谢谢惠顾 请您用餐
  • C++11中std::bind的使用

    std bind函数是用来绑定函数调用的某些参数的 std bind它可以预先把指定可调用实体的某些参数绑定到已有的变量 产生一个新的可调用实体 它绑定的参数的个数不受限制 绑定的具体哪些参数也不受限制 由用户指定 std bind 1 将
  • oracle数据库还原,如何将dmp文件还原到oralce库

    oracle数据库还原 如何将dmp文件还原到oralce库2008 09 08 20 42 oracle数据库还原 如何将dmp文件还原到oralce库 xuehongliang by 12 八月 2007 16 27 最近用到从orac
  • [自主学习-嵌入式]IIC通信介绍

    文章目录 1 IIC Inter Integrated Circuit 内部集成电路 1 1 概述 1 2 通信过程 1 2 1 主模式 1 2 2 从模式 1 2 3 传输特点 1 2 4 三种信号产生 1 2 5 数据传输 1 3 II
  • 用python来爬取某鱼的商品信息(1/2)

    目录 前言 第一大难题 找到网站入口 曲线救国 模拟搜索 第二大难题 登录 提一嘴 登录cookie获取 第一种 第二种 第四大难题 无法使用导出的cookie 原因 解决办法 最后 出现小问题 总结 下一篇博客 大部分代码实现 前言 本章
  • 王爽著的《汇编语言》第3版笔记

    王爽著的 汇编语言 第3版 于2013年出版 虽然是2013年出版的 但书中部分内容感觉已过时 1 基于intel 8086 CPU介绍 intel 8086是英特尔公司上个世纪生产的芯片 是16位的 早已停产 2 现在PC机上的intel
  • Harbor-registry 使用 NFS 做后端存储实现高可用

    目录 需求分析 方案实施 安装 NFS 配置 harbor registry 配置后端存储为 NFS 配置 harbor registry 副本数为 2 配置 K8S Registry 配置 k8s registry 配置文件 配置 reg