基于k8s环境部署pulsar集群

#作者:Unstopabler

简介

Apache Pulsar 是一个分布式、多租户、高性能的消息中间件系统,广泛应用于云原生架构中。它以其灵活的架构设计和强大的功能(如消息持久化、负载均衡、水平扩展等)脱颖而出,成为 Kafka 的强有力替代方案之一。

在 Kubernetes(简称 K8s)环境中部署 Apache Pulsar 集群,可以充分发挥其高可用性和弹性伸缩的优势。然而,由于 Pulsar 本身由多个组件构成(如 BookKeeper、ZooKeeper 和 Broker),并且需要依赖外部服务协调与存储,因此在 Kubernetes 上进行完整部署是一项复杂任务。

本文将详细介绍如何在 Kubernetes 环境中一步步搭建一个生产级别的 Pulsar 集群。从前期准备、基础组件安装,到 Helm Chart 使用、,再到最终的验证测试,我们将手把手带你完成整个部署流程。无论你是刚接触 Pulsar 的新手,还是有一定 Kubernetes 经验的开发者,都能从中获得实用的知识和经验。

开始这段深入浅出的 Pulsar 部署

一:环境准备

在部署 Apache Pulsar 集群之前,我们需要准备好相关的软硬件环境和依赖组件。以下是我们本次部署所使用的环境及软件版本:
在这里插入图片描述
说明:
使用 Pulsar Helm Chart 3.3.0 可以大大简化部署流程。它集成了完整的 Pulsar 架构组件,包括:

ZooKeeper:用于元数据管理和协调;
BookKeeper:用于消息持久化存储;
Broker:负责接收、转发和处理消息;
Functions / Dashboard / Toolset:可选模块,用于扩展功能与监控。

pulsar-all 镜像包
我们同时下载了 Apache Pulsar 3.0.2 的完整镜像包,用于后续的功能验证、命令行操作和调试。例如,我们可以使用 pulsar-admin 工具来管理租户、命名空间、主题等资源。

在正式部署前,请确保以下准备工作已完成:
所有节点操作系统已安装并配置完毕
Kubernetes 集群已搭建完成,并能正常运行 Pod
NFS 存储服务已配置好,并可在各节点挂载访问
Helm 已安装并配置好仓库
Pulsar Helm Chart 已下载或添加至本地仓库
网络策略与防火墙规则已放行所需端口

二:确认pulsar安装版本

在正式开始部署之前,我们需要确认当前可用的 Pulsar Helm Chart 版本,并确保所使用的版本与我们的目标一致(如 3.3.0)helm repo add apache https://pulsar.apache.org/charts

对应版本

root@k8s-master1:[/root]helm search repo pulsar -l
NAME            CHART VERSION   APP VERSION     DESCRIPTION
apache/pulsar   3.6.0           3.0.7           Apache Pulsar Helm chart for Kubernetes
apache/pulsar   3.5.0           3.0.6           Apache Pulsar Helm chart for Kubernetes
apache/pulsar   3.4.1           3.0.5           Apache Pulsar Helm chart for Kubernetes
apache/pulsar   3.4.0           3.0.4           Apache Pulsar Helm chart for Kubernetes
apache/pulsar   3.3.1           3.0.3           Apache Pulsar Helm chart for Kubernetes
apache/pulsar   3.3.0           3.0.2           Apache Pulsar Helm chart for Kubernetes
apache/pulsar   3.2.0           3.0.2           Apache Pulsar Helm chart for Kubernetes
apache/pulsar   3.1.0           3.0.2           Apache Pulsar Helm chart for Kubernetes
apache/pulsar   3.0.0           2.10.2          Apache Pulsar Helm chart for Kubernetes

三:下载pulsar

添加 Pulsar Helm 仓库
首先,我们需要将 Apache Pulsar 的官方 Helm 仓库添加到本地环境中:
helm repo add apache https://pulsar.apache.org/charts
再将pulsar git到本地:
git clone -b pulsar-3.3.0 https://github.com/apache/pulsar-helm-chart.git
registry.cn-hangzhou.aliyuncs.com/xxx/pulsar-all:3.0.2

四:pulsar的安装部署

1. 创建JWT认证所需的secret

为了增强 Pulsar 集群的安全性,在生产环境中建议启用身份认证机制。Apache Pulsar 支持多种认证方式,其中 JWT(JSON Web Token)是一种轻量级且广泛使用的认证方案。

