OpenShift 4 HOL (11)

OpenShift 4 HOL (11) - 使用持久化存儲

1. 用一般用戶新建一個名為USER-ID-pv的項目。

<code>$ oc new-project USER-ID-pv\t/<code>

2. 執行以下任一個命令創建測試應用。

<code>$ 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/<code>

3. 為應用生成route。

<code>$ oc expose svc image-uploader/<code>

4. 打開image-uploader的route對應地址,然後上傳一個JPG/GIF/PNG格式的圖片文件。確認可以查看到上傳的圖片的縮略圖。

OpenShift 4 HOL (11) - 使用持久化存儲

5. 執行以下命令,將部署的Pod擴展為2個。

<code>$ oc scale dc image-uploader --replicas=2/<code>

6. 由於相同瀏覽器通常都是共享Session的,因此需要用另外一款瀏覽器打開image-uploader的route對應鏈接。此時會發現新的瀏覽器中看不到圖片縮略圖,而原有瀏覽器可看到圖片縮略圖。在新的瀏覽器中上傳另一個圖片,會發現兩各瀏覽器看到的是不同圖片,這說明此時應用使用的是每個Pod的本地存儲保存的圖片。

7. 執行以下命令,查看Pod的名稱。

<code>$ 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/<code>

8. 然後刪除image-uploader應用的這2個pod。稍後再次查看Pod,此時可發現OpenShift又創建了2個新的Pod。

<code>$ 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/<code>

9. 用兩個瀏覽器分別打開image-uploader應用route鏈接,會發現圖片全沒有了。這說明Pod被刪除後,其內部的圖片會隨之丟失。

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

<code>$ oc get storageclass
NAME PROVISIONER AGE
gp2 (default) kubernetes.io/aws-ebs 42h/<code>

11. 切換到給用戶的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 HOL (11) - 使用持久化存儲

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按鈕。

OpenShift 4 HOL (11) - 使用持久化存儲

14. 此時頁面跳轉到image-uploader的Delployment Config,可以看到OpenShift會自動重新部署該應用,通過滾動升級的方式用2個新Pod運行image-uploader。

OpenShift 4 HOL (11) - 使用持久化存儲

15. 在完成後新的部署後再次用一個瀏覽器訪問該應用對應的route鏈接,上傳文件後,然後使用另一款瀏覽器應該可也能看到上傳的圖片。

16. 再通過(8)刪除2個Pod,OpenShift會自動新建2個pod。通過瀏覽器訪問應用,發現還可看到以前上傳的圖片。

17. 在OpenShift控制檯分別進入2個Pod的Terminal查看/opt/app-root/src/uploads目錄,可看到剛剛上傳的圖片。這說明2個pod都使用了相同的storage。


分享到:


相關文章: