將 Guestbook 應用程式部署到 TKG 叢集並探索 Kubernetes。

部署 Guestbook 應用程式是探索 Kubernetes 的實用方式。該應用程式使用 Deployment 和 ReplicaSet 物件在預設命名空間中部署網繭,並使用服務公開這些網繭。已保留 Guestbook 資料,即使應用程式關閉時,資料也會保留。本教學課程使用動態持續性磁碟區宣告 (PVC) 請求持續性儲存區資源,而無需瞭解基礎儲存區的詳細資訊。用於 PVC 的儲存區是由 vSphere 命名空間 的儲存區配額配置的。依預設,容器是暫時和無狀態的。對於可設定狀態的工作負載,常見方法是建立持續性磁碟區宣告 (PVC)。可以使用 PVC 來掛接持續性磁碟區和存取儲存區。要求會動態地佈建持續性磁碟區物件和相符的虛擬磁碟。宣告會繫結到持續性磁碟區。刪除此宣告時,也會刪除對應的持續性磁碟區物件和佈建的虛擬磁碟。

必要條件

檢閱以下主題:

程序

  1. 登入 TKG 叢集。
  2. 建立 Guestbook 命名空間。
    kubectl create namespace guestbook
    驗證:
    kubectl get ns
  3. 使用有權限的預設 PSP 建立角色型存取控制。
    kubectl create clusterrolebinding default-tkg-admin-privileged-binding --clusterrole=psp:vmware-system-privileged --group=system:authenticated
    備註: 如果需要更嚴格的安全性,請在 Guestbook 命名空間上套用 RoleBinding。
  4. 驗證儲存區類別,或建立一個類別。
    驗證現有的儲存區類別:
    kubectl describe namespace
    或者,如果您具有 vSphere 管理員權限:
    kubectl get storageclass
  5. 建立參考儲存區類別的動態持續性磁碟區宣告 (PVC) YAML 檔。
    使用下列 YAML 檔案。使用儲存區類別的名稱更新每個檔案。
  6. 將 Guestbook PVC 套用至叢集。
    kubectl apply -f redis-leader-pvc.yaml -n guestbook
    kubectl apply -f redis-follower-pvc.yaml -n guestbook
  7. 驗證 PVC 的狀態。
    kubectl get pvc,pv -n guestbook
    PVC 和持續性磁碟區 (PV) 隨即列出並且可供使用。
    NAME                                       STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS         AGE
    persistentvolumeclaim/redis-follower-pvc   Bound    pvc-37b72f35-3de2-4f84-be7d-50d5dd968f62   2Gi        RWO            tkgs-storage-class   66s
    persistentvolumeclaim/redis-leader-pvc     Bound    pvc-2ef51f31-dd4b-4fe2-bf4c-f0149cb4f3da   2Gi        RWO            tkgs-storage-class   66s
    
    NAME                                                CAPACITY   ACCESS MODES   RECLAIM POLICY STATUS   CLAIM                 STORAGECLASS         
    persistentvolume/pvc-2ef51f31-dd4b-4fe2-bf4c   2Gi  RWO            Delete           Bound    guestbook/redis-leader-pvc     tkgs-storage-class
    persistentvolume/pvc-37b72f35-3de2-4f84-be7d   2Gi  RWO            Delete           Bound    guestbook/redis-follower-pvc   tkgs-storage-class
  8. 建立 Guestbook YAML 檔案。
  9. 在 Guestbook 應用程式的命名空間中部署該應用程式。
    kubectl apply -f . --namespace guestbook
  10. 驗證 Guestbook 資源的建立。
    kubectl get all -n guestbook
    NAME                                                 READY   STATUS              RESTARTS   AGE
    pod/guestbook-frontend-deployment-56fc5b6b47-cd58r   1/1     Running             0          65s
    pod/guestbook-frontend-deployment-56fc5b6b47-fh6dp   1/1     Running             0          65s
    pod/guestbook-frontend-deployment-56fc5b6b47-hgd2b   1/1     Running             0          65s
    pod/redis-follower-deployment-6fc9cf5759-99fgw       1/1     Running             0          65s
    pod/redis-follower-deployment-6fc9cf5759-rhxf7       1/1     Running             0          65s
    pod/redis-leader-deployment-7d89bbdbcf-flt4q         1/1     Running             0          65s
    
    NAME                                 TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)        AGE
    service/guestbook-frontend           LoadBalancer   10.10.89.59      10.19.15.99     80:31513/TCP   65s
    service/redis-follower               ClusterIP      10.111.163.189   <none>          6379/TCP       65s
    service/redis-leader                 ClusterIP      10.111.70.189    <none>          6379/TCP       65s
    
    NAME                                            READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/guestbook-frontend-deployment   3/3     3            3           65s
    deployment.apps/redis-follower-deployment       1/2     2            1           65s
    deployment.apps/redis-leader-deployment         1/1     1            1           65s
    
    NAME                                                       DESIRED   CURRENT   READY   AGE
    replicaset.apps/guestbook-frontend-deployment-56fc5b6b47   3         3         3       65s
    replicaset.apps/redis-follower-deployment-6fc9cf5759       2         2         1       65s
    replicaset.apps/redis-leader-deployment-7d89bbdbcf         1         1         1       65s
  11. 使用 service/guestbook-frontend 負載平衡器的 External-IP 位址存取 Guestbook 網頁,在此範例中為 10.19.15.99
    您會看到 Guestbook Web 介面,並且可以在 Guestbook 資料庫中輸入值。如果重新啟動應用程式,資料會保存下來。