在 Kubernetes 环境下部署 Pulsar 时,我们可以通过 Helm Chart 自动或手动创建用于 JWT 认证的密钥对(即私钥与公钥),并将其打包为 Kubernetes Secret,供集群中的各个组件使用。

部署的 Pulsar 集群需要在安全上开通 JWT 认证。非生产环境也可以不开通,以下的1111.yaml为生产生成的JWT的认证内容。

[root@k8s-master pulsar-helm-chart]# cat 1111.yaml
#generate the token keys for the pulsar cluster
---
#The private key and public key are generated to /tmp/tmp.sarUlYjZcW and /tmp/tmp.agPBgiWsPP successfully.
apiVersion: v1
data:
  PRIVATEKEY: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDWkfyw5b/IO7+5mz6gs6jypBe0nf2JfLElHYGtNxutjEFqKQBCYQht90ES6mj6Ap6M6eTCbfy7kDW0cBKjfAx6HATtJa4FPy0Y7V/vO9dipTnTWLyGUHoMRmyjLugPjLcOlHADzIOwu7sXtEVtKWjhNNbtm3vui6mk0ieKQO+23S36fJEKNvBfuW9yjobnnHUBvu/Rb+GGtP0JolH1OZALZkGamf6lMaS06O1MCzs0K1Xqr4JpDZ2qjonEPfrJUqnjad4LWNsdtzzE+NU6+dTq2NP6e99vQuFoozmqfQvsLaRX1w/F9mUfVoBDOjjP23zUbAk9zbbdOfqTZNR0xVP/AgMBAAECggEABBld3nNFKqoZi44vsBo+jAQef9DU2x+Kss7Rf2GiIbqgNUr7OkloQ9GJaLcZsk0CgmalfCFlxp+Gpx/M+1qPUnXekjk6DdebIPLH9mYKQ1QsuqDjWR2Id1uRD70BqepiROEJEsmBaorrlBRZjzBPVJ4RzRA/WdtJLmDlaHq9GZ0vHT8HcU++Z0cgZmdUVc2Sc86zrMmEPtOsaPJPIRIQlrMi5i2/q/z717vvvMIDqY8lh7kaxCo1X0poWjzcBq/ZF8F1x0rCLrYMVe5R5750cdS4bxpKMxrASX81+wbZFxLMbz6lkmTWsJb5cwgXIy2+tXjF8NRrGeYRKcgWGwMVoQKBgQDaCKLawZidx0vIeUh50mgjsL5vWNcQCjXmomD/HHRzZ/9DXMUOEUwIgYd84cT6zx42s7ZlCRKU+qKZYDmp2y5Ty2SZQ9D2RtVPCtIPjynLjy24veaqNU6fjxIlan6NgcapU3kUTHaNnt9yEYtnQodvjWaSeUGtnHTQ6S2LACOiVQKBgQD77vVhJ0BSy6SETzUiHc+qLzt+8JVV6hxHWZzpdzJeuy1p7y6HiE/4ecOxtFgow1ownx/dUeCMD6jx5P7yJcjHCzrvkJ9PrsI5y5og2lvbf2rZBguJLyCMOi44mPmQBDBITIeHHwnYBxOsdG9lvWdLmOqX+TpC2Xobyq0WHN+5AwKBgQC2yRKuTirB6zhvIq5N4sUHVr7v3gy+F7FEXtDuTk6aCY+IS5evyXRylRSe7y8SDN0JgvPgFBEN8GisKG1vJp7aBOObUa03Kf7duvaLsLubObdc72cXPoVhYrIVyAe8XhXMEnypNckVxSESIf86XB3quSJKnXkgMNAF69YQd9dn2QKBgAGFtB3eKtlVOa1C/UMzgum4V1exBHX8cCdON1CB0+AWqXOWamWPQUxzD+em+1FjvMvGal7f+8dc4Nx1UcUMzWXGf5iq+wt0NuA6hrfkGeH9pxugmbk+e6fdQiI9amSgYdpN/BOo8FpJ0KieG3414sXmKqS4cM2umrpIQzt6+S8ZAoGAEU65PN7mr8/mWL/ZbROnB2U2Sr5vb4CsvGTL0Xxqi46UZms43OIR5fjq1vz/3F3Qva0r2jkbdeb4t8UK7VfgZAH4mr1lNxPruk7s7pyN7kQnyFxHJtmqEZnttGt2cQvkK/CEzmNqxY5PWY9pqotrZqQHcQIHvn59mK92imJYGjQ=
  PUBLICKEY: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1pH8sOW/yDu/uZs+oLOo8qQXtJ39iXyxJR2BrTcbrYxBaikAQmEIbfdBEupo+gKejOnkwm38u5A1tHASo3wMehwE7SWuBT8tGO1f7zvXYqU501i8hlB6DEZsoy7oD4y3DpRwA8yDsLu7F7RFbSlo4TTW7Zt77ouppNInikDvtt0t+nyRCjbwX7lvco6G55x1Ab7v0W/hhrT9CaJR9TmQC2ZBmpn+pTGktOjtTAs7NCtV6q+CaQ2dqo6JxD36yVKp42neC1jbHbc8xPjVOvnU6tjT+nvfb0LhaKM5qn0L7C2kV9cPxfZlH1aAQzo4z9t81GwJPc223Tn6k2TUdMVT/wIDAQAB
