pulsar on k8s 部署验证

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: pulsar on k8s 部署验证
  • 前提条件
  • 步骤 0:Install dependent charts(可选)
  • 步骤 1:安装 Pulsar Helm chart
  • 步骤 2:使用 pulsar-admin 来创建 Pulsar 租户/命名空间/主题
  • 步骤 3:使用 Pulsar 客户端生产和消费消息
  • 步骤 4:使用 Pulsar Manager 来管理集群




前提条件

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

步骤 0:Install dependent charts(可选)

安装本地存储配置器

要使用本地持久化卷作为持久化存储,需要为 本地持久化卷 安装存储配置器。

最简单的方法之一是使用与 Pulsar Helm chart 一起提供的本地存储配置器。

helm repo add streamnative https://charts.streamnative.io
helm repo update
helm install pulsar-storage-provisioner streamnative/local-storage-provisioner

安装证书管理器(cert-manager)

Pulsar Helm chart 使用 cert-manager 来自动提供和管理 TLS 证书。需要先安装 cert-manager 才能为 broker 和 proxy 启用 TLS 加密。

关于安装 cert-manager 的细节,参考 官方说明

我们还提供了 bash 脚本 install-cert-manager.sh 来安装 cert-manager 到命名空间 cert-manager中。

git clone https://github.com/apache/pulsar-helm-chart
cd pulsar-helm-chart
./scripts/cert-manager/install-cert-manager.sh

步骤 1:安装 Pulsar Helm chart

  1. 添加 Pulsar Helm 仓库。
helm repo add apache https://pulsar.apache.org/chart
helm repo update
  1. 克隆 Pulsar Helm chart 的仓库
git clone https://github.com/apache/pulsar-helm-chart
cd pulsar-helm-chart

3. 在安装所有依赖的 chart 并收集了所有的配置选项后,便可以运行 prepare_helm_release.sh来准备 Helm。(可选)

./scripts/pulsar/prepare_helm_release.sh -n <k8s-namespace> -k <helm-release-name>

prepare_helm_release 创建了下列资源:

  • 用于安装 Pulsar 的 Kubernetes 命名空间。
  • 三个超级用户: broker-adminproxy-adminadmin 的 JWT 密钥和令牌。默认情况下,会生成一个非对称的公钥 / 私钥对。也可以指定 -symmetric 来生成对称的密钥。
  • proxy-admin 用于代理与 broker 间通信。
  • broker-admin 用于 broker 间通信。
  • admin 用于管理员工具。


  1. 使用 Pulsar Helm chart 来将一个 Pulsar 集群安装至 Kubernetes。
注意:--set initialize=true when installing Pulsar the first time. 以下命令将会安装并启动Apache Pulsar。
helm install pulsar apache/pulsar \
    --timeout 10m \
    --set initialize=true \
    --set volumes.persistence=false \
    --set affinity.anti_affinity=false \
    --set [your configuration options]

默认情况下,Pulsar Helm chart 会创建持久卷声明,并期望动态提供者创建底层持久卷。

volumes:
  persistence: true
# 设置使用本地持久卷# 启用本地持久卷之前应当要安装 local provisionerlocal_storage: false

要使用本地持久卷作为 Helm 的持久化存储,你可以安装 local storage provisioner ,并在 helm install 命令中添加以下选项。

--set volumes.local_storage=true
备注 在安装 Pulsar 的生产实例前,需规划好存储设置以避免额外的存储迁移工作。因为在首次安装后,若想改变存储设置,必须手动编辑 Kubernetes 对象。

Pulsar Helm chart 是为生产用途设计的。要在开发环境(如 Minikube)中使用,可以在 helm install 命令中添加以下选项来禁用持久化。

--set volumes.persistence=false
  1. 检查所有 pod 的状态。


kubectl get pods -n pulsar

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

输出

