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

  1. 用一般用户新建一个名为USER-ID-pv的项目。
$ oc new-project USER-ID-pv
  1. 执行以下任一个命令创建测试应用。
$ oc new-app -l app=image-uploader --image-stream=php --code=https://github.com/liuxiaoyu-git/image-uploader.git
$ oc new-app -l app=image-uploader php~https://github.com/liuxiaoyu-git/image-uploader.git
$ oc new-app -l app=image-uploader https://github.com/liuxiaoyu-git/image-uploader.git
  1. 为应用生成route。
oc expose svc image-uploader
  1. 打开image-uploader的route对应地址,然后上传一个JPG/GIF/PNG格式的图片文件。确认可以查看到上传的图片的缩略图。
    OpenShift 4 Hands-on Lab (10) 使用持久化存储_第1张图片
  2. 执行以下命令,将部署的Pod扩展为2个。
$ oc scale dc image-uploader --replicas=2
  1. 由于相同浏览器通常都是共享Session的,因此需要用另外一款浏览器打开image-uploader的route对应链接。此时会发现新的浏览器中看不到图片缩略图,而原有浏览器可看到图片缩略图。在新的浏览器中上传另一个图片,会发现两各浏览器看到的是不同图片,这说明此时应用使用的是每个Pod的本地存储保存的图片。
  2. 执行以下命令,查看Pod的名称。
$ oc get pod
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
  1. 然后删除image-uploader应用的这2个pod。稍后再次查看Pod,此时可发现OpenShift又创建了2个新的Pod。
$ oc delete pods -l app=image-uploader
$ 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
  1. 用两个浏览器分别打开image-uploader应用route链接,会发现图片全没有了。这说明Pod被删除后,其内部的图片会随之丢失。
  2. 执行以下命令,查看OpenShift配置的StorgaClass(下面是在已经配置好的AWS gp2存储)。
$ oc get storageclass
NAME            PROVISIONER             AGE
gp2 (default)   kubernetes.io/aws-ebs   42h
  1. 切换到给用户的Administrator视图,然后通过Storage->Persistent Volume Claims中进入Create Persistent Volume Claim页面,按下面配置创建一个Persistent Volume Claim。
    Name: USER-ID-pvc
    Access Mode: Single User(RWO)
    Size: 1GiB
    OpenShift 4 Hands-on Lab (10) 使用持久化存储_第2张图片
  2. 从菜单进入Workloads->Deployment Configs中image-uploader的配置页面,然后进入右上方的Action->Add Storage。
  3. 在Add Storage页面中为Use existing claim选择前面创建的USER-ID-pv,然后将Mount Path设为‘/opt/app-root/src/uploads’,然后点击Save按钮。
    OpenShift 4 Hands-on Lab (10) 使用持久化存储_第3张图片
  4. 此时页面跳转到image-uploader的Delployment Config,可以看到OpenShift会自动重新部署该应用,通过滚动升级的方式用2个新Pod运行image-uploader。
    OpenShift 4 Hands-on Lab (10) 使用持久化存储_第4张图片
  5. 在完成后新的部署后再次用一个浏览器访问该应用对应的route链接,上传文件后,然后使用另一款浏览器应该可也能看到上传的图片。
  6. 再通过(8)删除2个Pod,OpenShift会自动新建2个pod。通过浏览器访问应用,发现还可看到以前上传的图片。
  7. 在OpenShift控制台分别进入2个Pod的Terminal查看/opt/app-root/src/uploads目录,可看到刚刚上传的图片。这说明2个pod都使用了相同的storage。

你可能感兴趣的:(OpenShift,4,Dev,存储)