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

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

[root@master1 ~]# oc volumes dc/docker-registry --all
deploymentconfigs/docker-registry
empty directory as registry-storage
mounted at /registry
secret/registry-certificates as registry-certificates
mounted at /etc/secrets

2、备份Registry

  查看当前使用的空间

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

  将/registry数据导出

[root@master1 ~]# mkdir /export/registry_bak
[root@master1 ~]# cd !$
cd /export/registry_bak
[root@master1 registry_bak]# oc rsync docker-registry--91s28:/registry .
receiving incremental file list
registry/
registry/docker/
registry/docker/registry/
registry/docker/registry/v2/
registry/docker/registry/v2/blobs/
registry/docker/registry/v2/blobs/sha256/
registry/docker/registry/v2/blobs/sha256//
registry/docker/registry/v2/blobs/sha256//043c1366c361738b7518f87d87071910347763605e0866b6ebba2032415cbbc8/
registry/docker/registry/v2/blobs/sha256//043c1366c361738b7518f87d87071910347763605e0866b6ebba2032415cbbc8/data



sent bytes received bytes 10586095.68 bytes/sec
total size is speedup is 1.00
[root@master1 registry_bak]# du -sh .
.7G .

3、创建Registry持久化PV

  创建分支,此处使用NFS

[root@master1 ~]# mkdir -p /export/pv/docker_registry
[root@master1 ~]# yum install nfs-utils rpcbind -y
[root@master1 ~]# chown -R nfsnobody:nfsnobody /export/pv/
[root@master1 ~]# systemctl start rpcbind
[root@master1 ~]# systemctl enable rpcbind
[root@master1 ~]# exportfs -r
[root@master1 ~]# systemctl start nfs-server
[root@master1 ~]# systemctl enable nfs-server
[root@master1 export]# echo "/export/pv/docker_registry/ *(rw,sync,all_squash)" >> /etc/exports
[root@master1 export]# exportfs -r
[root@master1 export]# systemctl reload nfs-server
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@master1 ~]# setenforce
[root@master1 opt]# mkdir /opt/pv/
[root@master1 opt]# cd !$

  创建PV

[root@master1 pv]# cat pv.json
{
"apiVersion": "v1",
"kind": "PersistentVolume",
"metadata": {
"name": "registrypv"
},
"spec": {
"capacity": {
"storage": "100Gi"
},
"accessModes": [ "ReadWriteOnce" ],
"nfs": {
"path": "/export/pv/docker_registry",
"server": "192.168.10.110"
},
"persistentVolumeReclaimPolicy": "Retain"
}
} [root@master1 pv]# oc create -f pv.json
persistentvolume "registrypv" created

  添加PV标签

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

  创建PVC

[root@master1 pv]# cat registry_pvc.json
{
"apiVersion": "v1",
"kind": "PersistentVolumeClaim",
"metadata": {
"name": "docker-registry-claim"
},
"spec": {
"accessModes": [
"ReadWriteOnce"
],
"selector": {
"matchLabels": {
"disktype": "registry"
}
},
"resources": {
"requests": {
"storage": "100Gi"
}
}
}
} [root@master1 pv]# oc create -f registry_pvc.json
persistentvolumeclaim "docker-registry-claim" created

  查看PV及PVC状态

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

4、恢复数据

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

