你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

介绍已启用 Azure Arc 的 PostgreSQL 服务器的配置

本文介绍如何显示服务器的配置。 文章预测你可能会问自己的一些问题,并解答问题,以此进行说明。 有时问题可能会有多个有效答案。 本文介绍最常见或最有用的答案。 文章按主题对这些问题进行分组:

  • 从 Kubernetes 的角度看
  • 从已启用 Azure Arc 的数据服务的角度看

注意

作为预览版功能,本文中介绍的技术受制于 Microsoft Azure 预览版补充使用条款

发行说明中提供了最近的更新。

从 Kubernetes 的角度看

部署哪些 Postgres 服务器,它们使用多少个 Pod?

列出 Postgres 类型的 Kubernetes 资源。 运行以下命令:

kubectl get postgresqls -n <namespace>

此命令的输出显示已创建的服务器组的列表。 每个服务器组会显示 Pod 数。 例如:

NAME         STATE   READY-PODS   PRIMARY-ENDPOINT     AGE
postgres01   Ready   1/1          20.101.12.221:5432   12d

此示例显示已创建一个服务器。 它在一个 Pod 上运行。

已启用 Azure Arc 的 PostgreSQL 服务器使用什么 Pod?

运行:

kubectl get pods -n <namespace>

该命令返回 Pod 列表。 根据给这些服务器的命名可以看到服务器所使用的 Pod。 例如:

NAME                 READY   STATUS    RESTARTS   AGE
bootstrapper-4jrtl   1/1     Running   0          12d
control-kz8gh        2/2     Running   0          12d
controldb-0          2/2     Running   0          12d
logsdb-0             3/3     Running   0          12d
logsui-qjkgz         3/3     Running   0          12d
metricsdb-0          2/2     Running   0          12d
metricsdc-4jslw      2/2     Running   0          12d
metricsdc-4tl2g      2/2     Running   0          12d
metricsdc-fkxv2      2/2     Running   0          12d
metricsdc-hs4h5      2/2     Running   0          12d
metricsdc-tvz22      2/2     Running   0          12d
metricsui-7pcch      2/2     Running   0          12d
postgres01-0         3/3     Running   0          2d19h

Pod 的状态是什么?

运行 kubectl get pods -n <namespace> 并查看 STATUS

使用了哪些永久性卷声明(PVC)?

若要了解使用了哪些 PVC 以及哪些 PVC 用于数据和日志,请运行:

kubectl get pvc -n <namespace>

默认情况下,PVC 的名称前缀表示其用途:

  • data-...:是用于数据文件的 PVC
  • logs-...:是用于事务日志/WAL 文件的 PVC

例如:

NAME                                            STATUS   VOLUME              CAPACITY   ACCESS MODES   STORAGECLASS    AGE
data-few7hh0k4npx9phsiobdc3hq-postgres01-0      Bound    local-pv-3c1a8cc5   1938Gi     RWO            local-storage   6d6h
data-few7hh0k4npx9phsiobdc3hq-postgres01-1      Bound    local-pv-8303ab19   1938Gi     RWO            local-storage   6d6h
data-few7hh0k4npx9phsiobdc3hq-postgres01-2      Bound    local-pv-55572fe6   1938Gi     RWO            local-storage   6d6h
...
logs-few7hh0k4npx9phsiobdc3hq-postgres01-0      Bound    local-pv-5e852b76   1938Gi     RWO            local-storage   6d6h
logs-few7hh0k4npx9phsiobdc3hq-postgres01-1      Bound    local-pv-55d309a7   1938Gi     RWO            local-storage   6d6h
logs-few7hh0k4npx9phsiobdc3hq-postgres01-2      Bound    local-pv-5ccd02e6   1938Gi     RWO            local-storage   6d6h
...

服务器在使用多少内存和 vCore?

使用 kubectl 描述 Postgres 资源。 为此,需要提供其种类(Azure Arc 中 Postgres 的 Kubernetes 资源 (CRD) 的名称)和服务器组的名称。

此命令的一般格式为:

kubectl describe <CRD name>/<server name> -n <namespace>

例如:

