This section guides you through every step of installing and running Apache Pulsar with Helm on Kubernetes quickly, including

  • 使用 Helm 将 Apache Pulsar 安装在 Kubernetes 上
  • 启动与停止 Apache Pulsar
  • 使用 pulsar-admin 创建主题
  • 使用 Pulsar 客户端生产与消费消息
  • 通过 Prometheus 和 Grafana 来监控 Apache Pulsar 的状态

For deploying a Pulsar cluster for production usage, please read the documentation on how to configure and install a Pulsar Helm chart.

前提条件

  • Kubernetes server 1.14.0+
  • kubectl 1.14.0+
  • Helm 3.0+

Tip For the following steps, step 2 and step 3 are for developers and step 4 and step 5 are for administrators.

步骤 0:准备一个 Kubernetes 集群

在安装 Pulsar Helm chart 之前,你必须创建一个 Kubernetes 集群。 你可以按照 指示 来准备一个Kubernetes集群。

We use Minikube in this quick start guide.

  1. Create a kubernetes cluster on Minikube.

    1. minikube start --memory=8192 --cpus=4 --kubernetes-version=<k8s-version>

    The <k8s-version> can be any Kubernetes version supported by your minikube installation. Example: `v1.16.1.

  2. 设置 kubectl 来使用 Minikube。

    1. kubectl config use-context minikube
  3. In order to use the Kubernetes Dashboard with local Kubernetes cluster on Minikube, enter the command below:

    1. minikube dashboard

    这条命令会自动用你的浏览器打开一个网页。

Step 1: Install Pulsar Helm Chart

  1. 克隆 Pulsar Helm chart 的仓库。

    1. git clone https://github.com/apache/pulsar-helm-chart
    2. cd pulsar-helm-chart
  2. Run prepare_helm_release.sh to create secrets required for installing Apache Pulsar Helm chart. The username pulsar and password pulsar are used for logging into Grafana dashboard and Pulsar Manager.

    1. ./scripts/pulsar/prepare_helm_release.sh \
    2. -n pulsar \
    3. -k pulsar-mini \
    4. --control-center-admin pulsar \
    5. --control-center-password pulsar \
    6. -c
  3. 使用 Pulsar Helm chart 来将一个 Pulsar 集群安装至 Kubernetes。

    1. helm install \
    2. --values examples/values-minikube.yaml \
    3. pulsar-mini charts/pulsar
  4. 检查所有 pod 的状态。

    1. kubectl get pods -n pulsar

    If all pods start up successfully, you can see STATUS changes to Running or Completed.

    输出

    1. NAME READY STATUS RESTARTS AGE
    2. pulsar-mini-bookie-0 1/1 Running 0 9m27s
    3. pulsar-mini-bookie-init-5gphs 0/1 Completed 0 9m27s
    4. pulsar-mini-broker-0 1/1 Running 0 9m27s
    5. pulsar-mini-grafana-6b7bcc64c7-4tkxd 1/1 Running 0 9m27s
    6. pulsar-mini-prometheus-5fcf5dd84c-w8mgz 1/1 Running 0 9m27s
    7. pulsar-mini-proxy-0 1/1 Running 0 9m27s
    8. pulsar-mini-pulsar-init-t7cqt 0/1 Completed 0 9m27s
    9. pulsar-mini-pulsar-manager-9bcbb4d9f-htpcs 1/1 Running 0 9m27s
    10. pulsar-mini-toolset-0 1/1 Running 0 9m27s
    11. pulsar-mini-zookeeper-0 1/1 Running 0 9m27s
  5. 检查命名空间 pulsar 下所有服务的状态。

    1. kubectl get services -n pulsar

    输出

    1. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    2. pulsar-mini-bookie ClusterIP None <none> 3181/TCP,8000/TCP 11m
    3. pulsar-mini-broker ClusterIP None <none> 8080/TCP,6650/TCP 11m
    4. pulsar-mini-grafana LoadBalancer 10.106.141.246 <pending> 3000:31905/TCP 11m
    5. pulsar-mini-prometheus ClusterIP None <none> 9090/TCP 11m
    6. pulsar-mini-proxy LoadBalancer 10.97.240.109 <pending> 80:32305/TCP,6650:31816/TCP 11m
    7. pulsar-mini-pulsar-manager LoadBalancer 10.103.192.175 <pending> 9527:30190/TCP 11m
    8. pulsar-mini-toolset ClusterIP None <none> <none> 11m
    9. pulsar-mini-zookeeper ClusterIP None <none> 2888/TCP,3888/TCP,2181/TCP 11m

步骤 2:使用 pulsar-admin 来创建 Pulsar 租户/命名空间/主题

pulsar-admin is the CLI tool for Pulsar. In this step, you can use pulsar-admin to create resources including tenants, namespaces, and topics.

  1. 进入 toolset 容器。

    1. kubectl exec -it -n pulsar pulsar-mini-toolset-0 -- /bin/bash
  2. toolset 容器里,创建一个名为 apache 的租户。

    1. bin/pulsar-admin tenants create apache

    然后你可以列出所有租户,来查看租户是否创建成功。

    1. bin/pulsar-admin tenants list

    你应该能看到类似如下的输出: 租户 apache 已经被成功地创建了。

    1. "apache"
    2. "public"
    3. "pulsar"
  3. toolset 容器里,在租户 apache 下创建一个名为 pulsar 的命名空间。

    1. bin/pulsar-admin namespaces create apache/pulsar

    然后你可以列出租户 apache 的所有命名空间,来查看命名空间是否创建成功。

    1. bin/pulsar-admin namespaces list apache

    你应该能看到类似如下的输出: 命名空间 apache/pulsar 已经被成功地创建了。

    1. "apache/pulsar"
  4. toolset 容器里,在命名空间 apache/pulsar 下创建一个包含 4 个分区的主题 test-topic

    1. bin/pulsar-admin topics create-partitioned-topic apache/pulsar/test-topic -p 4
  5. toolset 容器里,列出命名空间 apache/pulsar 中的所有分区主题。

    1. bin/pulsar-admin topics list-partitioned-topics apache/pulsar

    然后你可以看见命名空间 apache/pulsar 下的所有分区主题。

    1. "persistent://apache/pulsar/test-topic"

步骤 3:使用 Pulsar 客户端生产和消费消息

你可以使用 Pulsar 客户端来创建生产者与消费者并用于生产和消费消息。

By default the Helm chart expose the Pulsar cluster through a Kubernetes LoadBalancer. 在 Minikube 中,你可以使用以下命令获取代理服务的 IP 地址。

  1. kubectl get services -n pulsar | grep pulsar-mini-proxy

你将看到类似如下的输出:

  1. pulsar-mini-proxy LoadBalancer 10.97.240.109 <pending> 80:32305/TCP,6650:31816/TCP 28m

This output tells what are the node ports that Pulsar cluster’s binary port and http port are exposed to. The port after 80: is the http port while the port after 6650: is the binary port.

Then you can find the ip address of your minikube server by running the following command.

  1. minikube ip

At this point, you will get the service urls to connect to your Pulsar client.

  1. webServiceUrl=http://$(minikube ip):<exposed-http-port>/
  2. brokerServiceUrl=pulsar://$(minikube ip):<exposed-binary-port>/

Then proceed with the following steps:

  1. Download the Apache Pulsar tarball from downloads page.

  2. 基于你的下载文件解压 tarball。

    1. tar -xf <file-name>.tar.gz
  3. 暴露 PULSAR_HOME

    (1) 输入已解压的下载文件的目录。

    (2) 将 PULSAR_HOME 暴露为环境变量。

    1. export PULSAR_HOME=$(pwd)
  4. 配置 Pulsar 客户端。

    In the ${PULSAR_HOME}/conf/client.conf file, replace webServiceUrl and brokerServiceUrl with the service urls you get from the above steps.

  5. 创建订阅以消耗来自 apache/pulsar/test-tope 的消息。

    1. bin/pulsar-client consume -s sub apache/pulsar/test-topic -n 0
  6. 打开一个新的终端。 在新终端中,创建一个生产者并向 test-topic 主题发送10条消息。

    1. bin/pulsar-client produce apache/pulsar/test-topic -m "---------hello apache pulsar-------" -n 10
  7. 验证结果。

    • From producer side

      输出

      消息已被成功生产。

      1. 18:15:15.489 [main] INFO org.apache.pulsar.client.cli.PulsarClientTool - 10 messages successfully produced
    • From consumer side

      输出

      同时,你可以收到如下的消息。

      1. ----- got message -----
      2. ---------hello apache pulsar-------
      3. ----- got message -----
      4. ---------hello apache pulsar-------
      5. ----- got message -----
      6. ---------hello apache pulsar-------
      7. ----- got message -----
      8. ---------hello apache pulsar-------
      9. ----- got message -----
      10. ---------hello apache pulsar-------
      11. ----- got message -----
      12. ---------hello apache pulsar-------
      13. ----- got message -----
      14. ---------hello apache pulsar-------
      15. ----- got message -----
      16. ---------hello apache pulsar-------
      17. ----- got message -----
      18. ---------hello apache pulsar-------
      19. ----- got message -----
      20. ---------hello apache pulsar-------

步骤 4:使用 Pulsar Manager 来管理集群

Pulsar Manager 是一个基于网络 GUI 的管理工具,用于管理和监测Pulsar。

  1. 默认情况下, Pulsar Manager 作为一个独立的 LoadBalancer 暴露给外界。 你可以使用以下命令打开 Pulsar Manager 界面:

    1. minikube service pulsar-mini-pulsar-mananger
  2. The pulsar manager UI will be open in your browser. You can use username pulsar and password pulsar to log into Pulsar Manager.

  3. 在 Pulsar Manager UI 中,你可以创建一个环境。

    • 点击左上角的 New Environment 按钮。
    • 在弹窗中的 Environment Name 一栏里输入 pulsar-mini
    • 在弹窗中的 Service URL 一栏里输入 http://pulsar-mini-broker:8080
    • 点击弹窗中的 Confirm 按钮。
  4. After successfully created an environment, you will be redirected to the tenants page of that environment. Then you can create tenants, namespaces and topics using Pulsar Manager.

Step 5: Use Prometheus and Grafana to monitor the cluster

Grafana 是一个开源的可视化工具,用于将时间序列数据直观地可视化为仪表板。

  1. 默认情况下, Grafana 作为一个独立的 LoadBalancer 暴露给外界。 你可以使用以下命令打开 Grafana 界面:

    1. minikube service pulsar-mini-grafana -n pulsar
  2. The Grafana UI will be open in your browser. You can use username pulsar and password pulsar to log into Grafana Dashboard.

  3. You will be able to view dashboards for different components of a Pulsar cluster.