共用方式為


使用 Kubernetes 工具建立 PostgreSQL 伺服器

注意

作為預覽功能,本文所述的技術受限於 Microsoft Azure 預覽版增補使用規定

版本資訊中提供的最新更新。

必要條件

您應該已經建立資料控制器

若要使用 Kubernetes 工具來建立 PostgreSQL 伺服器,您必須安裝 Kubernetes 工具。 本文中的範例會使用 kubectl,但您可以使用類似的方法搭配其他 Kubernetes 工具,例如 Kubernetes 儀表板、ochelm (如果您熟悉這些工具和 Kubernetes yaml/json)。

安裝 kubectl 工具

概觀

若要建立 PostgreSQL 伺服器,您必須建立 Kubernetes 秘密,以安全地儲存您的 postgres 管理員登入和密碼,並根據 postgresqls 自訂資源定義來儲存 PostgreSQL 伺服器自訂資源。

建立 yaml 檔案

使用範本 yaml 檔案作為起點,以建立您自己的自訂 PostgreSQL 伺服器 yaml 檔案。 將此檔案下載到本機電腦,並在文字編輯器中將其開啟。 使用支援 yaml 檔案語法醒目提示和 Lint 分析的文字編輯器 (例如 VS Code) 會很有用。

範例 yaml 檔案

apiVersion: v1
data:
  username: <your base64 encoded username>
  password: <your base64 encoded password>
kind: Secret
metadata:
  name: pg1-login-secret
type: Opaque
---
apiVersion: arcdata.microsoft.com/v1beta3
kind: postgresql
metadata:
  name: pg1
spec:
  scheduling:
    default:
      resources:
        limits:
          cpu: "4"
          memory: 4Gi
        requests:
          cpu: "1"
          memory: 2Gi
  services:
    primary:
      type: LoadBalancer # Modify service type based on your Kubernetes environment
  storage:
    data:
      volumes:
      - className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
        size: 5Gi
    logs:
      volumes:
      - className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
        size: 5Gi

自訂登入和密碼。

Kubernetes 祕密會儲存為 base64 編碼字串 - 一個用於使用者名稱,另一個用於密碼。 您必須將管理員登入和密碼編碼為 base64,並將其放在 data.passworddata.username 的預留位置。 請勿包含在範本中提供的 <> 符號。

您可以使用線上工具,將所需的使用者名稱和密碼編碼為 base64,也可以根據平台使用內建 CLI 工具。

PowerShell

[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('<your string to encode here>'))

#Example
#[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('example'))

Linux/macOS

echo -n '<your string to encode here>' | base64

#Example
# echo -n 'example' | base64

自訂名稱

範本的名稱屬性具有值 pg1。 您可以變更此值,但其包含的字元必須遵循 DNS 命名標準。 如果您變更名稱,請相應變更祕密的名稱。 例如,如果將 PostgreSQL 伺服器的名稱變更為 pg2,則您必須將祕密的名稱從 pg1-login-secret 變更為 pg2-login-secret

自訂資源需求

您可以視需要變更資源需求 - RAM 和核心限制和要求。

注意

您可以深入了解 Kubernetes 資源治理

資源限制和要求的需求:

  • 需要填寫核心限制值才能計費。
  • 其餘的資源要求和限制是選填的。
  • 如果指定這些值,核心限制和要求必須是正整數值。
  • 如果指定這些值,核心要求至少需要一個核心。
  • 記憶體值格式遵循 Kubernetes 標記法。

自訂服務類型

如有需要,服務類型可以變更為 NodePort。 將會指派隨機連接埠號碼。

自訂儲存體

您可以自訂儲存體的儲存類別,以配合環境。 如果您不確定有哪些儲存類別可用,請執行命令 kubectl get storageclass 來加以檢視。 範本的預設值為 default。 此值表示有名為default 的儲存類別,而沒有預設的儲存類別。 您也可以選擇性地變更儲存體的大小。 您可以深入了解儲存體設定

建立 PostgreSQL 伺服器

既然您已自訂 PostgreSQL 伺服器 yaml 檔案,您可以執行下列命令來建立 PostgreSQL 伺服器:

kubectl create -n <your target namespace> -f <path to your yaml file>

#Example
#kubectl create -n arc -f C:\arc-data-services\postgres.yaml

監視建立狀態

建立 PostgreSQL 伺服器需要幾分鐘的時間才能完成。 您可以使用下列命令,在另一個終端機視窗中監視進度:

注意

下列範例命令假設您已建立名為 pg1 的 PostgreSQL 伺服器,以及名稱為 arc 的 Kubernetes 命名空間。 如果您使用不同的命名空間/PostgreSQL 伺服器名稱,則可以將 arcpg1 取代為您的名稱。

kubectl get postgresqls/pg1 --namespace arc
kubectl get pods --namespace arc

您也可以透過執行 kubectl describe 命令檢查任何特定 Pod 的建立狀態。 命令 describe 特別適合針對任何問題進行疑難排解。 例如:

kubectl describe pod/<pod name> --namespace arc

#Example:
#kubectl describe pod/pg1-0 --namespace arc

針對建立問題進行疑難排解

如果您在建立時遇到任何問題,請參閱疑難排解指南