使用容器编排器安装 AlloyDB Omni

选择文档版本:

本页面简要介绍了 AlloyDB Omni Kubernetes operator,并提供了有关如何使用该 operator 将 AlloyDB Omni 部署到 Kubernetes 集群的说明。本页面假定您基本熟悉 Kubernetes 操作。

如需了解有关将 AlloyDB Omni 安装到标准 Linux 环境的说明,请参阅安装 AlloyDB Omni

概览

如需将 AlloyDB Omni 部署到 Kubernetes 集群,请安装 AlloyDB Omni Kubernetes operator(一种由 Google 提供的 Kubernetes API 扩展程序)。

您可以通过将声明性清单文件与 kubectl 实用程序配对来配置和控制基于 Kubernetes 的 AlloyDB Omni 数据库集群,就像任何其他基于 Kubernetes 的部署一样。您不会使用 AlloyDB Omni CLI,因为它旨在用于部署到单个 Linux 机器,而不是部署到 Kubernetes 集群。

基础映像

从 1.5.0 版开始,AlloyDB Omni 操作器 Kubernetes 映像基于 Red Hat 的通用基础映像 (UBI) 9 构建。此转换可提高部署的安全性、一致性和合规性。

SHA 摘要映像引用

为防止供应链攻击并满足 OpenShift 认证要求,AlloyDB Omni 操作器对所有容器映像引用使用 SHA-256 摘要,而不是版本标记。

  • 自动升级:AlloyDB Omni 操作器使用内部 ImageCatalog 管理这些摘要,并确保在升级失败期间可靠地回滚数据平面。

  • 启用:虽然 OpenShift 认证软件包默认启用此功能,但 OLM 或 Helm 软件包的用户可以通过将 ENABLE_DIGEST_IMAGE_REFS 环境变量设置为 true,手动启用摘要引用,方法是使用 OLM 的订阅配置或 Helm 图表中的 enableDigestImageRefs 值。

准备工作

在通过 AlloyDB Omni 操作器将 AlloyDB Omni 安装到 Kubernetes 集群之前,请先确保您满足以下要求。

选择下载或安装选项

在通用 Kubernetes 集群上管理工作负载时,您可以使用 Helm 或 OLM。Helm 是一种通用软件包管理系统,它使用 Helm 图表在所有 Kubernetes 变体中安装任何工作负载(包括操作器)。OLM 是 OpenShift 平台上的标准首选选项,它使用专用 OLM 软件包管理操作器生命周期。

根据您的环境和工具,选择以下部署方法之一:

媒体 下载位置及安装指南 部署目标
AlloyDB Omni 操作器(使用 Helm 图表) 在 Kubernetes 上安装 AlloyDB Omni 自备 Kubernetes 容器环境 - 例如, 本地、公有云、GKE、Amazon EKS 和 Azure AKS。

提示: 如果您的 CD(持续交付)工具与 Helm 集成,请使用此选项。
AlloyDB Omni 操作器(使用 OLM 软件包) OperatorHub.io 自备 Kubernetes 容器环境 - 例如, 本地、公有云、Google Kubernetes Engine、Amazon EKS 和 Azure AKS。

如需使用 OLM 软件包,请先在 Kubernetes 集群上安装 OLM,然后再安装操作器。 如需了解详情,请参阅 olm.operatorframework.io

提示: 如果您的 CD(持续交付)工具已使用 OLM,请选择此选项。
OpenShift 操作器(使用 OLM 软件包) Openshift Container Platform Web 控制台 OpenShift 环境

OpenShift 是 Kubernetes 的一种变体,它使用 OLM 作为打包和部署操作器的标准内置方法 。

验证访问权限

验证您有权访问以下资源:

满足硬件和软件要求

Kubernetes 集群中的每个节点都必须具有以下内容:

  • 至少两个 x86 或 AMD64 CPU。
  • 至少 8 GB RAM。
  • Linux 内核 4.18 版或更高版本。
  • 启用了对照组 (cgroup) v2。

安装 AlloyDB Omni 操作器

