本页面简要介绍了 AlloyDB Omni Kubernetes operator,并提供了有关如何使用该 operator 将 AlloyDB Omni 部署到 Kubernetes 集群的说明。本页面假定您基本熟悉 Kubernetes 操作。
如需了解有关将 AlloyDB Omni 安装到标准 Linux 环境的说明,请参阅安装 AlloyDB Omni。
概览
如需将 AlloyDB Omni 部署到 Kubernetes 集群,请安装 AlloyDB Omni operator(一种由 Google 提供的 Kubernetes API 扩展程序)。
您可以通过将声明性清单文件与 kubectl
实用程序配对来配置和控制基于 Kubernetes 的 AlloyDB Omni 数据库集群,就像任何其他基于 Kubernetes 的部署一样。您不使用 AlloyDB Omni CLI,因为它旨在部署到单个 Linux 机器,而不是部署到 Kubernetes 集群。
AlloyDB Omni operator 1.1.0(及更高版本)兼容性
AlloyDB Omni operator 1.1.0 版与 AlloyDB Omni 15.5.3 和 15.5.4 版不兼容。如果您使用的是其中一个版本的 AlloyDB Omni,可能会收到类似以下内容的错误:
Error from server (Forbidden): error when creating "[...]/dbcluster.yaml": admission webhook "vdbcluster.alloydbomni.dbadmin.goog" denied the request: unsupported database version 15.5.3
准备工作
您需要有权访问以下内容:
- Kubernetes 集群,用于运行以下软件:
- Kubernetes 1.21 版或更高版本。
cert-manager
服务。
kubectl
实用程序。helm
软件包管理系统。- Google Cloud CLI。安装 gcloud CLI 后,您必须通过运行
gcloud auth login
对您的 Google Cloud 账号进行身份验证。
Kubernetes 集群中的每个节点都必须具有以下内容:
- 至少两个 x86 或 AMD64 CPU。
- 至少 8GB RAM。
- Linux 内核版本 4.18 或更高版本。
- 已启用对照组 v2 (cgroup v2)。
安装 AlloyDB Omni operator
如需安装 AlloyDB Omni operator,请按以下步骤操作:
定义几个环境变量:
export GCS_BUCKET=alloydb-omni-operator
export HELM_PATH=$(gcloud storage cat gs://$GCS_BUCKET/latest)
export OPERATOR_VERSION="${HELM_PATH%%/*}"
下载 AlloyDB Omni operator:
gcloud storage cp gs://$GCS_BUCKET/$HELM_PATH ./ --recursive
安装 AlloyDB Omni operator:
helm install alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \ --create-namespace \ --namespace alloydb-omni-system \ --atomic \ --timeout 5m
安装成功后,系统会显示以下输出:
NAME: alloydbomni-operator LAST DEPLOYED: CURRENT_TIMESTAMP NAMESPACE: alloydb-omni-system STATUS: deployed REVISION: 1 TEST SUITE: None
通过删除下载的 AlloyDB Omni operator 安装文件进行清理。该文件名为
alloydbomni-operator-VERSION_NUMBER.tgz
,位于当前工作目录中。
配置互联 GDC 存储空间
如需在互联 GDC 上安装 AlloyDB Omni operator,您需要执行额外的步骤来配置存储空间,因为互联 GDC 集群未设置默认存储类别。您必须先设置默认存储类别,然后才能创建 AlloyDB Omni 数据库集群。
如需了解如何将 Symcloud Storage 设为默认存储类别,请参阅将 Symcloud Storage 设为默认存储类别。
如需详细了解如何更改所有其他存储类别的默认值,请参阅更改默认 StorageClass。
Red Hat OpenShift 协调步骤
如果您使用的是 Red Hat OpenShift 4.12 或更高版本,则必须在安装 AlloyDB Omni operator 之后,在 Kubernetes 集群上创建 AlloyDB Omni 数据库集群之前,完成以下步骤。否则,您可以跳过这些步骤。
通过修改
system:controller:statefulset-controller
集群角色,添加更新 AlloyDB Omni 实例终结器的权限,如下所示:kubectl edit clusterrole system:controller:statefulset-controller
在文本编辑器中,将以下内容附加到集群角色的末尾:
- apiGroups: - alloydbomni.internal.dbadmin.goog resources: - instances/finalizers verbs: - update - apiGroups: - alloydbomni.internal.dbadmin.goog resources: - backuprepositories/finalizers verbs: - update
由于 Red Hat OpenShift 已启用 OwnerReferencesPermissionEnforcement,因此 StatefulSet 控制器必须具有额外的权限,才能更新添加到集群角色的实例终结器。如果没有更新实例终结器的权限,StatefulSet 控制器将无法创建数据库永久性卷声明 (PVC),并且数据库 StatefulSet 事件中会显示以下错误消息:
Warning FailedCreate [...] cannot set blockOwnerDeletion if an ownerReference refers to a resource you can't set finalizers on
将
anyuid
安全上下文限制条件添加到 Red Hat OpenShift 项目中的default
服务账号,如下所示:oc adm policy add-scc-to-user anyuid system:serviceaccount:DB_CLUSTER_NAMESPACE:default
您必须允许
default
服务账号使用anyuid
安全上下文限制条件,因为在数据库 Pod 中,init 容器会以 root 身份运行,而其他容器会使用特定的用户 ID 运行。如果没有使用anyuid
的权限,StatefulSet 控制器将无法创建数据库 PVC,并且在数据库 StatefulSet 事件中会发现以下错误消息:Warning FailedCreate [...] unable to validate against any security context constraint
创建数据库集群
AlloyDB Omni数据库集群包含运行 AlloyDB Omni 服务器所需的所有存储和计算资源,包括主服务器、所有副本以及您的所有数据。
在 Kubernetes 集群上安装 AlloyDB Omni operator 后,您可以通过应用类似以下内容的清单,在 Kubernetes 集群上创建 AlloyDB Omni 数据库集群:
apiVersion: v1
kind: Secret
metadata:
name: db-pw-DB_CLUSTER_NAME
namespace: DB_CLUSTER_NAMESPACE
type: Opaque
data:
DB_CLUSTER_NAME: "ENCODED_PASSWORD"
---
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: DB_CLUSTER_NAME
namespace: DB_CLUSTER_NAMESPACE
spec:
databaseVersion: "16.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
。DB_CLUSTER_NAMESPACE
(可选):要在其中创建数据库集群的命名空间,例如my-db-cluster-namespace
。ENCODED_PASSWORD
:默认postgres
用户角色的数据库登录密码(以 base64 字符串编码),例如ChangeMe123
的Q2hhbmdlTWUxMjM=
。CPU_COUNT
:此数据库集群中每个数据库实例可用的 CPU 数量。MEMORY_SIZE
:此数据库集群的每个数据库实例的内存量。我们建议将此值设置为每个 CPU 8 千兆字节。例如,如果您在此清单中较早之前将cpu
设置为2
,则建议将memory
设置为16Gi
。DISK_SIZE
:每个数据库实例的磁盘大小,例如10Gi
。
应用此清单后,您的 Kubernetes 集群将包含具有指定内存、CPU 和存储配置的 AlloyDB Omni 数据库集群。如需与新数据库集群建立测试连接,请参阅使用预安装的 psql
进行连接。
如需详细了解 Kubernetes 清单以及如何进行应用,请参阅管理资源。