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. python条件控制

    条件控制 现在我们写这样一个程序:在程序里设定好你的年龄,然后启动程序让用户猜测,用户输入后,根据他的输入提示用户输入的是否正确,如果错误,提示是猜大了还是小了 my_age = 24 user_in ...

  2. 使用JSONP实现跨域

    什么是跨域? 简单的来说,出于安全方面的考虑,页面中的JavaScript无法访问其他服务器上的数据,即"同源策略".而跨域就是通过某些手段来绕过同源策略限制,实现不同服务器之间通 ...

  3. CentOS7.4安装MySQL踩坑记录

    CentOS7.4安装MySQL踩坑记录 time: 2018.3.19 CentOS7.4安装MySQL时网上的文档虽然多但是不靠谱的也多, 可能因为版本与时间的问题, 所以记录下自己踩坑的过程, ...

  4. cesium 显示北京时间

    cesium用的JulianDate:代表天文朱利安时间,用的是世界协调时,比北京时间晚8个小时,所以在源代码中给默认的时间格式加上8小时. 应该会有更好的办法,希望有大神可以告诉我!!!!!!!!! ...

  5. 使用git提交到github,每次都要输入用户名和密码的解决方法

    使用git提交文件到github,每次都要输入用户名和密码,操作起来很麻烦,以下方法可解决,记录以下. 原因:在clone 项目的时候,使用了 https方式,而不是ssh方式. 默认clone 方式 ...

  6. day01的那些事

    代码之道 路漫漫其修远兮,吾将上下而求索

  7. Java基础知识回顾之二 ----- 修饰符和String

    前言 在上一篇中,回顾了Java的基本数据类型 ,这篇就来回顾下Java中的一些修饰符以及String. 修饰符介绍 Java修饰符主要分为两类: 访问修饰符 非访问修饰符 其中访问修饰符主要包括 p ...

  8. ~psd面试 求最长回文序列 DP求解

    链接:https://www.nowcoder.com/acm/contest/90/D来源:牛客网 掌握未来命运的女神 psd 师兄在拿了朝田诗乃的 buff 后决定去实习. 埃森哲公司注册成立于爱 ...

  9. 研华ADAM 6000系列型号枚举值

    public enum Adam6000Type    {        Non = 0,        Adam6015 = 6015,        Adam6017 = 6017,        ...

  10. C#内存泄漏--event内存泄漏

    内存泄漏是指:当一块内存被分配后,被丢弃,没有任何实例指针指向这块内存, 并且这块内存不会被GC视为垃圾进行回收.这块内存会一直存在,直到程序退出.C#是托管型代码,其内存的分配和释放都是由CLR负责 ...