OpenShift实战(三):OpenShift持久化存储Registry

dukuan 2018-04-07 原文

1、查看Registry组件的DC关于volume的定义 

  可以看到registry-storage这个挂载点被指向了一个/registry目录,使用的是empty directory,即数据保存在计算节点上,当registry容器重启,所在node节点产生变化,数据即丢失。

  1. [root@master1 ~]# oc volumes dc/docker-registry --all
  2. deploymentconfigs/docker-registry
  3. empty directory as registry-storage
  4. mounted at /registry
  5. secret/registry-certificates as registry-certificates
  6. mounted at /etc/secrets

 

2、备份Registry

  查看当前使用的空间

  1. [root@master1 ~]# oc get pods
  2. NAME READY STATUS RESTARTS AGE
  3. docker-registry-1-91s28 1/1 Running 3 3d
  4. registry-console-1-jkcg9 1/1 Running 2 3d
  5. router-1-90m4s 1/1 Running 2 3d
  6. router-1-gqpmw 1/1 Running 2 3d
  7. router-1-wdkkc 1/1 Running 2 3d
  8. [root@master1 ~]# oc rsh docker-registry-1-91s28 'du' '-sh' '/registry'
  9. 3.7G /registry

  将/registry数据导出

  1. [root@master1 ~]# mkdir /export/registry_bak
  2. [root@master1 ~]# cd !$
  3. cd /export/registry_bak
  4. [root@master1 registry_bak]# oc rsync docker-registry-1-91s28:/registry .
  5. receiving incremental file list
  6. registry/
  7. registry/docker/
  8. registry/docker/registry/
  9. registry/docker/registry/v2/
  10. registry/docker/registry/v2/blobs/
  11. registry/docker/registry/v2/blobs/sha256/
  12. registry/docker/registry/v2/blobs/sha256/04/
  13. registry/docker/registry/v2/blobs/sha256/04/043c1366c361738b7518f87d87071910347763605e0866b6ebba2032415cbbc8/
  14. registry/docker/registry/v2/blobs/sha256/04/043c1366c361738b7518f87d87071910347763605e0866b6ebba2032415cbbc8/data
  15. sent 12798 bytes received 3911549556 bytes 10586095.68 bytes/sec
  16. total size is 3910981196 speedup is 1.00
  17. [root@master1 registry_bak]# du -sh .
  18. 3.7G .

 

