OpenShift

OpenShift 4 Hands-on Lab 使用持久化存储

OpenShift支持的存储的访问能力


通过PVC使用存储

1.用一般用户新建一个名为USER-ID-pv的项目。

$ export USER_ID=YOUR-USER-ID
$ oc new-project ${USER_ID}-pv

2.执行以下任一个命令创建测试应用。

$ oc new-app -l app=image-uploader --image-stream=php --code=https://github.com/liuxiaoyu-git/image-uploader.git -n ${USER_ID}-pv
$ oc new-app -l app=image-uploader php~https://github.com/liuxiaoyu-git/image-uploader.git -n ${USER_ID}-pv
$ oc new-app -l app=image-uploader https://github.com/liuxiaoyu-git/image-uploader.git -n ${USER_ID}-pv

3.为应用生成route。

oc expose svc image-uploader -n ${USER_ID}-pv

4.打开image-uploader的route对应地址,然后上传一个JPG/GIF/PNG格式的图片文件。确认可以查看到上传的图片的缩略图。

5.执行以下命令,将部署的Pod扩展为2个。

$ oc scale dc image-uploader --replicas=2 -n ${USER_ID}-pv

6.由于相同浏览器通常都是共享Session的,因此需要用另外一款浏览器打开image-uploader的route对应链接。此时会发现新的浏览器中看不到图片缩略图,而原有浏览器可看到图片缩略图。在新的浏览器中上传另一个图片,会发现两各浏览器看到的是不同图片,这说明此时应用使用的是每个Pod的本地存储保存的图片。

7.执行以下命令,查看Pod的名称

$ oc get pod -n ${USER_ID}-pv
NAME                      READY   STATUS      RESTARTS   AGE
image-uploader-1-build    0/1     Completed   0          23m
image-uploader-1-d8c5s    1/1     Running     0          21m
image-uploader-1-deploy   0/1     Completed   0          21m
image-uploader-1-zq65k    1/1     Running     0          21m


8.然后删除image-uploader应用的这2个pod。稍后再次查看Pod,此时可发现OpenShift又创建了2个新的Pod。

$ oc delete pods -l app=image-uploader -n ${USER_ID}-pv
$ oc get pod
NAME                     READY   STATUS    RESTARTS   AGE
image-uploader-1-5s72r   1/1     Running   0          91s
image-uploader-1-88trb   1/1     Running   0          93s

9.用两个浏览器分别打开image-uploader应用route链接,会发现图片全没有了。这说明Pod被删除后,其内部的图片会随之丢失。

10.执行以下命令,查看OpenShift配置的StorgaClass(下面是在已经配置好的AWS gp2存储)。

$ oc get storageclass -n ${USER_ID}-pv
NAME            PROVISIONER             AGE
gp2 (default)   kubernetes.io/aws-ebs   42h

11.切换到给用户的Administrator视图,然后通过Storage->Persistent Volume Claims中进入Create Persistent Volume Claim页面,按下面配置创建一个Persistent Volume Claim。

Name: USER-ID-pvc
Access Mode: Single User(RWO)
Size: 1GiB

12.从菜单进入Workloads->Deployment Configs中image-uploader的配置页面,然后进入右上方的Action->Add Storage。

13.在Add Storage页面中为Use existing claim选择前面创建的USER-ID-pv,然后将Mount Path设为‘/opt/app-root/src/uploads’,然后点击Save按钮。

14.此时页面跳转到image-uploader的Delployment Config,可以看到OpenShift会自动重新部署该应用,通过滚动升级的方式用2个新Pod运行image-uploader。

15.在完成后新的部署后再次用一个浏览器访问该应用对应的route链接,上传文件后,然后使用另一款浏览器应该可也能看到上传的图片。

16.再通过(8)删除2个Pod,OpenShift会自动新建2个pod。通过浏览器访问应用,发现还可看到以前上传的图片。

17.在OpenShift控制台分别进入2个Pod的Terminal查看/opt/app-root/src/uploads目录,可看到刚刚上传的图片。这说明2个pod都使用了相同的storage。