如何在 Kubernetes 上部署 PostgreSQL?


簡介

PostgreSQL 是一款開源的關係資料庫管理系統 (RDBMS),以其魯棒性、穩定性和處理複雜和大型資料集的能力而聞名。另一方面,Kubernetes 是一種開源的容器編排系統,可自動執行容器化應用程式的部署、擴充套件和管理。

結合這兩種強大的技術,可以為託管您的 PostgreSQL 資料庫提供一個高度可擴充套件且可靠的環境。在本文中,我們將探討如何在 Kubernetes 上部署 PostgreSQL。

我們將首先解釋什麼是 PostgreSQL 和 Kubernetes 以及在 Kubernetes 上部署 PostgreSQL 的好處。然後,我們將概述部署過程,然後再深入探討每個步驟。

部署過程概述

在 Kubernetes 上部署 PostgreSQL 的過程涉及多個步驟。我們將在以下部分詳細介紹每個步驟。部署過程概述包括:

  • 設定 Kubernetes 叢集 - 您可以選擇使用雲提供商或為開發目的設定本地叢集。

  • 準備 PostgreSQL 映象 - 選擇 PostgreSQL 部署的基本映象並將其配置為與 Kubernetes 一起使用。

  • 建立部署清單 - 以 YAML 格式定義部署規範,並配置環境變數、卷和埠。

  • 在 Kubernetes 上部署 PostgreSQL - 使用 kubectl 部署清單檔案,並使用 kubectl 命令監控部署狀態。

  • 擴充套件和更新 PostgreSQL - 根據需求進行擴充套件或縮減,並更新配置或版本。

  • 備份 PostgreSQL 中的資料 - 使用 pg_dump 或 pgBackrest 設定備份,並將備份儲存在雲端儲存中。

設定 Kubernetes 叢集

在 Kubernetes 上部署 PostgreSQL 需要一個功能正常的 Kubernetes 叢集,這是一個節點集合,它們協同工作以管理容器化應用程式。您可以自己建立叢集,也可以使用雲提供商,例如 Amazon Web Services (AWS)、Google Cloud Platform (GCP) 或 Microsoft Azure。雲提供商選項在 Kubernetes 的定價、功能和支援版本方面有所不同。

選擇雲提供商或設定本地叢集

在選擇雲提供商或設定本地叢集之前,請考慮成本效益、基礎設施管理技能和團隊規模、合規性要求和應用程式需求等因素。雲提供商提供託管服務,這些服務處理底層基礎設施管理,同時提供易於使用的介面,以最少的設定即可啟動叢集。缺點是與維護內部解決方案相比,隨著時間的推移,潛在成本可能會增加。

安裝和配置 kubectl 和 Helm

設定好 Kubernetes 集群后,就該安裝 kubectl 了,這是一個用於與 Kubernetes API 伺服器互動的重要工具。Kubectl 允許開發人員透過訪問 pod/服務/複製控制器/configMap/金鑰等將應用程式部署到他們新建立的叢集中。

Helm 可以使用大多數作業系統上提供的包管理器安裝,例如 macOS 和 Linux 的 apt 或 brew。安裝後,您可以使用 helm 命令與圖表進行互動。

準備 PostgreSQL 映象

在 Kubernetes 上部署 PostgreSQL 之前,您需要準備一個包含必要軟體和配置的 Docker 映象。您可以從 Docker Hub 開始使用 PostgreSQL 的基本映象,也可以使用其他元件構建自己的自定義映象。

選擇用於 PostgreSQL 部署的基本映象 PostgreSQL 的基本映象包括作業系統、Postgres 二進位制檔案和一些基本配置。

配置映象以與 Kubernetes 一起使用

