Adding Persistent Storage to Red Hat CDK Kit 3.0 (在Red Hat CDK Kit 3.0添加永久性存储)

Adding Persistent Storage to Red Hat CDK Kit 3.0

原文作者:Andrew Block
原文地址:https://dzone.com/articles/adding-persistent-storage-to-red-hat-cdk-kit-30
译者:@从流域到海域
译者博客:blog.csdn.net/solo95
本文同样刊载于腾讯云+:
https://cloud.tencent.com/developer/article/1014719

在Red Hat CDK Kit 3.0添加永久性存储

Note:本文介绍了在Red Hat Container Development Kit (CDK)3.0 Beta中找到的功能。将来的版本中可能会更改功能和特性。

The Red Hat Container Development Kit (CDK) 提供了一个一体化的环境,不仅可以构建和测试Docker容器,还可以在Red Hat OpenShift容器平台上使用它们。全部来自单个开发者的机器。自成立以来,CDK使用Vagrant作为供应平台。从版本3.0开始,CDK现在使用Minishift作为底层提供者。基于Minishift的CDK 3.0的过渡减少了需要安装和配置的依赖的数量。现在只需要VirtualBox或KVM等虚拟机管理程序(container被直译为容器,下文同,译者注。

CDK最好的部分之一是它提供了一个开发人员可以立即使用的功能齐全的环境。但是,向CDK 3.0过渡确实忽略了以前版本中的一个关键特性:预先配置的永久性存储。在CDK 2.0中,OpenShift使用的three(3)被预先配置向应用程序提供长期存储。通过在主机上配置了一个网络文件系统(NFS)服务器来提供这样的功能。 Minishift主机没有配置NFS服务器。但是,可以使用OpenShift提供的其中一种替代存储类型:HostPath。 HostPath volume 插件可以使用底层容器主机上的存储,而无需安装任何其他软件。

为主机路径存储配置CDK,应创建多个代表永久性目录(PersistentVolumes)的目录以支持需要永久性性存储的应用程序。由于Minishift会引导到tempfs,大多数目录将在机器重新启动后继续存在。只有放置在以下目录中的文件才会被保留:

  • /var/lib/docker
  • /var/lib/minishift

新建的三个的永久卷应该在/var/lib/minishift/pv路径下创建,并且被命名为文件夹pv01、pv02、pv03。

在CDK已经启动的情况下,执行以下命令访问Minishift机器中的shell:

minishift ssh

默认情况下,当使用SSH命令访问Minishift机器时,您将以一个名为docker的用户身份登录。由于这个目录是由root用户授权和保护的,所以需要使用sudo up命令。

sudo su - 

为PersistentVolumes创建三个目录:

mkdir -p /var/lib/minishift/pv/pv0{1..3}

为了简化CDK等开发环境中的权限管理,请适当放宽目录和权限所有权:

chmod -R 777 /var/lib/minishift/pv/pv*
chmod -R a+w /var/lib/minishift/pv/pv*

CDK的一个主要优点是它建立在Red Hat 企业版Linux(RHEL)基础之上。 RHEL固有的安全功能之一是SELinux,它不仅为主机提供了额外的保护,而且任何容器都可以把它作为一个基础使用。默认情况下,容器被限制直接写入底层主机文件系统。要允许容器写入为永久卷创建的目录,必须设置SELinux标签svirt_sandbox_file_t

执行以下命令重新标记目录:

chcon -R -t svirt\_sandbox\_file\_t /var/lib /minishift/pv /\*

restorecon -R /var/lib/minishift/pv/

通过正确配置目录,可以创建使用HostPath存储插件的永久卷。确保使用OpenShift命令行工具作为集群管理员登录到OpenShift环境中:

oc login -u system:admin

现在创建新的永久卷:

for i in $(seq 1 3); do

oc create -f - <<PV

apiVersion: v1

kind: PersistentVolume

metadata:
   name: pv0$i

spec:
  accessModes:
  - ReadWriteOnce
  - ReadWriteMany
  - ReadOnlyMany
  capacity:
    storage: 2Gi
  hostPath:
    path: /var/lib/minishift/pv/pv0$i
  persistentVolumeReclaimPolicy: Recycle

PV

done

现在新创建的永久卷就可以被修改了:

oc get pv

NAME      CAPACITY   ACCESSMODES   RECLAIMPOLICY   STATUS      CLAIM                                REASON    AGE

pv01      2Gi        RWO,ROX,RWX   Recycle         Available                                                  1m

pv02      2Gi        RWO,ROX,RWX   Recycle         Available                                                  1m

pv03      2Gi        RWO,ROX,RWX   Recycle         Available                                                  1m

永久性存储的使用,特别是在开发阶段,在容器化应用程序时提供了一些额外的功能。

posted @ 2018-01-05 10:54  从流域到海域  阅读(48)  评论(0编辑  收藏  举报