[root@master1 ~]# cd /export/
[root@master1 export]# mv registry_bak/registry/* pv/docker_registry/
[root@master1 export]# ls pv/docker_registry/
docker
[root@master1 export]# chown -R nfsnobody:nfsnobody /export/

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

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

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

  查看容器状态

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

  创建成功后检查Registry大小

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

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

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

    1.模板定义 修改OpenShift自带模板 [root@master1 pv]# oc edit template redis-persistent 添加如下: 2.创建PV 编辑redis pv ...

  2. ActiveMQ消息持久化存储策略

    ActiveMQ的内核是Java编写的,也就是说如果服务端没有Java运行环境ActiveMQ是无法运行的.ActiveMQ启动时,启动脚本使用wrapper包装器来启动JVM.JVM相关的配置信息在 ...

  3. OpenShift实战(五):OpenShift容器监控Metrics

    1.创建持久化metric pv卷 [root@master1 pv]# cat metrics.json apiVersion: v1 kind: PersistentVolume metadata ...

  4. Linux实战教学笔记45:NoSQL数据库之redis持久化存储(一)

    第1章 redis存储系统 1.1 redis概述 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统.redis和大名鼎鼎的Mem ...

  5. 通过Heketi管理GlusterFS为K8S集群提供持久化存储

    参考文档: Github project:https://github.com/heketi/heketi MANAGING VOLUMES USING HEKETI:https://access.r ...

  6. Kubernetes持久化存储2——探究实验

    目录贴:Kubernetes学习系列 一.简介 本文在“创建PV,创建PVC挂载PV,创建POD挂载PVC”这个环境的基础上,进行各种删除实验,并记录.分析各资源的状态. 二.实验脚本 实验创建了一个 ...

  7. 五十四.自定义镜像及仓库、持久化存储 、 Docker网络架构

    1. 制作自定义镜像(base基础镜像,搭建共性环境) 基于centos镜像使用commit创建新的镜像文件 基于centos镜像使用Dockerfile文件创建一个新的镜像文件   1.1 使用镜像 ...

  8. Kubernetes的故事之持久化存储(十)

    一.Storage 1.1.Volume 官网网址:https://kubernetes.io/docs/concepts/storage/volumes/ 通过官网说明大致总结下就是这个volume ...

  9. IOS开发-本地持久化存储sqlite应用

    前言 需求描述 开发测试环境 FMDB介绍 创建工程 一.前言 上一章介绍了如何开发一个IOS应用的入门案例教程:                     我的第一个IOS开发应用    本章主要将介 ...

随机推荐

  1. 8Manage:数据安全,企业新时代的护航利器

    数据安全,是个老生常谈的话题,但是安全往往是在危险的时候方能体现出来,因此,这也是很容易被人们所忽略的部分.2017年,数据安全事件更是屡屡登上头条,除了个人信息的数据泄露之外,还有网络病毒造成的全球 ...

  2. linux下线程的两种封装方式

    在网络编程的时候往往需要对Linux下原生的pthread库中的函数进行封装,使其使用起来更加方便,封装方法一般有两种:面向对象和基于对象,下面将分别介绍这两种方式,最后统一分析这两种方式的优缺点: ...

  3. 如何利用wireshark破解网站密码

    在有进行破解意愿的想法诞生之前,博主得先来给各位泼一盆凉水,本文介绍的方法破解http的轻而易举,而对于https的就算了.因为Wireshark 没有session key ,不能解密SSL数据流. ...

  4. 三方面搞定http协议之“报文模型”

    关于http协议,这一块的知识其实相当大,但是作为一个前端开发者来说,我觉得只要知道三方面的内容就足矣把http协议是个什么东西解释清楚了.而这三方面,就是http的报文模型,请求方式以及状态码. 这 ...

  5. Java jsoup爬取图片

    jsoup爬取百度瀑布流图片 是的,Java也可以做网络爬虫,不仅可以爬静态网页的图片,也可以爬动态网页的图片,比如采用Ajax技术进行异步加载的百度瀑布流. 以前有写过用Java进行百度图片的抓取, ...

  6. 第八届蓝桥杯省赛17【java B组】第一题

    1,标题: 购物单    小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞.    这不,XX大促销又来了!老板夫人开出了长长的购 ...

  7. mysql主从复制安装详解

    1.环境准备:两台Linux6.8服务器,(可以通过yum安装mysql:yum install mysql mysql-server -y,安装的版本可能比较低,对于练手来说够用了 )主库ip:19 ...

  8. STL --> list用法

    List介绍 Lists将元素按顺序储存在链表中.与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢. assign() // 给list赋值 back() // 返回最后 ...

  9. 蓝牙4.0模块控制LED彩灯调光调色经验之谈

    基于蓝牙模块的智能LED彩灯调光调色控制思路如下: 在此,找一个低功耗蓝牙模块内嵌接入LED灯的控制电路板,接入LED彩灯的控制电路中. 蓝牙模块彩灯控制方式如下,本文两类来解说led灯的控制方式: ...

  10. java.lnag.Throwable详细解读

    public  class Throwable  extends  Object  implemnts Serializable Throwable类是所有错误或异常的超类.只有当对象是此类(或其中之 ...