kind: Secret
metadata:
  creationTimestamp: null
  name: pulsar-token-asymmetric-key
  namespace: pulsar
  #generate the tokens for the super-users: proxy-admin,broker-admin,admin
  #generate the token for proxy-admin
---
#pulsar-token-asymmetric-key
apiVersion: v1
data:
  TOKEN: ZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnpkV0lpT2lKd2NtOTRlUzFoWkcxcGJpSjkuRVBVNk85a29mcUZOWEpZLVltUnpvNndQZUFhbVNVeF9NMmJKWE53MmxjcG0wdzFGV3NSZ0JnallqVmxaU190WEdwbXJiZk9BVVVWejUtYWZUVmVHblhCbGc4QUZuNWVCVXEzbzN0QVZwZ3A3VmQtU3N6Z2tEZUZOTVN3cFUxeVZveGVkUTlqdll1QU1QZmZGcDU4Uk5CLUl6dXdOUDhmTkJfcS1MelphdVZEUzh1NkdyaXg5R0pkamF6eUxYOFNDWnozeThRYk5ZLXJiQXE1QlhiWlFHck1ZX3pLMy1CSlBXZm43MzNnWVE2ZTRiYjVXdzNVRkx0bnZ1enFCbHJNa3Z2MVFla2h6T1JiSUlMMUpjRUwtekhYckExN2NIQ0NtQmpXSy05MEhvMmVIUTZIdjZoVmtzc2dZS1VTQkR5QldjQTY4SnpsMnRRME9pRTI0djNQdENn
  TYPE: YXN5bW1ldHJpYw==
kind: Secret
metadata:
  creationTimestamp: null
  name: pulsar-token-proxy-admin
  namespace: pulsar
  #generate the token for broker-admin
---
#pulsar-token-asymmetric-key
apiVersion: v1
data:
  TOKEN: ZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnpkV0lpT2lKaWNtOXJaWEl0WVdSdGFXNGlmUS5WamJUSVkzam9RZmt2WHJKNDVmaXE1R2dtb2QtdVpGaFVCNFlTVTkydlRHVUozYUhZUFJVa0xISFhlYklCNTkyV0NhdUVhQ3FfOE5kTDFnU3NtRTI3NXhWZ010SVRYNUg0dUZiWkpxcllBV2pfTHVPM3BseWlvXzhUUktJQUJkZUx0RFlkdzduSE10c21LRjdkOUVUWDdMU2VwdUc0cWlLdDI2UHdlOFJWTUx2UkpzeUVOMU9GWkVPT19BZmUyMnlmeDFRR3d0eGVPM21LOXZFOTRtR3hybEoxWEVhaWxvdlJQbGJiOUQ2eUNqMFFsWWFBcG5oc3ctRzFhaTZVcmtYY2VSaVRLZG9jSElZRGNMc0tqMGFRUExPNW5uMEtTOGUxelNzeG5fYWFXQk1BazRSYWdzS0MwOEc0THZ5UGpJYnktOHRaQ0kyODhyQk5xUkxDN1dGV3c=
  TYPE: YXN5bW1ldHJpYw==