NAME                                     READY   STATUS      RESTARTS   AGE
pulsar-bookie-0                          1/1     Running     0          67m
pulsar-bookie-1                          1/1     Running     0          67m
pulsar-bookie-2                          1/1     Running     0          67m
pulsar-bookie-3                          1/1     Running     0          67m
pulsar-bookie-init-zfvpg                 0/1     Completed   0          67m
pulsar-broker-0                          1/1     Running     0          67m
pulsar-broker-1                          1/1     Running     1          67m
pulsar-broker-2                          1/1     Running     1          67m
pulsar-grafana-d79df67dc-nbskq           1/1     Running     0          67m
pulsar-prometheus-59f5cbf6bb-8qghz       1/1     Running     0          67m
pulsar-proxy-0                           1/1     Running     0          67m
pulsar-proxy-1                           1/1     Running     0          67m
pulsar-proxy-2                           1/1     Running     0          67m
pulsar-pulsar-init-drxcm                 0/1     Completed   0          67m
pulsar-pulsar-manager-84585476c8-7dd8w   1/1     Running     0          67m
pulsar-recovery-0                        1/1     Running     0          67m
pulsar-toolset-0                         1/1     Running     0          67m
pulsar-zookeeper-0                       1/1     Running     0          67m
pulsar-zookeeper-1                       1/1     Running     0          67m
pulsar-zookeeper-2                       1/1     Running     0          67m

6. 检查命名空间 pulsar 下所有服务的状态。

kubectl get services -n pulsar

输出

NAME                    TYPE           CLUSTER-IP      EXTERNAL-IP                   PORT(S)                               AGE
pulsar-bookie           ClusterIP      None            <none>                        3181/TCP,8000/TCP                     68m
pulsar-broker           ClusterIP      None            <none>                        8080/TCP,6650/TCP                     68m
pulsar-grafana          LoadBalancer   172.16.134.8    120.48.26.12,172.21.206.47    3000:31851/TCP                        68m
pulsar-prometheus       ClusterIP      None            <none>                        9090/TCP                              68m
pulsar-proxy            LoadBalancer   172.16.90.224   120.48.26.171,172.21.206.50   80:31089/TCP,6650:31166/TCP           68m
pulsar-pulsar-manager   LoadBalancer   172.16.233.84   120.48.26.224,172.21.206.51   9527:30866/TCP                        68m
pulsar-recovery         ClusterIP      None            <none>                        8000/TCP                              68m
pulsar-toolset          ClusterIP      None            <none>                        <none>                                68m
pulsar-zookeeper        ClusterIP      None            <none>                        8000/TCP,2888/TCP,3888/TCP,2181/TCP   68m

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

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

1.进入 toolset 容器。

kubectl exec -it -n pulsar pulsar-toolset-0 -- /bin/bash

2.在 toolset 容器里,创建一个名为 apache 的租户。

bin/pulsar-admin tenants create apache

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

bin/pulsar-admin tenants list

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

"apache"
"public"
"pulsar"

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

bin/pulsar-admin namespaces create apache/pulsar

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

bin/pulsar-admin namespaces list apache

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

"apache/pulsar"

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

bin/pulsar-admin topics create-partitioned-topic apache/pulsar/test-topic -p 4

5. 在 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-proxy

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

pulsar-proxy            LoadBalancer   172.16.90.224   120.48.26.171,172.21.206.50   80:31089/TCP,6650:31166/TCP           68m

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

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

webServiceUrl=http://172.21.195.xx:xxxx
brokerServiceUrl=pulsar://172.21.195.xx:xxxx

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

1.从 下载页面 下载 Apache Pulsar。

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

tar -xf <file-name>.tar.gz

3. 暴露 PULSAR_HOME

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

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

export PULSAR_HOME=$(pwd)

4. 配置 Pulsar 客户端。

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

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

bin/pulsar-client consume -s sub apache/pulsar/test-topic  -n 0

6. 打开一个新的终端。在新终端中,创建一个生产者并向 test-topic 主题发送10条消息。

bin/pulsar-client produce apache/pulsar/test-topic  -m "---------hello apache pulsar-------" -n 10

7. 验证结果。

对于生产者而言

输出

消息已被成功生产。

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。

1.默认情况下, Pulsar Manager 作为一个独立的 LoadBalancer 暴露给外界。你可以value.yaml中设置 pulsar_manager: true

## 组件
##
## 控制集群要部署哪些 Apache Pulsar 组件
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
  pulsar_manager: true

2.设置管理员账号以及密码

注意修改其中的url链接地址和设置的管理员账户名、密码和邮箱

