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.
Create a kubernetes cluster on Minikube.
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.设置
kubectl
来使用 Minikube。kubectl config use-context minikube
In order to use the Kubernetes Dashboard with local Kubernetes cluster on Minikube, enter the command below:
minikube dashboard
这条命令会自动用你的浏览器打开一个网页。
Step 1: Install Pulsar Helm Chart
克隆 Pulsar Helm chart 的仓库。
git clone https://github.com/apache/pulsar-helm-chart
cd pulsar-helm-chart
Run
prepare_helm_release.sh
to create secrets required for installing Apache Pulsar Helm chart. The usernamepulsar
and passwordpulsar
are used for logging into Grafana dashboard and Pulsar Manager../scripts/pulsar/prepare_helm_release.sh \
-n pulsar \
-k pulsar-mini \
--control-center-admin pulsar \
--control-center-password pulsar \
-c
使用 Pulsar Helm chart 来将一个 Pulsar 集群安装至 Kubernetes。
helm install \
--values examples/values-minikube.yaml \
pulsar-mini charts/pulsar
检查所有 pod 的状态。
kubectl get pods -n pulsar
If all pods start up successfully, you can see
STATUS
changes toRunning
orCompleted
.输出
NAME READY STATUS RESTARTS AGE
pulsar-mini-bookie-0 1/1 Running 0 9m27s
pulsar-mini-bookie-init-5gphs 0/1 Completed 0 9m27s
pulsar-mini-broker-0 1/1 Running 0 9m27s
pulsar-mini-grafana-6b7bcc64c7-4tkxd 1/1 Running 0 9m27s
pulsar-mini-prometheus-5fcf5dd84c-w8mgz 1/1 Running 0 9m27s
pulsar-mini-proxy-0 1/1 Running 0 9m27s
pulsar-mini-pulsar-init-t7cqt 0/1 Completed 0 9m27s
pulsar-mini-pulsar-manager-9bcbb4d9f-htpcs 1/1 Running 0 9m27s
pulsar-mini-toolset-0 1/1 Running 0 9m27s
pulsar-mini-zookeeper-0 1/1 Running 0 9m27s
检查命名空间
pulsar
下所有服务的状态。kubectl get services -n pulsar
输出
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
pulsar-mini-bookie ClusterIP None <none> 3181/TCP,8000/TCP 11m
pulsar-mini-broker ClusterIP None <none> 8080/TCP,6650/TCP 11m
pulsar-mini-grafana LoadBalancer 10.106.141.246 <pending> 3000:31905/TCP 11m
pulsar-mini-prometheus ClusterIP None <none> 9090/TCP 11m
pulsar-mini-proxy LoadBalancer 10.97.240.109 <pending> 80:32305/TCP,6650:31816/TCP 11m
pulsar-mini-pulsar-manager LoadBalancer 10.103.192.175 <pending> 9527:30190/TCP 11m
pulsar-mini-toolset ClusterIP None <none> <none> 11m
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.
进入
toolset
容器。kubectl exec -it -n pulsar pulsar-mini-toolset-0 -- /bin/bash
在
toolset
容器里,创建一个名为apache
的租户。bin/pulsar-admin tenants create apache
然后你可以列出所有租户,来查看租户是否创建成功。
bin/pulsar-admin tenants list
你应该能看到类似如下的输出: 租户
apache
已经被成功地创建了。"apache"
"public"
"pulsar"
在
toolset
容器里,在租户apache
下创建一个名为pulsar
的命名空间。bin/pulsar-admin namespaces create apache/pulsar
然后你可以列出租户
apache
的所有命名空间,来查看命名空间是否创建成功。bin/pulsar-admin namespaces list apache
你应该能看到类似如下的输出: 命名空间
apache/pulsar
已经被成功地创建了。"apache/pulsar"
在
toolset
容器里,在命名空间apache/pulsar
下创建一个包含4
个分区的主题test-topic
。bin/pulsar-admin topics create-partitioned-topic apache/pulsar/test-topic -p 4
在
toolset
容器里,列出命名空间apache/pulsar
中的所有分区主题。bin/pulsar-admin topics list-partitioned-topics apache/pulsar
然后你可以看见命名空间
apache/pulsar
下的所有分区主题。"persistent://apache/pulsar/test-topic"
步骤 3:使用 Pulsar 客户端生产和消费消息
你可以使用 Pulsar 客户端来创建生产者与消费者并用于生产和消费消息。
By default the Helm chart expose the Pulsar cluster through a Kubernetes LoadBalancer
. 在 Minikube 中,你可以使用以下命令获取代理服务的 IP 地址。
kubectl get services -n pulsar | grep pulsar-mini-proxy
你将看到类似如下的输出:
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.
minikube ip
At this point, you will get the service urls to connect to your Pulsar client.
webServiceUrl=http://$(minikube ip):<exposed-http-port>/
brokerServiceUrl=pulsar://$(minikube ip):<exposed-binary-port>/
Then proceed with the following steps:
Download the Apache Pulsar tarball from downloads page.
基于你的下载文件解压 tarball。
tar -xf <file-name>.tar.gz
暴露
PULSAR_HOME
。(1) 输入已解压的下载文件的目录。
(2) 将
PULSAR_HOME
暴露为环境变量。export PULSAR_HOME=$(pwd)
配置 Pulsar 客户端。
In the
${PULSAR_HOME}/conf/client.conf
file, replacewebServiceUrl
andbrokerServiceUrl
with the service urls you get from the above steps.创建订阅以消耗来自
apache/pulsar/test-tope
的消息。bin/pulsar-client consume -s sub apache/pulsar/test-topic -n 0
打开一个新的终端。 在新终端中,创建一个生产者并向
test-topic
主题发送10条消息。bin/pulsar-client produce apache/pulsar/test-topic -m "---------hello apache pulsar-------" -n 10
验证结果。
From producer side
输出
消息已被成功生产。
18:15:15.489 [main] INFO org.apache.pulsar.client.cli.PulsarClientTool - 10 messages successfully produced
From consumer side
输出
同时,你可以收到如下的消息。
----- got message -----
---------hello apache pulsar-------
----- got message -----
---------hello apache pulsar-------
----- got message -----
---------hello apache pulsar-------
----- got message -----
---------hello apache pulsar-------
----- got message -----
---------hello apache pulsar-------
----- got message -----
---------hello apache pulsar-------
----- got message -----
---------hello apache pulsar-------
----- got message -----
---------hello apache pulsar-------
----- got message -----
---------hello apache pulsar-------
----- got message -----
---------hello apache pulsar-------
步骤 4:使用 Pulsar Manager 来管理集群
Pulsar Manager 是一个基于网络 GUI 的管理工具,用于管理和监测Pulsar。
默认情况下,
Pulsar Manager
作为一个独立的LoadBalancer
暴露给外界。 你可以使用以下命令打开 Pulsar Manager 界面:minikube service pulsar-mini-pulsar-mananger
The pulsar manager UI will be open in your browser. You can use username
pulsar
and passwordpulsar
to log into Pulsar Manager.在 Pulsar Manager UI 中,你可以创建一个环境。
- 点击左上角的
New Environment
按钮。 - 在弹窗中的
Environment Name
一栏里输入pulsar-mini
。 - 在弹窗中的
Service URL
一栏里输入http://pulsar-mini-broker:8080
。 - 点击弹窗中的
Confirm
按钮。
- 点击左上角的
- After successfully created an environment, you will be redirected to the
tenants
page of that environment. Then you can createtenants
,namespaces
andtopics
using Pulsar Manager.
Step 5: Use Prometheus and Grafana to monitor the cluster
Grafana 是一个开源的可视化工具,用于将时间序列数据直观地可视化为仪表板。
默认情况下, Grafana 作为一个独立的
LoadBalancer
暴露给外界。 你可以使用以下命令打开 Grafana 界面:minikube service pulsar-mini-grafana -n pulsar
The Grafana UI will be open in your browser. You can use username
pulsar
and passwordpulsar
to log into Grafana Dashboard.You will be able to view dashboards for different components of a Pulsar cluster.