kind: Secret
metadata:
  creationTimestamp: null
  name: pulsar-token-broker-admin
  namespace: pulsar
  #generate the token for admin
---
#pulsar-token-asymmetric-key
apiVersion: v1
data:
  TOKEN: ZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnpkV0lpT2lKaFpHMXBiaUo5LnJ2NF93Q3BacVRUS05tdFpGUnVkWjVBQjhjZkxxU2NhMEtLSW91djdDdVJEOWVDdkhaaS1yM3oxSjc0VG1UV0RvSzQxaUdSOFlHR2JnMVZSaDRnclFxZThxSFFUZTZ4RDJqVnJRTy12SkVvd3RCWnNHemtsSHJ3a1BPd2FTN2toTzVaT0Y2LUpNbDgxNDYycmtnTExiZEg4Y0UxQTFqWEVUTFpwNTZYQ0kycGdsSjFWLXV2TFVZZmstcXNTTWFISDdHRFdMX3FmRFJ5MEIxRkNpYlY3Vk91dnhYTXUxTE9iVkN5eWVHWGxsc3dETFUwVmxpWDZXSF9sNnFYREZzZ2YwSndkNl9FSmU1c20tWkNzU2N3RVVRdWFkVl85WVcycXYyMktBRm9fV3VsdUNUN3lHQS1LMTl4WGZlNWpTSXVraUF0amVTMWZkeDlFTWFCNklWWE1vdw==
  TYPE: YXN5bW1ldHJpYw==
kind: Secret
metadata:
  creationTimestamp: null
  name: pulsar-token-admin
  namespace: pulsar
  #-------------------------------------

  #The jwt token secret keys are generated under:
  #  - 'pulsar-token-asymmetric-key'

  #The jwt tokens for superusers are generated and stored as below:
  #  - 'proxy-admin':secret('pulsar-token-proxy-admin')
  #  - 'broker-admin':secret('pulsar-token-broker-admin')
  #  - 'admin':secret('pulsar-token-admin')

2. 修改pulsar下的values.yaml

在使用 Helm 安装 Apache Pulsar 前,我们需要对官方提供的 values.yaml 文件进行适当修改,以适配我们的 Kubernetes 环境和业务需求。以下是多个关键配置项的说明与建议设置,修改较多。安装部署相比其他组件,复杂的多。

# 修改1
namespace: "pulsar"    #最好要创建pulsar,因为下面是false
# 如果已有这个命名空间则false 无的话改为true
namespaceCreate: false
 
# 修改2 使用持久化存储   开启存储,我的是storageClass,前提已经部署好了。
persistence: true
## Volume settings
volumes:
  persistence: true
  # configure the components to use local persistent volume
  # the local provisioner should be installed prior to enable local persistent volume
  local_storage: false
 
# 修改3   修改你要部署哪些组件。
components:
  # zookeeper
  zookeeper: true
  # bookkeeper
  bookkeeper: true
  # bookkeeper - autorecovery
  autorecovery: true
  # broker
  broker: true
  # functions
  functions: true
  # proxy
  proxy: true
  # toolset
  toolset: true
  # pulsar manager 因为这里使用自己的postgres所以pulsar-manager单独部署
  pulsar_manager: false
 
# 修改4  监控可以关闭。
monitoring:
  # monitoring - prometheus
  prometheus: false
  # monitoring - grafana
  grafana: false
  # monitoring - node_exporter
  node_exporter: false
  # alerting - alert-manager
  alert_manager: false
 
# 修改5
images:
  zookeeper:
    repository: registry.cn-hangzhou.aliyuncs.com/xxx/pulsar-all
    tag: 3.0.2
    pullPolicy: IfNotPresent
  bookie:
    repository: registry.cn-hangzhou.aliyuncs.com/xxx/pulsar-all
    tag: 3.0.2
    pullPolicy: IfNotPresent
  autorecovery:
    repository: registry.cn-hangzhou.aliyuncs.com/xxx/pulsar-all
    tag: 3.0.2
    pullPolicy: IfNotPresent
  broker:
    repository: registry.cn-hangzhou.aliyuncs.com/xxx/pulsar-all
    tag: 3.0.2
    pullPolicy: IfNotPresent
  proxy:
    repository: registry.cn-hangzhou.aliyuncs.com/xxx/pulsar-all
    tag: 3.0.2
    pullPolicy: IfNotPresent
  functions:
    repository: registry.cn-hangzhou.aliyuncs.com/xxx/pulsar-all
    tag: 3.0.2
 
