在 Kubernetes 上通过 helm 部署

本文档描述了如何使用我们提供的 helm chart 来运行 HStreamDB kubernetes。该文档假设读者 有基本的 kubernetes 知识。在本节结束时,你将拥有一个完全运行在 kubernetes 上的 HStreamDB 集群,它已经准备就绪,可以接收读/写,处理数据,等等。

建立你的 Kubernetes 集群

第一步是要有一个正在运行的 kubernetes 集群。你可以使用一个托管的集群(由你的云提 供商提供),一个自我托管的集群或一个本地的 kubernetes 集群,比如 minikube。请确 保 kubectl 指向你计划使用的任何集群。

另外,你需要一个存储类,你可以通过 “kubectl “创建。或者通过你的云服务提供商的网页来创建,如果它有的话。 minikube 默认提供一个名为 standard 的存储类,helm chart 默认使用此存储类。

通过 Helm 部署 HStreamDB

Clone 代码并获取 helm 依赖

1. git clone https://github.com/hstreamdb/hstream.git
2. cd hstream/deploy/chart/hstream/
3. helm dependency build .

通过 Helm 部署 HStreamDB

1. helm install my-hstream .

Helm chart 还提供了 value.yaml 文件,你可以在这个文件中修改你的配置,比如当你希望使用其他的存储类来部署集群时,你可以修改 value.yaml 中的 logdevice.persistence.storageClass 和 zookeeper.persistence.storageClass,并使用 helm install my-hstream -f values.yaml . 来署。

检查集群状态

helm install 命令会部署 zookeeper 集群、logdevice 集群和 hstream 集群,这可能会花费一定的时间,你可以通过 kubectl get pods 来检查集群的状况,在集群部署的过程中,会有一些 Error 和 CrashLoopBackOff 的状态,这些状态会在一定时间后消失,最终你会看到类似如下的内容:

1. NAME                                                 READY   STATUS    RESTARTS      AGE
2. my-hstream-0                                         1/1     Running   3 (16h ago)   16h
3. my-hstream-1                                         1/1     Running   2 (16h ago)   16h
4. my-hstream-2                                         1/1     Running   0             16h
5. my-hstream-logdevice-0                               1/1     Running   3 (16h ago)   16h
6. my-hstream-logdevice-1                               1/1     Running   3 (16h ago)   16h
7. my-hstream-logdevice-2                               1/1     Running   0             16h
8. my-hstream-logdevice-3                               1/1     Running   0             16h
9. my-hstream-logdevice-admin-server-6867fd9494-bk5mf   1/1     Running   3 (16h ago)   16h
10. my-hstream-zookeeper-0                               1/1     Running   0             16h
11. my-hstream-zookeeper-1                               1/1     Running   0             16h
12. my-hstream-zookeeper-2                               1/1     Running   0             16h

你可以通过 hadmin server 命令来检查 HStreamDB 集群的状态。

1. kubectl exec -it hstream-1 -- bash -c "hadmin server status"
2. +---------+---------+------------------+
3. | node_id |  state  |     address      |
4. +---------+---------+------------------+
5. | 100     | Running | 172.17.0.4:6570  |
6. | 101     | Running | 172.17.0.10:6570 |
7. | 102     | Running | 172.17.0.12:6570 |
8. +---------+---------+------------------+

管理存储集群

现在你可以运行 hadmin store 来管理这个集群:

1. kubectl exec -it my-hstream-0 -- bash -c "hadmin store --help"

要检查 store 集群的状态,你可以运行:

1. kubectl exec -it my-hstream-0 -- bash -c "hadmin store --host my-hstream-logdevice-admin-server status"
2. +----+------------------------+----------+-------+--------------+----------+
3. | ID |        NAME            | PACKAGE  | STATE |    UPTIME    | LOCATION |
4. +----+------------------------+----------+-------+--------------+----------+
5. | 0  | my-hstream-logdevice-0 | 99.99.99 | ALIVE | 16 hours ago |          |
6. | 1  | my-hstream-logdevice-1 | 99.99.99 | DEAD  | 16 hours ago |          |
7. | 2  | my-hstream-logdevice-2 | 99.99.99 | DEAD  | 16 hours ago |          |
8. | 3  | my-hstream-logdevice-3 | 99.99.99 | DEAD  | 16 hours ago |          |
9. +----+------------------------+----------+-------+--------------+----------+
10. +---------+-------------+---------------+------------+---------------+
11. |  SEQ.   | DATA HEALTH | STORAGE STATE | SHARD OP.  | HEALTH STATUS |
12. +---------+-------------+---------------+------------+---------------+
13. | ENABLED | HEALTHY(1)  | READ_WRITE(1) | ENABLED(1) | HEALTHY       |
14. | ENABLED | HEALTHY(1)  | READ_WRITE(1) | ENABLED(1) | HEALTHY       |
15. | ENABLED | HEALTHY(1)  | READ_WRITE(1) | ENABLED(1) | HEALTHY       |
16. | ENABLED | HEALTHY(1)  | READ_WRITE(1) | ENABLED(1) | HEALTHY       |
17. +---------+-------------+---------------+------------+---------------+
18. Took 16.727s