如果您想在生产 环境中部署 AlloyDB Omni,请参阅 在生产环境中运行 AlloyDB Omni

您可以使用不同的方法(包括 Helm 和 Operator Lifecycle Manager [OLM])安装 AlloyDB Omni 操作器。

Helm

如需安装 AlloyDB Omni 操作器,请按照以下步骤操作:

  1. 从 OCI 注册表中安装 AlloyDB Omni 操作器:
    helm install alloydbomni-operator oci://gcr.io/alloydb-omni/alloydbomni-operator \
    --version 1.8.0 \
    --create-namespace \
    --namespace alloydb-omni-system \
    $(helm install --help | grep -q -- '--rollback-on-failure' && echo '--rollback-on-failure' || echo '--atomic') \
    --timeout 5m
    

    安装成功后,系统会显示以下输出:

    NAME: alloydbomni-operator
    LAST DEPLOYED: CURRENT_TIMESTAMP
    NAMESPACE: alloydb-omni-system
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    

OLM

如需使用 Operator Lifecycle Manager 安装 AlloyDB Omni 操作器,请按以下步骤操作:

  1. 前往 AlloyDB Omni 操作器 页面。

  2. 点击 Install (安装)。如果您尚未执行此操作,请按照说明仅安装 OLM 操作器 和 OperatorHub.io 目录。

  3. 创建 alloydb-omni-system 命名空间(如果该命名空间尚不存在)。

    kubectl create ns alloydb-omni-system
    
  4. 设置 OLM OperatorGroup,以确保操作器具有集群级作用域。

    kubectl apply -f - <<EOF
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: operator-sdk-og
      namespace: alloydb-omni-system
    spec:
      upgradeStrategy: Default
    EOF
    
  5. 使用 OLM 订阅资源安装操作器。

    kubectl apply -f - <<EOF
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: my-alloydb-omni-operator
      namespace: alloydb-omni-system
    spec:
      channel: stable
      name: alloydb-omni-operator
      source: operatorhubio-catalog
      sourceNamespace: olm
    EOF
    
  6. 安装默认证书 ClusterIssuer。如果您使用 自定义证书签发者,则此步骤是可选的。

    kubectl apply -f - <<EOF
    apiVersion: cert-manager.io/v1
    kind: ClusterIssuer
    metadata:
      name: alloydbomni-selfsigned-cluster-issuer
    spec:
      selfSigned: {}
    EOF
    

OLM

如需使用 OLM 在 Red Hat OpenShift 环境中安装 AlloyDB Omni 操作器,请按以下步骤操作:

  1. 登录 Red Hat OpenShift Web 控制台
  2. 对于离线或断开连接的用户,您必须使用保留 SHA 摘要的工具(例如 oc image mirror)手动将所需映像镜像到您的私有注册表。您必须配置 ImageDigestMirrorSet ,以将映像拉取从公共 gcr.io 代码库重定向到 您的私有注册表。这样可确保 AlloyDB Omni 操作器 可以使用其不可变的 SHA256 摘要拉取所需映像。
  3. 在 OpenShift Web 控制台中,依次前往 Operators > OperatorHubAlloyDB Omni 操作器 列在已认证社区 目录中。

  4. 在 AlloyDB Omni 操作器窗格中,点击安装

  5. 运行以下命令安装默认证书 ClusterIssuer by 。如果您使用 自定义证书签发者,则此步骤是可选的。

    kubectl apply -f - <<EOF
    apiVersion: cert-manager.io/v1
    kind: ClusterIssuer
    metadata:
      name: alloydbomni-selfsigned-cluster-issuer
    spec:
      selfSigned: {}
    EOF
    

配置互联 GDC 存储空间

如需在 GDC 联网配置 上安装 AlloyDB Omni 操作器, 您需要执行额外的步骤来配置存储空间,因为 GDC 联网配置集群未设置默认存储类别。您必须先设置默认存储类别,然后才能创建 AlloyDB Omni 数据库集群。

如需了解如何将 Symcloud Storage 设置为默认存储类别,请参阅将 Symcloud Storage 设置为默认存储类别

如需详细了解如何更改所有其他存储类别的默认值,请参阅更改默认 StorageClass