3、创建Registry持久化PV

  创建分支,此处使用NFS

  1. [root@master1 ~]# mkdir -p /export/pv/docker_registry
  2. [root@master1 ~]# yum install nfs-utils rpcbind -y
  3. [root@master1 ~]# chown -R nfsnobody:nfsnobody /export/pv/
  4. [root@master1 ~]# systemctl start rpcbind
  5. [root@master1 ~]# systemctl enable rpcbind
  6. [root@master1 ~]# exportfs -r
  7. [root@master1 ~]# systemctl start nfs-server
  8. [root@master1 ~]# systemctl enable nfs-server
  9. [root@master1 export]# echo "/export/pv/docker_registry/ *(rw,sync,all_squash)" >> /etc/exports
  10. [root@master1 export]# exportfs -r
  11. [root@master1 export]# systemctl reload nfs-server
  12. Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
  13. [root@master1 ~]# setenforce 0
  14. [root@master1 opt]# mkdir /opt/pv/
  15. [root@master1 opt]# cd !$

  创建PV

  1. [root@master1 pv]# cat pv.json
  2. {
  3. "apiVersion": "v1",
  4. "kind": "PersistentVolume",
  5. "metadata": {
  6. "name": "registrypv"
  7. },
  8. "spec": {
  9. "capacity": {
  10. "storage": "100Gi"
  11. },
  12. "accessModes": [ "ReadWriteOnce" ],
  13. "nfs": {
  14. "path": "/export/pv/docker_registry",
  15. "server": "192.168.10.110"
  16. },
  17. "persistentVolumeReclaimPolicy": "Retain"
  18. }
  19. }
  20. [root@master1 pv]# oc create -f pv.json
  21. persistentvolume "registrypv" created

  添加PV标签

  1. [root@master1 pv]# oc label pv registrypv disktype=registry
  2. persistentvolume "registrypv" labeled
  3. [root@master1 pv]# oc get pv --show-labels
  4. NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE LABELS
  5. registrypv 100Gi RWO Retain Available 2m disktype=registry

  创建PVC

  1. [root@master1 pv]# cat registry_pvc.json
  2. {
  3. "apiVersion": "v1",
  4. "kind": "PersistentVolumeClaim",
  5. "metadata": {
  6. "name": "docker-registry-claim"
  7. },
  8. "spec": {
  9. "accessModes": [
  10. "ReadWriteOnce"
  11. ],
  12. "selector": {
  13. "matchLabels": {
  14. "disktype": "registry"
  15. }
  16. },
  17. "resources": {
  18. "requests": {
  19. "storage": "100Gi"
  20. }
  21. }
  22. }
  23. }
  24. [root@master1 pv]# oc create -f registry_pvc.json
  25. persistentvolumeclaim "docker-registry-claim" created

  查看PV及PVC状态

  1. [root@master1 pv]# oc get pv
  2. NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE
  3. registrypv 100Gi RWO Retain Bound default/docker-registry-claim 8m
  4. [root@master1 pv]# oc get pvc
  5. NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE
  6. docker-registry-claim Bound registrypv 100Gi RWO 54s

 

4、恢复数据

  将备份的数据恢复到创建的NFS目录

 

  1. [root@master1 ~]# cd /export/
  2. [root@master1 export]# mv registry_bak/registry/* pv/docker_registry/
  3. [root@master1 export]# ls pv/docker_registry/
  4. docker
  5. [root@master1 export]# chown -R nfsnobody:nfsnobody /export/

  registry添加持久化卷请求,并与挂载点关联

  1. [root@master1 export]# oc volumes dc/docker-registry --add --name=registry-storage -t pvc --claim-name=docker-registry-claim --overwrite
  2. deploymentconfig "docker-registry" updated
  3. [root@master1 export]# oc get pods
  4. NAME READY STATUS RESTARTS AGE
  5. docker-registry-1-91s28 1/1 Running 3 3d
  6. docker-registry-2-deploy 1/1 Running 0 6s

  DC被重新定义后,openshift会创建新的容器实例。

 

  查看容器状态

  1. [root@master1 export]# oc get pods -o wide
  2. NAME READY STATUS RESTARTS AGE IP NODE
  3. docker-registry-1-91s28 1/1 Running 3 3d 10.130.0.4 node1.xxx.net
  4. docker-registry-2-deploy 1/1 Running 0 2m 10.130.0.27 node1.xxx.net
  5. docker-registry-2-t1snn 0/1 ContainerCreating 0 2m <none> node2.xxx.net
  6. registry-console-1-jkcg9 1/1 Running 2 3d 10.128.0.5 node4.xxx.net
  7. router-1-90m4s 1/1 Running 2 3d 192.168.10.113 node2.xxx.net
  8. router-1-gqpmw 1/1 Running 2 3d 192.168.10.116 node3.xxx.net
  9. router-1-wdkkc 1/1 Running 2 3d 192.168.10.112 node1.xxx.net
  10. [root@master1 export]# oc get pods -o wide
  11. NAME READY STATUS RESTARTS AGE IP NODE
  12. docker-registry-2-t1snn 1/1 Running 0 5m 10.131.0.35 node2.xxx.net
  13. registry-console-1-jkcg9 1/1 Running 2 3d 10.128.0.5 node4.xxx.net
  14. router-1-90m4s 1/1 Running 2 3d 192.168.10.113 node2.xxx.net
  15. router-1-gqpmw 1/1 Running 2 3d 192.168.10.116 node3.xxx.net
  16. router-1-wdkkc 1/1 Running 2 3d 192.168.10.112 node1.xxx.net

 

  创建成功后检查Registry大小

  1. [root@master1 export]# oc rsh docker-registry-2-t1snn "du" "-sh" "/registry"
  2. 3.7G /registry
  3. [root@master1 export]# oc volumes dc/docker-registry
  4. deploymentconfigs/docker-registry
  5. pvc/docker-registry-claim (allocated 100GiB) as registry-storage
  6. mounted at /registry
  7. secret/registry-certificates as registry-certificates
  8. mounted at /etc/secrets

 

 

 

 

 

