部署資料庫服務¶
我們將學習哪些 Knative 功能?¶
- 使用 Knative 服務的適當使用案例是什麼?
最終交付成果的外觀為何?¶
- 執行包含資料表和一些範例資料的 PostgreSQL StatefulSet
概念學習¶
Knative 服務是 Knative 生態系統中的強大功能,旨在處理各種使用案例,尤其是在現代雲原生應用程式中,它可以由 Knative Serving 控制,並實現縮放至 0。以下是關於何時以及為什麼應考慮使用 Knative 服務的詳細說明
無狀態工作負載
- 定義: 無狀態應用程式不會在請求之間在本機儲存任何資料。每個請求都是獨立的,不依賴於任何先前的互動。
- 使用案例: 範例包括網頁伺服器、API 和微服務,其中狀態是在外部管理的,例如在資料庫或快取中。
- 優點: 簡化了擴展和容錯移轉,因為任何執行個體都可以處理任何請求,而無需會話持久性。
事件驅動的工作負載
- 定義: 事件驅動的架構會對事件或觸發器做出回應,例如 HTTP 請求、佇列中的訊息或資料庫中的變更。
- 使用案例: 使用 Knative 服務來部署對事件做出反應的功能,例如處理傳入的資料、觸發工作流程或與第三方 API 整合。
- 優點: 資源使用效率高,因為服務在不處理事件時可以縮減為零,從而降低成本並提高效能。
請嘗試在 Knative Slack 社群 #knative 中詢問這是否為最佳使用案例。
實作¶
步驟 1:套用所有設定 yaml 檔案¶
在本節中,我們將僅簡單地執行 PostgreSQL 服務。我們已準備好所有設定檔案。只需執行以下命令即可一次套用所有 yamls。
kubectl apply -f db-service
警告
請稍待幾分鐘,直到一切準備就緒。如果您看到某些 job pod 失敗並出現錯誤,這沒關係。只需繼續等待即可。
驗證
您應該看到以下輸出
configmap/sql-configmap created
secret/postgresql-secret created
persistentvolumeclaim/postgresql-pvc created
statefulset.apps/postgresql created
service/postgresql created
job.batch/postgresql-job created
稍待片刻,直到所有 pod 都可用且資料庫移轉作業完成。如果您看到某些 job pod 失敗並發生錯誤,請不用擔心,請等待直到至少有一個作業變成「已完成」。
NAME READY STATUS RESTARTS AGE
bookstore-frontend-7b879ffb78-9bln6 1/1 Running 0 6h53m
camel-k-operator-7989475884-7wk6z 1/1 Running 0 5h26m
event-display-55967c745d-bxrgh 1/1 Running 0 5h26m
node-server-644795d698-r9zlr 1/1 Running 0 5h26m
postgresql-0 1/1 Running 0 5h23m
postgresql-job-55dlv 0/1 Completed 0 10s
postgresql-job-fnv8m 0/1 Error 0 73s
驗證¶
在 https://#:3000 開啟 UI 頁面,您應該會在頁面底部看到一些新留言彈出。
疑難排解
如果您看到「沒有可用的留言」,表示您的資料庫尚未初始化。請檢查資料庫服務 pod 的健康狀況,並找出發生了什麼事。
下一步¶
您已成功設定資料庫服務,並且已準備好接收請求並儲存使用者留言。
接下來,我們將連接您建立的所有元件,以完成我們的事件驅動架構。這就是奇蹟發生的地方。