Helm部署Pulsar

一、理论介绍

1、简介:

Pulsar 是用于服务器到服务器消息传递的多租户、高性能解决方案。

2、pulsar的主要特点:

  • 云原生架构(计算与存储分离),无缝支持跨集群复制
  • 比kafka更高的吞吐量和低延迟
  • 无缝支持上百万个topics
  • 支持多种消息订阅模式 (exclusive & shared & failover)
  • 通过持久化存储BookKeeper保障消息的传递
  • 轻量级Serverless计算框架Pulsar Functions提供了流式数据处理能力。
  • 提供分层存储能力,释放BookKeeper的空间:将老数据or长期不用的数据放到AWS S3等

3、pulsar架构图:

与其他消息系统不同,Pulsar抽象为两层架构:

  • 无状态服务层:处理消息的Broker组成
  • 有状态存储层:BookKeeper存储节点组成,可以持久化的存储消息

Pulsar Broker:

不存储实际的数据,而是将消息存储在BookKeeper(又名Bookie)中,仅仅拥有Topic/Partitions的代理权。它屏蔽了msg复杂的读写流程,保证了数据一致性和负载均衡。meta信息是存储在zookeeper中,消息存储到BookKeeper中。

二、部署

1、添加helm仓库:

helm repo add apache https://pulsar.apache.org/charts

2、查看版本:

helm search repo apache/pulsar  -l

3、下载特定版本:

helm pull apache/pulsar --version 2.7.13
tar xzvf pulsar-2.7.13.tgz

修改values文件:

vim pulsar/values.yaml

initialize: true    
volumes:
  persistence: true
  local_storage: false
images:
  pulsar_manager:
    repository: apachepulsar/pulsar-manager
    tag: v0.1.0
    pullPolicy: IfNotPresent
    hasCommand: false
zookeeper:
  volumes:
    persistence: true
    data:
      name: data
      size: 20Gi
      local_storage: false
      storageClassName: lowcode-prod
bookkeeper:
  replicaCount: 3
  volumes:
    persistence: true
    journal:
      name: journal
      size: 10Gi
      local_storage: false
      storageClassName: lowcode-prod
broker:
  replicaCount: 3            
proxy:
  replicaCount: 3       
prometheus:
  volumes:
    persistence: true
    data:
      name: data
      size: 10Gi
      local_storage: false
      storageClassName: lowcode-prod    
pulsar_manager:
  admin:
    user: pulsar
    password: pulsar
#备注:pulsar_manager版本使用v0.1.0,v0.2.0需要自定义密码。

grafana/proxy/pulsar_manager中的service去掉type这一行
  service:
    annotations: {}
    type: LoadBalancer   #去掉,不然会增加SLB

4、安装依赖:为pulsar_manager管理员生成密钥(如果不执行这一步,后面不会创建密码的secret)

git clone https://github.com/apache/pulsar-helm-chart
cd pulsar-helm-chart
./scripts/pulsar/prepare_helm_release.sh -n test -k pulsar

5、安装pulsar

helm install pulsar ./pulsar -n test

6、配置ingress并访问:

#备注:pulsar_manager v0.1.0版本的默认用户名密码是:pulsar/plusar

7、添加proxy:

备注:pulsar_manager为:v0.2.0版本,设置密码:

#进入到容器中:
kubectl exec -it pulsar-pulsar-manager-84585476c8-hfn26 -n test sh

#设置密码:
CSRF_TOKEN=$(curl http://localhost:7750/pulsar-manager/csrf-token)
2curl \
3   -H 'X-XSRF-TOKEN: $CSRF_TOKEN' \
4   -H 'Cookie: XSRF-TOKEN=$CSRF_TOKEN;' \
5   -H "Content-Type: application/json" \
6   -X PUT http://localhost:7750/pulsar-manager/users/superuser \
7   -d '{"name": "admin", "password": "apachepulsar", "description": "test", 
8        "email": "username@test.org"}'

#登录时的用户名密码:admin/apachepulsar

【完成】