[root@master1
registry_bak]# du -sh .

3.7G .

发表于 2018-04-07 21:29 杜先生的博客 阅读() 评论() 编辑 收藏

 

版权声明:本文为dukuan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/dukuan/p/8735017.html

OpenShift实战(三):OpenShift持久化存储Registry的更多相关文章

  1. OpenShift实战(三):OpenShift持久化存储Redis

    OpenShift实战(三):OpenShift持久化存储Redis 1、模板定义   修改OpenShift […]...

  2. 001.OpenShift介绍

    一 OpenShift特性 1.1 OpenShift概述 Red Hat OpenShijft Contai […]...

  3. 007.OpenShift管理应用部署

    一 REPLICATION CONTROLLERS 1.1 RC概述 RC确保pod指定数量的副本一直运行。如 […]...

  4. openshift 4.3 Istio的搭建(istio 系列一)

    openshift 4.3 Istio的搭建 本文档覆盖了官方文档的Setup的所有章节 目录 openshi […]...

  5. 004.OpenShift命令及故障排查

    一 CLI访问OpenShift资源 1.1 资源操作 OCP将OpenShift集群中的为由主节点管理的对象 […]...

  6. 002.OpenShift安装与部署

    一 前置条件说明 1.1 安装准备概述 Red Hat OpenShift容器平台是由Red Hat作为RPM […]...

  7. 005.OpenShift访问控制-权限-角色

    一 Kubetcl namespace 1.1 namespace描述 Kubernetes namespac […]...

  8. 010.OpenShift综合实验及应用

    实验一 安装OpenShift 1.1 前置准备 [student@workstation ~]$ lab r […]...

随机推荐

  1. PHP 中的Trait

    概述 在PHP中有一种代码复用的技术, 因为单继承的问题, 有些公共方法无法在父类中写出, 而 Trait可以 […]...

  2. STM32 ~ UART 重映射

    在进行原理图设计的时候发现管脚的分配之间有冲突,需要对管脚进行重映射,在手册中了解到STM32 上有很多I/O […]...

  3. 《人在囧途》系列 – 都说“三百六十行,行行转码农”0基础转行程序员 路该怎么走?

    1. 缘起   《人在囧途》这个系列主要是为了给内外行业的人指点迷津,让大家不再困惑,不再囧;在这个喧嚣的世界 […]...

  4. JavaScript 数据结构与算法之美 – 栈内存与堆内存 、浅拷贝与深拷贝

    前言 想写好前端,先练好内功。 栈内存与堆内存 、浅拷贝与深拷贝,可以说是前端程序员的内功,要知其然,知其所以 […]...

  5. Java6中对synchronized的优化

    Java6中对synchronized的优化 目录 1. 概述 2. 实现同步的基础 3. 实现方式 Java […]...

  6. Cypress系列(60)- 运行时的截图和录屏

    如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/polo […]...

  7. 通过html导出PDF如何分页

    每页一个DIV,加上样式page-break-inside:avoid; 即可分页了 .pdfpage{pag […]...

  8. Redis Lua脚本完全入门

    1. 前言 Redis是高性能的KV内存数据库,除了做缓存中间件的基本作用外还有很多用途,比如胖哥以前分享的R […]...