跳至內容

部署資料庫服務

image1

我們將學習哪些 Knative 功能?

  • 使用 Knative 服務的適當使用案例是什麼?

最終交付成果的外觀為何?

  • 執行包含資料表和一些範例資料的 PostgreSQL StatefulSet

概念學習

image4

Knative 服務是 Knative 生態系統中的強大功能,旨在處理各種使用案例,尤其是在現代雲原生應用程式中,它可以由 Knative Serving 控制,並實現縮放至 0。以下是關於何時以及為什麼應考慮使用 Knative 服務的詳細說明

無狀態工作負載
  • 定義: 無狀態應用程式不會在請求之間在本機儲存任何資料。每個請求都是獨立的,不依賴於任何先前的互動。
  • 使用案例: 範例包括網頁伺服器、API 和微服務,其中狀態是在外部管理的,例如在資料庫或快取中。
  • 優點: 簡化了擴展和容錯移轉,因為任何執行個體都可以處理任何請求,而無需會話持久性。
事件驅動的工作負載
  • 定義: 事件驅動的架構會對事件或觸發器做出回應,例如 HTTP 請求、佇列中的訊息或資料庫中的變更。
  • 使用案例: 使用 Knative 服務來部署對事件做出反應的功能,例如處理傳入的資料、觸發工作流程或與第三方 API 整合。
  • 優點: 資源使用效率高,因為服務在不處理事件時可以縮減為零,從而降低成本並提高效能。

image6

請嘗試在 Knative Slack 社群 #knative 中詢問這是否為最佳使用案例。

實作

步驟 1:套用所有設定 yaml 檔案

image9

在本節中,我們將僅簡單地執行 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

驗證

image3

https://#:3000 開啟 UI 頁面,您應該會在頁面底部看到一些新留言彈出。

疑難排解

如果您看到「沒有可用的留言」,表示您的資料庫尚未初始化。請檢查資料庫服務 pod 的健康狀況,並找出發生了什麼事。

image2

下一步

image7

您已成功設定資料庫服務,並且已準備好接收請求並儲存使用者留言。

接下來,我們將連接您建立的所有元件,以完成我們的事件驅動架構。這就是奇蹟發生的地方。

前往實作進階事件篩選

我們使用分析和 Cookie 來了解網站流量。您使用我們網站的相關資訊會與 Google 分享,以達到此目的。瞭解更多。