<think>嗯,用户想了解如何在Kubernetes集群上部署Milvus,对吧?首先,我得回想一下Milvus是什么。Milvus是一个开源的向量数据库,专门处理非结构化数据的嵌入向量,适合AI应用,比如相似性搜索。现在用户可能需要在Kubernetes上部署它,可能是因为他们需要弹性扩展、高可用性或者容器化管理的便利。 那用户的需求可能是什么?他们可能已经有一个Kubernetes集群,或者打算建立一个,然后部署Milvus作为他们的向量数据库。需要考虑到用户可能对Kubernetes有一定的了解,但可能不熟悉Milvus的具体配置步骤。另外,用户可能关心部署的最佳实践、注意事项,或者如何验证部署是否成功。 接下来,我应该考虑不同的部署方式。Milvus在Kubernetes上的部署方法有多种,比如使用Helm Charts,或者通过Milvus Operator。Helm应该是比较常见和简便的方式,适合大部分用户,特别是那些已经熟悉Helm的人。而Operator可能更适合需要自动化管理和更复杂运维的场景。用户可能需要一个步骤详细的指南,所以应该分点说明这两种方法。 然后,要详细说明每个步骤。比如,使用Helm的话,需要添加Milvus的仓库,然后安装。可能需要配置一些参数,比如启用哪些组件(etcd、minio、pulsar等),存储类的设置,资源限制,还有网络配置,比如service的类型。如果是生产环境,还需要考虑高可用配置,比如副本数,节点亲和性,持久化存储等。 另外,用户可能需要验证安装是否成功,比如检查Pod状态,查看日志,或者通过端口转发进行简单的测试。这部分也很重要,因为部署后的验证能帮助用户确认一切正常。 可能用户会遇到的一些问题,比如存储类不匹配,或者资源不足导致Pod无法启动,网络策略导致服务不可访问。这时候,可能需要给出一些排查建议,比如检查PV/PVC的状态,查看事件日志,或者调整资源请求。 还有,用户可能想知道后续的步骤,比如如何升级Milvus版本,如何备份数据,或者如何监控集群状态。这些虽然不是部署的核心步骤,但作为补充信息会很有帮助。 最后,应该总结一下不同部署方式的适用场景,帮助用户根据自己的需求选择合适的方法。比如,Helm适合快速部署和测试,而Operator适合生产环境的自动化管理。 需要确保回答清晰,步骤详细,同时用中文口语化表达,避免技术术语过于生硬。另外,要提醒用户注意生产环境和测试环境配置的区别,确保他们不会在关键应用上使用不安全的默认设置。</think>在 Kubernetes 集群中部署 Milvus(一款开源的向量数据库)可以通过 Helm Chart 或 Operator 实现,以下是核心步骤和注意事项: --- ### **1. 部署前的准备** - **Kubernetes 环境**:确保集群已就绪(如 kubelet、kubectl、网络插件等)。 - **存储类(StorageClass)**:Milvus 依赖 etcd、MinIO/S3 存储元数据和向量数据,需提前配置支持动态卷供应的存储类(如 AWS EBS、NFS 等)。 - **Helm 工具**:若使用 Helm,需安装 Helm 客户端。 --- ### **2. 部署方式选择** #### **方式一:使用 Helm Chart(推荐)** Helm 是 Kubernetes 的包管理工具,Milvus 官方提供 Helm Chart 简化部署。 **步骤:** 1. 添加 Milvus Helm 仓库: ```bash helm repo add milvus https://milvus-io.github.io/milvus-helm/ helm repo update ``` 2. 自定义配置(按需修改 `values.yaml`): ```bash # 下载默认 values.yaml helm show values milvus/milvus > milvus-values.yaml ``` 关键配置项: - **组件开关**:启用/禁用 etcd、MinIO、Pulsar(默认使用内置组件,生产建议替换为独立中间件)。 - **存储类**:设置 `storageClass` 适配你的集群。 - **资源限制**:调整 CPU/内存请求和限制。 - **网络**:Service 类型(如 `LoadBalancer` 或 `NodePort`)。 3. 安装 Milvus: ```bash helm install my-milvus milvus/milvus -f milvus-values.yaml ``` #### **方式二:使用 Milvus Operator(生产推荐)** Operator 提供更高级的生命周期管理(如升级、扩缩容)。 **步骤:** 1. 安装 Milvus Operator: ```bash kubectl apply -f https://github.com/milvus-io/milvus-operator/releases/download/v0.7.0/milvus-operator.yaml ``` 2. 创建 Milvus 自定义资源(CRD): ```yaml # milvus-cluster.yaml apiVersion: milvus.io/v1beta1 kind: Milvus metadata: name: my-milvus spec: components: dataNode: replicas: 2 # 按需调整副本数 dependencies: # 使用外部中间件(生产建议) etcd: endpoints: ["etcd-cluster:2379"] storage: endpoint: "s3://my-bucket" secretRef: s3-secret ``` ```bash kubectl apply -f milvus-cluster.yaml ``` --- ### **3. 验证部署** - **检查 Pod 状态**: ```bash kubectl get pods -l app.kubernetes.io/instance=my-milvus ``` 确保所有 Pod 处于 `Running` 状态。 - **查看服务端点**: ```bash kubectl get svc my-milvus-milvus ``` 若使用 `NodePort` 或 `LoadBalancer`,记录对外 IP 和端口。 - **简单测试**: 通过端口转发访问 Milvus 服务: ```bash kubectl port-forward svc/my-milvus-milvus 19530 ``` 使用 Python 客户端连接: ```python from pymilvus import connections connections.connect(host="localhost", port=19530) print(connections.get_connection_addr()) ``` --- ### **4. 生产环境注意事项** - **中间件替换**:生产环境建议使用独立 etcd、对象存储(如 AWS S3)和消息队列(如 Kafka/Pulsar),而非内置组件。 - **高可用配置**: - 设置多副本(如 `dataNode.replicas: 3`)。 - 配置 Pod 反亲和性(避免节点单点故障)。 - **持久化存储**:确保所有有状态组件(etcd、MinIO)启用持久化卷。 - **监控**:集成 Prometheus + Grafana 监控 Milvus 指标。 --- ### **5. 常见问题** - **存储类不匹配**:若 PVC 处于 `Pending` 状态,检查 StorageClass 配置。 - **资源不足**:调整 `resources.requests/limits` 避免 OOM。 - **网络策略**:确保 Service 可被客户端访问,或通过 Ingress 暴露。 --- 通过以上步骤,你可以在 Kubernetes 上快速部署 Milvus。根据场景选择 Helm(适合快速验证)或 Operator(适合生产运维),并合理调整资源配置和中间件依赖。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值