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. 网络游戏开发-服务器(01)Asp.Net Core中的websocket,并封装一个简单的中间件

    先拉开MSDN的文档,大致读一遍 (https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/websockets) WebSocket 是一 ...

  2. python 全栈开发,Day3(正式)

    一.基础数据类型 基础数据类型,有7种类型,存在即合理. 1.int 整数 主要是做运算的 .比如加减乘除,幂,取余  + - * / ** %...2.bool 布尔值 判断真假以及作为条件变量3. ...

  3. php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别

    if(isset($_POST['submit'])) 它的意思是不是判断是否配置了$_POST['submit'] 这个变量呢?如果有这个变量 在执行其它代码 应该这样用if(isset($_POS ...

  4. IntelliJ Idea常用的快捷键

    以下是IntelliJ Idea2017版的,基本上不会有什么变化 IntelliJ Idea这个编译器现在非常流行,他强大的快捷键非常好用,相比于eclipse,IntelliJ Idea界面也比e ...

  5. 笔记:Maven 项目基本配置

    Maven 的基本设置包含项目基本信息和项目信息,基本信息主要用于设置当前包的归属项目.当前项目等,配置文件结构如下: <project xmlns="http://maven.apa ...

  6. 网络通信 --> select()用法

    select()用法 头文件 #include <sys/time.h> #include <sys/types.h> #include <unistd.h> 定义 ...

  7. Object类-----java

    Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另一个类,那么这类默认继承object类 Object类中的方法,适合所有子类. 1 toString()方法在Obje ...

  8. 使用 win10 的正确姿势 (第二版)

    文章为本人原创,转载请注明出处,谢谢. 17年9月初,写了第一篇<使用 win10 的正确姿势>,而现在半年多过去,文章更新了一些,主要是桌面的变化. 一. 重新定义桌面 我的桌面: 将桌 ...

  9. Java字符编码浅析

    Java基本类型占用的字节数:1字节: byte , boolean2字节: short , char4字节: int , float8字节: long , double注:1字节(byte)=8位( ...

  10. oracle创建表空间、创建用户并赋予权限

    分开执行如下sql语句 --创建临时表空间 CREATE SMALLFILE TEMPORARY TABLESPACE "TEMP11" TEMPFILE 'E:\app\MD\o ...