使用 Kubernetes 工具建立 PostgreSQL 伺服器
必要條件
您應該已經建立資料控制器。
若要使用 Kubernetes 工具來建立 PostgreSQL 伺服器,您必須安裝 Kubernetes 工具。 本文中的範例會使用 kubectl
,但您可以使用類似的方法搭配其他 Kubernetes 工具,例如 Kubernetes 儀表板、oc
或 helm
(如果您熟悉這些工具和 Kubernetes yaml/json)。
概觀
若要建立 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.password
和 data.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 伺服器名稱,則可以將 arc
和 pg1
取代為您的名稱。
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
針對建立問題進行疑難排解
如果您在建立時遇到任何問題,請參閱疑難排解指南。