你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 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
自定义名称
模板的 name 属性的值为 pg1
。 可更改此值,但它必须是符合 DNS 命名标准的字符。 如果更改名称,请同时更改机密的名称以匹配。 例如,如果将 PostgreSQL 服务器的名称更改为 pg2
,则必须将机密名称从 pg1-login-secret
更改为 pg2-login-secret
自定义资源要求
可根据需要更改资源要求(RAM 与核心限制和请求)。
注意
你可以详细了解 Kubernetes 资源治理。
资源限制和请求的要求:
- 出于计费目的,核心限制值是必需的。
- 资源请求和限制的其余部分是可选的。
- 核心限制和请求必须是正整数值(如果已指定)。
- 核心请求至少需要 1 个核心(如果已指定)。
- 内存值格式遵循 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
排查创建问题
如果在创建过程中遇到任何问题,请参阅故障排除指南。