kubectl describe postgresql/postgres01 -n arc

此命令显示服务器组的配置:

Name:         postgres01
Namespace:    arc
Labels:       <none>
Annotations:  <none>
API Version:  arcdata.microsoft.com/v1beta2
Kind:         PostgreSql
Metadata:
  Creation Timestamp:  2021-10-13T01:09:25Z
  Generation:          29
  Managed Fields:
    API Version:  arcdata.microsoft.com/v1beta2
    Fields Type:  FieldsV1
    fieldsV1:
      f:spec:
        .:
        f:dev:
        f:scheduling:
          .:
          f:default:
            .:
            f:resources:
              .:
              f:limits:
                .:
                f:cpu:
                f:memory:
              f:requests:
                .:
                f:cpu:
                f:memory:
        f:services:
          .:
          f:primary:
            .:
            f:port:
            f:type:
        f:storage:
          .:
          f:data:
            .:
            f:volumes:
          f:logs:
            .:
            f:volumes:
    Manager:      OpenAPI-Generator
    Operation:    Update
    Time:         2021-10-22T22:37:51Z
    API Version:  arcdata.microsoft.com/v1beta2
    Fields Type:  FieldsV1
    fieldsV1:
      f:IsValid:
      f:status:
        .:
        f:lastUpdateTime:
        f:logSearchDashboard:
        f:metricsDashboard:
        f:observedGeneration:
        f:primaryEndpoint:
        f:readyPods:
        f:state:
    Manager:         unknown
    Operation:       Update
    Time:            2021-10-22T22:37:53Z
  Resource Version:  1541521
  UID:               23565e53-2e7a-4cd6-8f80-3a79397e1d7a
Spec:
  Dev:  false
  Scheduling:
    Default:
      Resources:
        Limits:
          Cpu:     2
          Memory:  1Gi
        Requests:
          Cpu:     1
          Memory:  256Mi
  Services:
    Primary:
      Port:  5432
      Type:  LoadBalancer
  Storage:
    Data:
      Volumes:
        Class Name:  managed-premium
        Size:        5Gi
    Logs:
      Volumes:
        Class Name:  managed-premium
        Size:        5Gi
Status:
  Last Update Time:      2021-10-22T22:37:53.000000Z
  Log Search Dashboard:  https://12.235.78.99:5601/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:postgres01'))
  Metrics Dashboard:     https://12.346.578.99:3000/d/postgres-metrics?var-Namespace=arc&var-Name=postgres01
  Observed Generation:   29
  Primary Endpoint:      20.101.12.221:5432
  Ready Pods:            1/1
  State:                 Ready
Events:                  <none>

解释配置信息

我们来了解以上所示 server 说明中的一些具体兴趣点。 它告诉我们哪些有关此服务器的内容?

  • 它是在 2021 年 10 月 13 日创建的:

       Metadata:
       Creation Timestamp:  2021-10-13T01:09:25Z
    
  • 资源配置:在此示例中,保证为它提供 256Mi 内存。 服务器不能使用 1Gi 以上的内存。 保证为它提供一个 vCore,它不能使用两个以上的 vCore。

          Scheduling:
         Default:
           Resources:
              Limits:
                Cpu:     2
                Memory:  1Gi
              Requests:
                Cpu:     1
                Memory:  256Mi
    
  • 服务器的状态是什么? 它是否适用于我的应用程序?

    是的,Pod 已准备就绪

    Ready Pods:                1/1
    

从已启用 Azure Arc 的数据服务的角度看

使用 Az CLI 命令。

部署了哪些 Postgres 服务器?

运行以下命令。

az postgres server-arc list --k8s-namespace <namespace> --use-k8s

此命令列出已部署的服务器。

[
  {
    "name": "postgres01",
    "state": "Ready"
  }
]

在使用多少内存和 vCore?

运行以下任一命令

az postgres server-arc show -n <server name>  --k8s-namespace <namespace> --use-k8s

例如:

az postgres server-arc show -n postgres01 --k8s-namespace arc --use-k8s

以类似于 kubectl 返回的格式和内容返回信息。 使用所选的工具来与系统交互。