跳到主要内容

安装 KubeBlocks

使用 Playground 创建一个新的 Kubernetes 集群并安装 KubeBlocks,是快速上手的一种方法。然而,在实际生产环境中,情况会复杂得多,应用程序在不同的命名空间中运行,还存在资源或权限限制。本文档将介绍如何在现有的 Kubernetes 集群上部署 KubeBlocks。

KubeBlocks 是 Kubernetes 原生 operator,可通过 Helm、 kubectl 应用 YAML 文件或者 kbcli 安装 KubeBlocks。

如果您想要在本地环境试用 KubeBlocks,可通过 Playground 试用,或者先在本地创建 Kubernetes 测试集群,然后按照本文操作步骤安装 KubeBlocks。

备注
  • 请确保您安装和卸载 KubeBlocks 使用的方式保持一致,例如,如果您使用 Helm 安装 KubeBlocks,卸载时也需使用 Helm。
  • 请确保您已安装 kubectlHelmkbcli
  • 请确保您已安装 Snapshot Controller。如果尚未安装,请按照 安装 Snapshot Controller 部分中的步骤安装。

环境准备

准备一个可访问的 Kubernetes 集群,版本要求 1.22 及以上。该集群应满足如下要求。

资源要求
控制面建议创建 1 个具有 4 核 CPU、4 GB 内存和 50 GB 存储空间的节点。
数据面 MySQL 建议至少创建 3 个具有 2 核 CPU、4 GB 内存和 50 GB 存储空间的节点。
PostgreSQL 建议至少创建 2 个具有 2 核 CPU、4 GB 内存和 50 GB 存储空间的节点。
Redis 建议至少创建 2 个具有 2 核 CPU、4 GB 内存和 50 GB 存储空间的节点。
MongoDB 建议至少创建 3 个具有 2 核 CPU、4 GB 内存和 50 GB 存储空间的节点。

安装 Snapshot Controller

SnapshotController 是一个 Kubernetes 组件,用于管理 CSI 卷快照,可让用户创建、恢复和删除持久卷 (PV) 的快照。KubeBlocks DataProtection 控制器会使用 Snapshot Controller 来为数据库创建快照备份。

如果您的 Kubernetes 集群没有以下 CRD,说明您可能没有部署 Snapshot Controller。

kubectl get crd volumesnapshotclasses.snapshot.storage.k8s.io
kubectl get crd volumesnapshots.snapshot.storage.k8s.io
kubectl get crd volumesnapshotcontents.snapshot.storage.k8s.io
备注

如果您确定不需要使用快照备份功能, 可以只安装SnapshotController CRD, 跳过后续步骤。

# v8.2.0 is the latest version of the external-snapshotter, you can replace it with the version you need.
kubectl create -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v8.2.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml
kubectl create -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v8.2.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml
kubectl create -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v8.2.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml

第 1 步:部署 Snapshot Controller

可以通过 Helm 或者 kubectl 安装 Snapshot Controller。以下演示如何使用 Helm 安装:

helm repo add piraeus-charts https://piraeus.io/helm-charts/
helm repo update
# Update the namespace to an appropriate value for your environment (e.g. kb-system)
helm install snapshot-controller piraeus-charts/snapshot-controller -n kb-system --create-namespace

如需更多信息,请参阅 Snapshot Controller Configuration

第 2 步:验证 Snapshot Controller 是否安装成功

检查 snapshot-controller Pod 是否正在运行:

kubectl get pods -n kb-system | grep snapshot-controller
Output
snapshot-controller-xxxx-yyyy   1/1   Running   0   30s

如果该 Pod 处于 CrashLoopBackOff 状态,请查看日志:

kubectl logs -n kb-system deployment/snapshot-controller

安装KubeBlocks

按照以下步骤使用 Helm 安装 KubeBlocks:

  1. 获取 KubeBlocks 版本:

    • 选项 A - 获取最新稳定版本(例如 v0.9.2):
    curl -s "https://api.github.com/repos/apecloud/kubeblocks/releases?per_page=100&page=1" | jq -r '.[] | select(.prerelease == false) | .tag_name' | sort -V -r | head -n 1
    • 选项 B - 查看所有可用版本(包括 alpha 和 beta 版本):
      curl -s "https://api.github.com/repos/apecloud/kubeblocks/releases?per_page=100&page=1" | jq -r '.[].tag_name' | sort -V -r
  2. 使用选择的版本创建所需的 CRDs:

    # 将 <VERSION> 替换为您选择的版本
    kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/<VERSION>/kubeblocks_crds.yaml

    # 示例:如果版本是 v0.9.2
    kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/v0.9.2/kubeblocks_crds.yaml
  3. 添加 KubeBlocks 的 Helm 仓库:

    helm repo add kubeblocks https://apecloud.github.io/helm-charts
    helm repo update
  4. 安装 KubeBlocks:

    helm install kubeblocks kubeblocks/kubeblocks --namespace kb-system --create-namespace

    如果您想要在安装 KubeBlocks 添加自定义容忍度,可使用以下命令:

    helm install kubeblocks kubeblocks/kubeblocks --namespace kb-system --create-namespace \
    --set-json 'tolerations=[ { "key": "control-plane-taint", "operator": "Equal", "effect": "NoSchedule", "value": "true" } ]' \
    --set-json 'dataPlane.tolerations=[{ "key": "data-plane-taint", "operator": "Equal", "effect": "NoSchedule", "value": "true" }]'

    如果您想要安装指定版本的 KubeBlocks,可执行如下步骤:

    1. KubeBlocks 发布列表 中查看可用版本。

    2. 使用 --version 指定版本,并执行以下命令:

      helm install kubeblocks kubeblocks/kubeblocks --namespace kb-system --create-namespace --version=<VERSION>
    备注

    如果不指定版本,默认安装最新版本。

验证 KubeBlocks 安装

执行以下命令,检查 KubeBlocks 是否已成功安装:

kubectl -n kb-system get pods

结果

如果工作负载都显示已处于 Running 状态,则表明已成功安装 KubeBlocks。

NAME                                             READY   STATUS    RESTARTS       AGE
alertmanager-webhook-adaptor-8dfc4878d-svzrc 2/2 Running 0 3m56s
grafana-77dfd6959-4gnhp 1/1 Running 0 3m56s
kb-addon-snapshot-controller-546f84b78d-8rjs4 1/1 Running 0 3m56s
kubeblocks-7cf7745685-ddlwk 1/1 Running 0 4m39s
kubeblocks-dataprotection-95fbc79cc-b544l 1/1 Running 0 4m39s
prometheus-alertmanager-5c9fc88996-qltrk 2/2 Running 0 3m56s
prometheus-kube-state-metrics-5dbbf757f5-db9v6 1/1 Running 0 3m56s
prometheus-node-exporter-r6kvl 1/1 Running 0 3m56s
prometheus-pushgateway-8555888c7d-xkgfc 1/1 Running 0 3m56s
prometheus-server-5759b94fc8-686xp 2/2 Running 0 3m56s