# 修改6
# Enable or disable broker authentication and authorization.
auth:
  authentication:
    # 改为true
    enabled: true
    provider: "jwt"
    jwt:
      # Enable JWT authentication
      # If the token is generated by a secret key, set the usingSecretKey as true.
      # If the token is generated by a private key, set the usingSecretKey as false.
      usingSecretKey: false
  authorization:
    # 改为true
    enabled: true
 
zookeeper:
  ...
  volumes:
    # use a persistent volume or emptyDir
    # 使用持久化存储
    persistence: true
    data:
      name: data
      size: 20Gi
      local_storage: true
      # 修改成k8s中使用的sc(sc已经建好了的)
      storageClassName: "nfs-client"
bookkeeper:
  ...
  volumes:
    # use a persistent volume or emptyDir
    persistence: true
    journal:
      name: journal
      size: 10Gi
      local_storage: true
      storageClassName: nfs-client
      useMultiVolumes: false
      multiVolumes:
        - name: journal0
          size: 10Gi
          storageClassName: nfs-client
          mountPath: /pulsar/data/bookkeeper/journal0
        - name: journal1
          size: 10Gi
          storageClassName: nfs-client
          mountPath: /pulsar/data/bookkeeper/journal1
    ledgers:
      name: ledgers
      size: 50Gi
      storageClassName: nfs-client
      useMultiVolumes: false
      multiVolumes:
        - name: ledgers0
          size: 10Gi
          storageClassName: nfs-client
          mountPath: /pulsar/data/bookkeeper/ledgers0
        - name: ledgers1
          size: 10Gi
          storageClassName: nfs-client
          mountPath: /pulsar/data/bookkeeper/ledgers1
 
    ## use a single common volume for both journal and ledgers
    useSingleCommonVolume: false
    common:
      name: common
      size: 60Gi
      local_storage: true
      storageClassName: "nfs-client"
 
# 修改7
pulsar_metadata:
  component: pulsar-init
  image:
    # the image used for running `pulsar-cluster-initialize` job
    repository: registry.cn-hangzhou.aliyuncs.com/xxx/pulsar-all
    tag: 3.0.2
    pullPolicy: IfNotPresent
# 修改8
 ## Proxy service
  ## templates/proxy-service.yaml
  ##
  ports:
    http: 80
    https: 443
    pulsar: 6650
    pulsarssl: 6651
  service:
    annotations: {}
    # 原来是LoadBalancer改为NodePort
    type: NodePort

3.执行安装pulsar

在完成前期准备和配置文件修改后,我们现在正式使用 Helm 来部署 Apache Pulsar 集群。
执行
helm install
–values ./pulsar/values.yaml
–set initialize=true
–namespace pulsar
pulsar pulsar-3.3.0.tgz

安装流程说明:
Helm 会解析 pulsar-3.3.0.tgz 中的 Chart 结构;
根据 values.yaml 和 --set 参数生成最终的部署配置;
在 Kubernetes 中依次创建以下资源:
Namespace(如果未禁用自动创建)
ConfigMap、Secret(如 JWT 密钥)
ServiceAccount、Role、RoleBinding(权限控制)
StatefulSet / Deployment(ZooKeeper、BookKeeper、Broker 等核心组件)
Service(提供访问入口)
如果启用了 initialize=true,还会运行初始化 Job 来准备存储环境。

看到 Bookie、Broker、Proxy的SVC、STS、JOB、POD的信息。

[root@k8s-master pulsar]# kubectl get all -n pulsar
NAME                           READY   STATUS      RESTARTS      AGE
pod/pulsar-bookie-0            1/1     Running     0             82m
pod/pulsar-bookie-1            1/1     Running     0             81m
pod/pulsar-bookie-2            1/1     Running     0             81m
pod/pulsar-bookie-init-fxg8q   0/1     Completed   0             82m
pod/pulsar-broker-0            1/1     Running     2 (72m ago)   82m
pod/pulsar-broker-1            1/1     Running     1 (73m ago)   82m
pod/pulsar-broker-2            1/1     Running     2 (72m ago)   82m
pod/pulsar-proxy-0             1/1     Running     0             82m
pod/pulsar-proxy-1             1/1     Running     0             82m
pod/pulsar-proxy-2             1/1     Running     0             82m
pod/pulsar-pulsar-init-b2xlw   0/1     Completed   0             82m
pod/pulsar-recovery-0          1/1     Running     0             82m
pod/pulsar-toolset-0           1/1     Running     0             82m
pod/pulsar-zookeeper-0         1/1     Running     0             82m
pod/pulsar-zookeeper-1         1/1     Running     0             82m
pod/pulsar-zookeeper-2         1/1     Running     0             82m

