Get started in Kubernetes

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

    如需将 Pulsar 集群部署于生产用途,请参阅 如何配置与安装 Pulsar Helm chart

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

    步骤 0:准备一个 Kubernetes 集群

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

    We use in this quick start guide. 要准备一个 Kubernetes 集群,请遵循以下步骤:

    1. 在 Minikube 上创建一个 Kubernetes 集群。

      <k8s-version> 可以是 Minikube 安装程序支持的任意 Kubernetes 版本 ,比如 v1.16.1

    2. 设置 kubectl 来使用 Minikube。

      1. kubectl config use-context minikube
    3. 若要在 Minikube 上使用本地 Kubernetes 集群的 ,输入以下的命令:

      1. minikube dashboard

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

    1. 添加 Pulsar Helm 仓库。

      1. helm repo add apache https://pulsar.apache.org/charts
      1. helm repo update
    2. 克隆 Pulsar Helm chart 的仓库。

      1. git clone https://github.com/apache/pulsar-helm-chart
      2. cd pulsar-helm-chart
    3. 运行脚本 prepare_helm_release.sh 来创建安装 Apache Pulsar Helm chart 所需的密码信息。 用户名 pulsar 与密码 pulsar 可用于登录 Grafana dashboard 与 Pulsar Manager。

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

      注意
      在首次安装 Pulsar 时,您需要指定参数--set initialize=true。 以下命令将会安装并启动Apache Pulsar。

      1. helm install \
      2. --values examples/values-minikube.yaml \
      3. --set initialize=true \
      4. --namespace pulsar \
      5. pulsar-mini apache/pulsar
    5. 检查所有 pod 的状态。

      1. kubectl get pods -n pulsar

      如果所有 pod 都成功启动,你会看到 STATUS 变为 RunningCompleted

      输出

      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-grafana-6b7bcc64c7-4tkxd 1/1 Running 0 9m27s
      5. pulsar-mini-prometheus-5fcf5dd84c-w8mgz 1/1 Running 0 9m27s
      6. pulsar-mini-proxy-0 1/1 Running 0 9m27s
      7. pulsar-mini-pulsar-init-t7cqt 0/1 Completed 0 9m27s
      8. pulsar-mini-pulsar-manager-9bcbb4d9f-htpcs 1/1 Running 0 9m27s
      9. pulsar-mini-toolset-0 1/1 Running 0 9m27s
      10. pulsar-mini-zookeeper-0 1/1 Running 0 9m27s
    6. 检查命名空间 pulsar 下所有服务的状态。

      1. kubectl get services -n pulsar

      输出

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

    pulsar-admin 是 Pulsar 的 CLI(命令行客户端) 工具。 这一步中,你可以使用 pulsar-admin 来创建资源,包括租户、命名空间和主题。

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

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

      1. bin/pulsar-admin tenants list

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

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

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

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

      1. bin/pulsar-admin namespaces list apache

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

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

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

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

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

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

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

    默认情况下,Pulsar Helm chart 会通过 Kubernetes LoadBalancer 将 Pulsar 集群暴露出来。 在 Minikube 中,你可以使用如下命令来检查代理服务。

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

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

    这个输出显示了 Pulsar 集群的二进制端口 和 HTTP 端口都映射到了哪个 node 端口上。 80: 后面的端口是 HTTP 端口,而 6650: 后面的端口是二进制端口。

    然后你就可以找到 IP 地址并通过运行以下命令来对外暴露你的 Minikube 服务器。

    1. minikube service pulsar-mini-proxy -n pulsar

    输出

    1. |-----------|-------------------|-------------|-------------------------|
    2. | NAMESPACE | NAME | TARGET PORT | URL |
    3. |-----------|-------------------|-------------|-------------------------|
    4. | pulsar | pulsar-mini-proxy | http/80 | http://172.17.0.4:32305 |
    5. | | | pulsar/6650 | http://172.17.0.4:31816 |
    6. |-----------|-------------------|-------------|-------------------------|
    7. 🏃 pulsar-mini-proxy 服务的起始通道。
    8. |-----------|-------------------|-------------|------------------------|
    9. | NAMESPACE | NAME | TARGET PORT | URL |
    10. |-----------|-------------------|-------------|------------------------|
    11. | pulsar | pulsar-mini-proxy | | http://127.0.0.1:61853 |
    12. | | | | http://127.0.0.1:61854 |
    13. |-----------|-------------------|-------------|------------------------|

    此时,你可以获得连接到你的 Pulsar 客户端的服务 URL。 下面是一些 URL 示例:

    1. webServiceUrl=http://127.0.0.1:61853/
    2. brokerServiceUrl=pulsar://127.0.0.1:61854/

    然后你可以继续如下步骤:

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

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

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

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

      ${PULSAR_HOME}/conf/client.conf 文件中,用你从上面步骤中获得的服务 URL 来替换掉 webServiceUrlbrokerServiceUrl

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

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

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

      • 对于生产者而言

        输出

        消息已被成功生产。

        1. 18:15:15.489 [main] INFO org.apache.pulsar.client.cli.PulsarClientTool - 10 messages successfully produced
      • 对于消费者而言

        输出

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

        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 界面:

    2. Pulsar Manager UI 将会在你的浏览器中打开。 你可以使用用户名 pulsar 和密码 pulsar 来登录进 Pulsar Manager。

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

      • 点击左上角的 New Environment 按钮。
      • 在弹窗中的 Environment Name 一栏里输入 pulsar-mini
      • 在弹窗中的 Service URL 一栏里输入 http://pulsar-mini-broker:8080
      • 点击弹窗中的 Confirm 按钮。
    4. 成功创建环境后,你将被重定向到新环境的 租户 页面。 然后你可以使用 Pulsar Manager 来创建 租户命名空间主题

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

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

      1. minikube service pulsar-mini-grafana -n pulsar
    2. 你可以查看 Pulsar 集群的不同组件的仪表板。