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

该文详细描述了一个针对厦门地铁POC环境的镜像仓库高可用方案,利用NFS分布式存储。步骤包括安装和配置NFS,调整Harbor-registry的后端存储和副本数,配置K8SRegistry,迁移数据,以及测试registry的高可用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

需求分析

方案实施

安装 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 了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值