NAME                       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                               AGE
service/pulsar-bookie      ClusterIP   None            <none>        3181/TCP,8000/TCP                     82m
service/pulsar-broker      ClusterIP   None            <none>        8080/TCP,6650/TCP                     82m
service/pulsar-proxy       NodePort    10.102.63.112   <none>        80:31146/TCP,6650:30163/TCP           82m
service/pulsar-recovery    ClusterIP   None            <none>        8000/TCP                              82m
service/pulsar-toolset     ClusterIP   None            <none>        <none>                                82m
service/pulsar-zookeeper   ClusterIP   None            <none>        8000/TCP,2888/TCP,3888/TCP,2181/TCP   82m

NAME                                READY   AGE
statefulset.apps/pulsar-bookie      3/3     82m
statefulset.apps/pulsar-broker      3/3     82m
statefulset.apps/pulsar-proxy       3/3     82m
statefulset.apps/pulsar-recovery    1/1     82m
statefulset.apps/pulsar-toolset     1/1     82m
statefulset.apps/pulsar-zookeeper   3/3     82m

NAME                           COMPLETIONS   DURATION   AGE
job.batch/pulsar-bookie-init   1/1           8m17s      82m
job.batch/pulsar-pulsar-init   1/1           8m37s      82m

## 4. 验证部署后是否成功

在完成 Helm 安装后,我们需要对 Pulsar 集群的基本功能进行验证,确保各个组件运行正常,且能够执行消息的发布与消费操作。以下步骤将指导你如何验证集群状态,并创建一些基础资源用于后续升级或测试。

1、使用 pulsar-admin 工具验证租户管理功能
Pulsar 提供了一个命令行工具 pulsar-admin,可用于管理租户(Tenant)、命名空间(Namespace)、主题(Topic)等资源。

如果是第一次部署,输出应为一个空列表或默认租户(如 public)。

2、创建测试租户(为后续升级和多租户测试做准备)
我们创建两个新租户 tenant1 和 tenant2,用于后续的功能测试或版本升级验证。
kubectl -n pulsar exec -it pulsar-toolset-0 -- bin/pulsar-admin tenants create tenant1
kubectl -n pulsar exec -it pulsar-toolset-0 -- bin/pulsar-admin tenants create tenant2

3、验证租户是否创建成功:
kubectl -n pulsar exec -it pulsar-toolset-0 -- bin/pulsar-admin tenants list
"public" 
"tenant1" 
"tenant2"

4. 创建命名空间并验证

接下来我们可以为其中一个租户创建命名空间(Namespace),这是组织Topic的逻辑单元。

# 为 tenant1 创建命名空间 namespace-a 
kubectl -n pulsar exec -it pulsar-toolset-0 -- bin/pulsar-admin namespaces create tenant1/namespace-a 

# 列出 tenant1 下的所有命名空间 
kubectl -n pulsar exec -it pulsar-toolset-0 -- bin/pulsar-admin namespaces list tenant1

5. 创建 Topic 并发送/消费消息

如果想进一步验证 Pulsar 的基本消息功能,尝试创建一个Topic并测试消息收发。
kubectl -n pulsar exec -it pulsar-toolset-0 – bin/pulsar-admin topics create persistent://tenant1/namespace-a/test-topic

启动消费者监听 Topic:
kubectl -n pulsar exec -it pulsar-toolset-0 – bin/pulsar-client consume persistent://tenant1/namespace-a/test-topic -s “my-subscription” -n 100

在另一个终端启动生产者发送消息:
kubectl -n pulsar exec -it pulsar-toolset-0 – bin/pulsar-client produce persistent://tenant1/namespace-a/test-topic -m “Hello supinfo!” -n 1

如果消费者能成功接收到消息,则说明Pulsar集群部署成功且功能可用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值