將 Guestbook 應用程式部署到 TKG 叢集並探索 Kubernetes。
部署 Guestbook 應用程式是探索 Kubernetes 的實用方式。該應用程式使用 Deployment 和 ReplicaSet 物件在預設命名空間中部署網繭,並使用服務公開這些網繭。已保留 Guestbook 資料,即使應用程式關閉時,資料也會保留。本教學課程使用動態持續性磁碟區宣告 (PVC) 請求持續性儲存區資源,而無需瞭解基礎儲存區的詳細資訊。用於 PVC 的儲存區是由 vSphere 命名空間 的儲存區配額配置的。依預設,容器是暫時和無狀態的。對於可設定狀態的工作負載,常見方法是建立持續性磁碟區宣告 (PVC)。可以使用 PVC 來掛接持續性磁碟區和存取儲存區。要求會動態地佈建持續性磁碟區物件和相符的虛擬磁碟。宣告會繫結到持續性磁碟區。刪除此宣告時,也會刪除對應的持續性磁碟區物件和佈建的虛擬磁碟。
必要條件
檢閱以下主題:
- Kubernetes 說明文件中的 Guestbook 應用程式教學課程
- 佈建 TKG 叢集。
- 連線至 TKG 叢集。
程序
- 登入 TKG 叢集。
- 建立 Guestbook 命名空間。
kubectl create namespace guestbook
驗證:kubectl get ns
- 使用有權限的預設 PSP 建立角色型存取控制。
kubectl create clusterrolebinding default-tkg-admin-privileged-binding --clusterrole=psp:vmware-system-privileged --group=system:authenticated
備註: 如果需要更嚴格的安全性,請在 Guestbook 命名空間上套用 RoleBinding。 - 驗證儲存區類別,或建立一個類別。
驗證現有的儲存區類別:
kubectl describe namespace
或者,如果您具有 vSphere 管理員權限:kubectl get storageclass
- 建立參考儲存區類別的動態持續性磁碟區宣告 (PVC) YAML 檔。
使用下列 YAML 檔案。使用儲存區類別的名稱更新每個檔案。
- 將 Guestbook PVC 套用至叢集。
kubectl apply -f redis-leader-pvc.yaml -n guestbook
kubectl apply -f redis-follower-pvc.yaml -n guestbook
- 驗證 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
- 建立 Guestbook YAML 檔案。
使用下列 YAML 檔案:
- 在 Guestbook 應用程式的命名空間中部署該應用程式。
kubectl apply -f . --namespace guestbook
- 驗證 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
- 使用
service/guestbook-frontend
負載平衡器的External-IP
位址存取 Guestbook 網頁,在此範例中為10.19.15.99
。您會看到 Guestbook Web 介面,並且可以在 Guestbook 資料庫中輸入值。如果重新啟動應用程式,資料會保存下來。