部署 GreptimeDB 集群

在部署之前,请确保你已经在 Kubernetes 集群上安装了 GreptimeDB Operator

使用 Helm 进行部署

创建 etcd 集群

首先,执行以下命令来建立一个 etcd 集群以支持 GreptimeDB:

  1. helm upgrade \
  2. --install etcd oci://greptime-registry.cn-hangzhou.cr.aliyuncs.com/charts/etcd \
  3. --set image.registry="greptime-registry.cn-hangzhou.cr.aliyuncs.com" \
  4. --set image.repository="bitnami/etcd" \
  5. --set image.tag="3.5.11" \
  6. --set replicaCount=3 \
  7. --set auth.rbac.create=false \
  8. --set auth.rbac.token.enabled=false \
  9. --create-namespace \
  10. -n etcd-cluster

安装完成后,你可以从安装日志中获取 etcd 集群的 endpoint etcd.etcd-cluster.svc.cluster.local:2379。 该 endpoint 在后续步骤部署 GreptimeDB 集群时需要使用。

创建 GreptimeDB 集群

使用如下命令镜像部署:

  1. helm upgrade \
  2. --install greptimedb oci://greptime-registry.cn-hangzhou.cr.aliyuncs.com/charts/greptimedb-cluster \
  3. --set image.registry=greptime-registry.cn-hangzhou.cr.aliyuncs.com \
  4. --set initializer.registry=greptime-registry.cn-hangzhou.cr.aliyuncs.com \
  5. --set meta.etcdEndpoints=etcd.etcd-cluster.svc.cluster.local:2379 \
  6. --create-namespace \
  7. -n greptimedb-cluster

设置资源

GreptimeDB Helm charts 能够为部署中的每个组件指定资源请求和限制。 以下是如何配置这些设置的示例:

  1. helm upgrade \
  2. --install greptimedb oci://greptime-registry.cn-hangzhou.cr.aliyuncs.com/charts/greptimedb-cluster \
  3. --set image.registry=greptime-registry.cn-hangzhou.cr.aliyuncs.com \
  4. --set initializer.registry=greptime-registry.cn-hangzhou.cr.aliyuncs.com \
  5. --set meta.etcdEndpoints=etcd.etcd-cluster.svc.cluster.local:2379 \
  6. --set meta.podTemplate.main.resources.requests.cpu=<cpu-resource> \
  7. --set meta.podTemplate.main.resources.requests.memory=<mem-resource> \
  8. --set datanode.podTemplate.main.resources.requests.cpu=<cpu-resource> \
  9. --set datanode.podTemplate.main.resources.requests.memory=<mem-resource> \
  10. --set frontend.podTemplate.main.resources.requests.cpu=<cpu-resource> \
  11. --set frontend.podTemplate.main.resources.requests.memory=<mem-resource> \
  12. --create-namespace \
  13. -n greptimedb-cluster

有关通过 Helm 的可配置值的完整列表,请参考 values.

使用 kubectl 进行部署

你还可以使用 kubectl 手动创建 GreptimeDB 集群。 创建一个名为 greptimedb-cluster.yaml 的配置文件,内容如下:

  1. apiVersion: greptime.io/v1alpha1
  2. kind: GreptimeDBCluster
  3. metadata:
  4. name: greptimedb
  5. namespace: greptimedb-cluster
  6. spec:
  7. base:
  8. main:
  9. image: greptime-registry.cn-hangzhou.cr.aliyuncs.com/greptime/greptimedb:latest
  10. frontend:
  11. replicas: 1
  12. meta:
  13. replicas: 1
  14. etcdEndpoints:
  15. - "etcd.etcd-cluster.svc.cluster.local:2379"
  16. datanode:
  17. replicas: 3

使用此配置创建 GreptimeDB 集群:

  1. kubectl apply -f greptimedb-cluster.yaml

连接到集群

安装完成后,你可以使用 kubectl port-forward 转发 GreptimeDB 集群的服务端口:

  1. # 你可以使用 MySQL 或者 PostgreSQL 客户端连接集群,例如:'mysql -h 127.0.0.1 -P 4002'。
  2. # HTTP port: 4000
  3. # gRPC port: 4001
  4. # MySQL port: 4002
  5. # PostgreSQL port: 4003
  6. kubectl port-forward -n greptimedb-cluster svc/greptimedb-frontend 4001:4001 4002:4002 4003:4003 4000:4000 > connections.out &

然后就可以使用 MySQL 客户端来连接到集群