選擇好用於在 Kubernetes 上部署 Postgres 的基本映象後,就可以將其配置為在 Kubernetes 中使用。為了使您的容器化 Postgres 例項能夠以最佳方式在 Kubernetes 中工作,需要在其容器規範中設定一些環境變數。例如:

  • POSTGRES_USER - 設定初始使用者帳戶。- POSTGRES_PASSWORD:設定初始密碼。

  • POSTGRES_DB - 指定預設連線到的資料庫。kubectl create 命令列實用程式允許我們使用 YAML 檔案建立或修改這些環境變數。

建立部署清單

設定好 Kubernetes 叢集並準備 PostgreSQL 映象後,下一步就是建立部署清單。部署清單是一個 YAML 檔案,其中定義了在 Kubernetes 上部署 PostgreSQL 的規範。在此檔案中,您可以指定各種引數,例如副本數量、Pod 標籤、容器映象等等。

以 YAML 格式定義部署規範

部署清單通常以 YAML 格式編寫,幷包含多個部分,這些部分定義了 PostgreSQL 部署的各個元件。在頂層,您需要指定部署的名稱和標籤等元資料。您還需要定義應部署的所需副本數量。

在每個副本規範中,您需要指定應使用哪個容器映象來執行 PostgreSQL 以及其他詳細資訊,例如資源限制和請求。

配置環境變數、卷和埠

環境變數部分允許您為 PostgresSQL 中各種不同的配置選項設定值,例如資料庫名稱或密碼或伺服器埠,這些值定義在 postgresql.conf 檔案等中。這使得跨多個部署或環境管理配置變得容易。

卷用於在應用程式重啟或升級期間持久儲存資料。為了使卷能夠與在 Kubernetes 上執行 PostgreSQL 的容器一起工作,它必須安裝在容器檔案系統的特定位置。

在 Kubernetes 上部署 PostgreSQL

建立清單檔案後,使用 kubectl 在 Kubernetes 上部署 PostgreSQL 是一個簡單的過程。在部署之前,請確保 Kubernetes 上下文已設定為正確的叢集,並且 kubectl 可以訪問它。要部署,只需在包含清單檔案的目錄中執行以下命令:

kubectl apply -f postgres-manifest.yaml     

Kubernetes 將根據清單檔案中定義的規範開始建立 Pod。

所有 Pod 執行並準備就緒後,可以透過服務物件訪問 PostgreSQL,該物件可以使用其 ClusterIP 或 NodePort 進行訪問。服務物件抽象了 Pod IP 地址或節點埠的任何更改。

使用 kubectl 部署清單檔案

`kubectl apply` 命令允許您從 YAML 或 JSON 檔案建立或更新資源,而無需使用 `kubectl create` 單獨手動定義每個資源。如果您在清單檔案中對部署規範進行了更改,則可以再次使用 `kubectl apply` 更新您的部署。您還可以使用 `kubectl get` 命令檢視有關部署狀態的資訊。

使用 kubectl 命令監控部署狀態

監控是任何生產系統的重要方面。在 Kubernetes 中,有幾種方法可以使用 kubectl 命令監控已部署應用程式的狀態。

您可以使用 `kubectl get pods` 檢查 Pod 狀態,它顯示每個 Pod 是否正在執行。如果 Pod 最近由於錯誤或崩潰迴圈回退錯誤(存活性探測失敗)而重新啟動,則檢視其日誌可能會有所幫助,方法如下:

kubectl logs       

如果要檢視資源使用情況的指標,可以使用 `kubectl top`。

結論

在 Kubernetes 上部署 PostgreSQL 提供了許多好處,使其成為使用 PostgreSQL 的組織的引人注目的選擇。首先,它使資料庫的擴充套件和更新變得更加容易,因為 Kubernetes 提供了自動擴充套件和滾動更新。

其次,使用容器化可以更好地利用資源,從而可以在一臺機器上執行多個數據庫例項。此外,在 Kubernetes 上部署 PostgreSQL 透過使用副本和自動故障轉移機制提供了更高的可靠性。

更新於:2023年7月10日

791 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告