CSRF_TOKEN=$(curl <http://192.31.198.xx:port/pulsar-manager/csrf-token>)
curl \
   -H 'X-XSRF-TOKEN: $CSRF_TOKEN' \
   -H 'Cookie: XSRF-TOKEN=$CSRF_TOKEN;' \
   -H "Content-Type: application/json" \
   -X PUT <http://172.21.195.xx:port/pulsar-manager/users/superuser> \
   -d '{"name": "admin", "password": "apachepulsar", "description": "admin", "email": "gongziran@tencent.com"}'

Curl命令中的请求参数

{"name": "admin", "password": "apachepulsar", "description": "test", "email": "username@test.org"}
  • name是Pulsar Manger的登录用户名,当前是admin
  • password 是Pulsar Manager当前用户的密码,当前是apachepulsar。密码应该大于等于6位。

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

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

  • 点击左上角的 New Environment 按钮。
  • 在弹窗中的 Environment Name 一栏里输入 pulsar
  • 在弹窗中的 Service URL 一栏里输入 http://pulsar-broker:8080
  • 点击弹窗中的 Confirm 按钮。

5.成功创建环境后,你将被重定向到新环境的 租户 页面。然后你可以使用 Pulsar Manager 来创建 租户命名空间主题

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
181 3
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
1月前
|
Kubernetes 负载均衡 前端开发
二进制部署Kubernetes 1.23.15版本高可用集群实战
使用二进制文件部署Kubernetes 1.23.15版本高可用集群的详细教程,涵盖了从环境准备到网络插件部署的完整流程。
53 2
二进制部署Kubernetes 1.23.15版本高可用集群实战
|
17天前
|
Kubernetes Cloud Native Linux
云原生入门:Kubernetes的简易部署与应用
【8月更文挑战第49天】在云原生的世界里,Kubernetes(K8s)是一颗璀璨的星。本文将带你走进K8s的世界,从安装到简单应用,轻松驾驭这个强大的容器编排工具。让我们一起探索云原生的奥秘,解锁新技能!
|
14天前
|
存储 Kubernetes Cloud Native
部署Kubernetes客户端和Docker私有仓库的步骤
这个指南涵盖了部署Kubernetes客户端和配置Docker私有仓库的基本步骤,是基于最新的实践和工具。根据具体的需求和环境,还可能需要额外的配置和调整。
29 1
|
23天前
|
Kubernetes 应用服务中间件 nginx
Kubernetes上安装Metallb和Ingress并部署应用程序
Kubernetes上安装Metallb和Ingress并部署nginx应用程序,使用LoadBalancer类型的KubernetesService
92 3
|
1月前
|
存储 Kubernetes Ubuntu
Ubuntu 22.04LTS版本二进制部署K8S 1.30+版本
这篇文章详细介绍了在Ubuntu 22.04 LTS系统上使用VMware Fusion虚拟化软件部署Kubernetes 1.30+版本的完整过程,包括环境准备、安装containerd、配置etcd、生成证书、部署高可用组件、启动Kubernetes核心组件以及网络插件的部署和故障排查。
67 4
|
1月前
|
Kubernetes Ubuntu 网络安全
Ubuntu基于kubeadm快速部署K8S实战
关于如何在Ubuntu系统上使用kubeadm工具快速部署Kubernetes集群的详细实战指南。
114 2
|
1天前
|
Kubernetes Cloud Native Ubuntu
云原生之旅:Kubernetes集群搭建与应用部署
【8月更文挑战第65天】本文将带你进入云原生的世界,通过一步步指导如何在本地环境中搭建Kubernetes集群,并部署一个简单的应用。我们将使用Minikube和Docker作为工具,探索云原生技术的魅力所在。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和实践技巧。
|
5天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
|
1月前
|
存储 Kubernetes 测试技术
k8s使用pvc,pv,sc关联ceph集群
文章介绍了如何在Kubernetes中使用PersistentVolumeClaim (PVC)、PersistentVolume (PV) 和StorageClass (SC) 来关联Ceph集群,包括创建Ceph镜像、配置访问密钥、删除默认存储类、编写和应用资源清单、创建资源以及进行访问测试的步骤。同时,还提供了如何使用RBD动态存储类来关联Ceph集群的指南。
50 7
下一篇
无影云桌面