Get started in Kubernetes
本节将指导你使用 Helm 将 Apache Pulsar 快速地安装及运行在 Kubernetes 上,内容包括以下几个部分:
- 使用 Helm 将 Apache Pulsar 安装在 Kubernetes 上
- 启动与停止 Apache Pulsar
- 使用
pulsar-admin
创建主题 - 使用 Pulsar 客户端生产与消费消息
- 通过 Prometheus 和 Grafana 来监控 Apache Pulsar 的状态
如需将 Pulsar 集群部署于生产用途,请参阅 如何配置与安装 Pulsar Helm chart。
前提条件
- Kubernetes server 1.14.0+
- kubectl 1.14.0+
- Helm 3.0+
提示
对于接下来的步骤,步骤 2 与步骤 3 适用于 开发者,步骤 4 和 步骤 5 适用于 管理员。
步骤 0:准备一个 Kubernetes 集群
在安装 Pulsar Helm chart 之前,你必须创建一个 Kubernetes 集群。 你可以按照 操作指南 来准备一个 Kubernetes 集群。
We use Minikube in this quick start guide. 要准备一个 Kubernetes 集群,请遵循以下步骤:
在 Minikube 上创建一个 Kubernetes 集群。
minikube start --memory=8192 --cpus=4 --kubernetes-version=<k8s-version>
<k8s-version>
可以是 Minikube 安装程序支持的任意 Kubernetes 版本 ,比如v1.16.1
。设置
kubectl
来使用 Minikube。kubectl config use-context minikube
若要在 Minikube 上使用本地 Kubernetes 集群的 Kubernetes Dashboard,输入以下的命令:
minikube dashboard
这条命令会自动用你的浏览器打开一个网页。
步骤 1:安装 Pulsar Helm chart
添加 Pulsar Helm 仓库。
helm repo add apache https://pulsar.apache.org/charts
helm repo update
克隆 Pulsar Helm chart 的仓库。
git clone https://github.com/apache/pulsar-helm-chart
cd pulsar-helm-chart
运行脚本
prepare_helm_release.sh
来创建安装 Apache Pulsar Helm chart 所需的密码信息。 用户名pulsar
与密码pulsar
可用于登录 Grafana dashboard 与 Pulsar Manager。./scripts/pulsar/prepare_helm_release.sh \
-n pulsar \
-k pulsar-mini \
-c
使用 Pulsar Helm chart 来将一个 Pulsar 集群安装至 Kubernetes。
注意
在首次安装 Pulsar 时,您需要指定参数--set initialize=true
。 以下命令将会安装并启动Apache Pulsar。helm install \
--values examples/values-minikube.yaml \
--set initialize=true \
--namespace pulsar \
pulsar-mini apache/pulsar
检查所有 pod 的状态。
kubectl get pods -n pulsar
如果所有 pod 都成功启动,你会看到
STATUS
变为Running
或Completed
。输出
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
是 Pulsar 的 CLI(命令行客户端) 工具。 这一步中,你可以使用 pulsar-admin
来创建资源,包括租户、命名空间和主题。
进入
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 客户端来创建生产者与消费者并用于生产和消费消息。
默认情况下,Pulsar Helm chart 会通过 Kubernetes LoadBalancer
将 Pulsar 集群暴露出来。 在 Minikube 中,你可以使用如下命令来检查代理服务。
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
这个输出显示了 Pulsar 集群的二进制端口 和 HTTP 端口都映射到了哪个 node 端口上。 80:
后面的端口是 HTTP 端口,而 6650:
后面的端口是二进制端口。
然后你就可以找到 IP 地址并通过运行以下命令来对外暴露你的 Minikube 服务器。
minikube service pulsar-mini-proxy -n pulsar
输出
|-----------|-------------------|-------------|-------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|-------------------|-------------|-------------------------|
| pulsar | pulsar-mini-proxy | http/80 | http://172.17.0.4:32305 |
| | | pulsar/6650 | http://172.17.0.4:31816 |
|-----------|-------------------|-------------|-------------------------|
🏃 pulsar-mini-proxy 服务的起始通道。
|-----------|-------------------|-------------|------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|-------------------|-------------|------------------------|
| pulsar | pulsar-mini-proxy | | http://127.0.0.1:61853 |
| | | | http://127.0.0.1:61854 |
|-----------|-------------------|-------------|------------------------|
此时,你可以获得连接到你的 Pulsar 客户端的服务 URL。 下面是一些 URL 示例:
webServiceUrl=http://127.0.0.1:61853/
brokerServiceUrl=pulsar://127.0.0.1:61854/
然后你可以继续如下步骤:
从 下载页面 下载 Apache Pulsar tarball。
基于你的下载文件解压 tarball。
tar -xf <file-name>.tar.gz
暴露
PULSAR_HOME
。(1) 输入已解压的下载文件的目录。
(2) 将
PULSAR_HOME
暴露为环境变量。export PULSAR_HOME=$(pwd)
配置 Pulsar 客户端。
在
${PULSAR_HOME}/conf/client.conf
文件中,用你从上面步骤中获得的服务 URL 来替换掉webServiceUrl
与brokerServiceUrl
。创建订阅以消耗来自
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
验证结果。
对于生产者而言
输出
消息已被成功生产。
18:15:15.489 [main] INFO org.apache.pulsar.client.cli.PulsarClientTool - 10 messages successfully produced
对于消费者而言
输出
同时,你可以收到如下的消息。
----- 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 -n pulsar pulsar-mini-pulsar-manager
Pulsar Manager UI 将会在你的浏览器中打开。 你可以使用用户名
pulsar
和密码pulsar
来登录进 Pulsar Manager。在 Pulsar Manager UI 中,你可以创建一个环境。
- 点击左上角的
New Environment
按钮。 - 在弹窗中的
Environment Name
一栏里输入pulsar-mini
。 - 在弹窗中的
Service URL
一栏里输入http://pulsar-mini-broker:8080
。 - 点击弹窗中的
Confirm
按钮。
- 点击左上角的
- 成功创建环境后,你将被重定向到新环境的
租户
页面。 然后你可以使用 Pulsar Manager 来创建租户
、命名空间
和主题
。
步骤 5:使用 Prometheus 和 Grafana 来监控集群
Grafana 是一个开源的可视化工具,用于将时间序列数据直观地可视化为仪表板。
默认情况下, Grafana 作为一个独立的
LoadBalancer
暴露给外界。 你可以使用以下命令打开 Grafana 界面:minikube service pulsar-mini-grafana -n pulsar
Grafana UI 会在你的浏览器中打开。 你可以使用用户名
pulsar
和密码pulsar
来登录进 Grafana仪表板。你可以查看 Pulsar 集群的不同组件的仪表板。