创建数据库集群

AlloyDB Omni 数据库集群包含运行 AlloyDB Omni 服务器所需的所有存储和计算资源,包括主服务器、所有副本以及您的所有数据。

在 Kubernetes 集群上安装 AlloyDB Omni 操作器后,您可以通过应用类似以下内容的清单,在 Kubernetes 集群上创建 AlloyDB Omni 数据库集群:

apiVersion: v1
kind: Secret
metadata:
  name: db-pw-DB_CLUSTER_NAME
type: Opaque
data:
  DB_CLUSTER_NAME: "ENCODED_PASSWORD"
---
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: DB_CLUSTER_NAME
spec:
  databaseVersion: "18.3.0"
  primarySpec:
    adminUser:
      passwordRef:
        name: db-pw-DB_CLUSTER_NAME
    resources:
      cpu: CPU_COUNT
      memory: MEMORY_SIZE
      disks:
      - name: DataDisk
        size: DISK_SIZE

替换以下内容:

  • DB_CLUSTER_NAME:此数据库集群的名称,例如 my-db-cluster

  • ENCODED_PASSWORD:默认 postgres 用户角色的数据库登录密码(以 base64 字符串编码),例如 Q2hhbmdlTWUxMjM= 表示 ChangeMe123

  • CPU_COUNT:此数据库集群中的每个数据库实例可用的 CPU 数量。

  • MEMORY_SIZE:此数据库集群的每个数据库实例的内存量。建议将此值设置为每个 CPU 8 千兆字节。例如,如果您之前在此清单中将 cpu 设置为 2,则建议将 memory 设置为 16Gi

  • DISK_SIZE:每个数据库实例的磁盘大小,例如 10Gi

应用此清单后,您的 Kubernetes 集群将包含具有指定内存、CPU 和存储配置的 AlloyDB Omni 数据库集群。如需与新 数据库集群建立测试连接,请参阅使用预安装的 psql

如需详细了解 Kubernetes 清单以及如何进行应用,请参阅 管理资源

扩缩数据库集群

如需扩缩数据库集群的计算资源,请更新 db-cluster.yaml 清单中的 cpumemory 值,然后应用更改。伸缩流程取决于您选择常规伸缩操作还是低停机时间伸缩操作。

常规伸缩

当您更新伸缩规范并应用清单而不进行任何进一步配置时,数据库 Pod 会立即重启。这会导致主实例和备用实例在新的资源分配生效期间出现短暂的停机时间。

低停机时间伸缩

对于至少有一个备用的高可用性 (HA) 集群,您可以使用低停机时间维护 (LDTM) 准备和切换策略,在伸缩期间最大限度地减少停机时间。此策略首先将伸缩更改应用于备用实例,执行快速切换,然后将更改应用于原始主实例。您可以使用 LDTM 策略进行纵向扩容或缩容。

如需启用和监控低停机时间伸缩,请按以下步骤操作:

  1. 启用低停机时间伸缩。向数据库集群添加 enableLDTM 注解:

    kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME dbcluster.dbadmin.goog/enableLDTM=true
    

    DB_CLUSTER_NAME 替换为您的数据库集群的名称。

  2. 应用更新后的伸缩规范。更新清单中 primarySpec.resources 下的 cpumemory 值,然后应用更改:

    kubectl apply -f db-cluster.yaml
    
  3. 监控伸缩流程。检查 LDTMScalingInProgress 状态条件以监控操作:

    kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -o yaml | yq '.status.conditions[] | select(.type == "LDTMScalingInProgress")'
    

    DB_CLUSTER_NAME 替换为您的数据库集群的名称。

    在流程进行期间,状态为 true。伸缩完成后,相应条件的状态会更改为 false

限制

  • LDTM 伸缩仅适用于至少有一个备用的 HA 集群。
  • 您无法同时执行两个 LDTM 操作。例如,您可以使用 LDTM 扩缩数据库集群或执行次要版本升级,但不能同时执行这两项操作。
  • LDTM 伸缩操作失败后,您必须手动回滚。

后续步骤