pulsar on k8s

简介: pulsar on k8s

Pulsar on K8s部署

 

前期准备:

  1. Helm charts。
  2. Scripts(初始化pulsar用户、创建token、清理token等)
  3. Kubernetes集群 admin权限(pulsar function需要admin权限)
  4. 需要用csi的方式进行磁盘挂载,按照不同的磁盘类型,需要申请两个sc,增强型SSD(bigdata-sc-essd),高性能云磁盘(bigdata-sc-hpd)
  5. 单节点允许的挂盘数,由5调整为10。(TODO)
  6. 确保执行安装脚本的kubeclt客户端节点或容器有base64的命令行工具,可通过执行base64 --help命令进行确认,如果缺少此命令(如使用鲲鹏提供的基于busybox的代理容器),可执行apk add --update coreutils进行安装。
  7. 至少有5个可用node(16c64g),包含taints和label(node.lixiang.com/group: pulsar)
taints:
  - effect: NoSchedule
    key: node.lixiang.com/group
    value: pulsa

部署步骤:

  1. 初始化pulsar。
  1.  -n 指定k8s namespace名称。
  2.  -k 指定helm release名称。
  3.  -c 是否由脚本创建namespace,如果ns已经存在,无需此参数。
./scripts/pulsar/prepare_helm_release.sh -n pulsar -k pulsar-bigdata -

脚本内主要的逻辑是创建pulsar需要的管理员用户权限(kubernetes secrets)。

执行完脚本后,可以通过 kubectl get secret -n pulsar 查看是否成功创建secrets,至少包含admin、broker-admin、proxy-admin、asymmetric-key四个secrets信息。

  1. 安装helm


helm upgrade --install pulsar-bigdata ./pulsar -n pulsar -f ./values-cell.yaml

可能遇到的问题:

proxy.nodePorts.http

proxy.nodePorts.pulsar

目前是通过nodePort方式进行配置的,如果和其他服务共用的Node,可能会出现端口冲突的问题。

如果冲突,调整这两个端口为其他端口即可。

  1. 确认proxy的lb模式为cluster,否则由local变为cluster。
  2. 检查安装是否成功
  1. 保证所有非Job类的pod都ready且处于running状态。
kubectl get pod

  1. b.找到其中的LoadBalancer 服务,通过telnet外部ip + port的方式,判断端口可联通。
kubectl get svc


   c.模拟数据生产、消费。 进入toolset容器

kubectl exec -ti pulsar-bigdata-toolset-0 -n pulsar /bin/bas

 创建topic

 没报错即可

./bin/pulsar-admin tenants create test
./bin/pulsar-admin namespaces create test/test
./bin/pulsar-admin topics create-partitioned-topic test/test/test -p 3

生产消息

./bin/pulsar-client produce test/test/test -m "test-message"
org.apache.pulsar.client.cli.PulsarClientTool - 1 messages successfully produced

 消费消息

./bin/pulsar-client  consume persistent://test/test/test -s test_2 -m NonDurable -n 1 -p Earliest
----- got message -----
key:[null], properties:[], content:test-message
2022-08-29T15:38:15,029+0800 [main] INFO  org.apache.pulsar.client.impl.PulsarClientImpl - Client closing. URL: pulsar://pulsar-bigdata-ontest-proxy:6650/
2022-08-29T15:38:15,038+0800 [main] INFO  org.apache.pulsar.client.impl.ConsumerImpl - [persistent://test/test/test-partition-2] [test_2] Closed consumer
2022-08-29T15:38:15,041+0800 [pulsar-client-io-1-1] INFO  org.apache.pulsar.client.impl.ConsumerImpl - [persistent://test/test/test-partition-1] [test_2] Closed consumer
2022-08-29T15:38:15,041+0800 [pulsar-client-io-1-1] INFO  org.apache.pulsar.client.impl.ConsumerImpl - [persistent://test/test/test-partition-0] [test_2] Closed consumer
2022-08-29T15:38:15,042+0800 [pulsar-client-internal-4-1] INFO  org.apache.pulsar.client.impl.MultiTopicsConsumerImpl - [persistent://test/test/test] [test_2] Closed Topics Consumer
2022-08-29T15:38:15,046+0800 [pulsar-client-io-1-1] INFO  org.apache.pulsar.client.impl.ClientCnx - [id: 0x16947710, L:/10.22.32.9:37706 ! R:pulsar-bigdata-ontest-proxy.pulsar.svc.cluster.local/172.16.141.255:6650] Disconnected
2022-08-29T15:38:15,050+0800 [pulsar-client-io-1-1] INFO  org.apache.pulsar.client.impl.ClientCnx - [id: 0x69a679bd, L:/10.22.32.9:37722 ! R:pulsar-bigdata-ontest-proxy.pulsar.svc.cluster.local/172.16.141.255:6650] Disconnected
2022-08-29T15:38:15,050+0800 [pulsar-client-io-1-1] INFO  org.apache.pulsar.client.impl.ClientCnx - [id: 0x8284dc52, L:/10.22.32.9:37724 ! R:pulsar-bigdata-ontest-proxy.pulsar.svc.cluster.local/172.16.141.255:6650] Disconnected
2022-08-29T15:38:15,050+0800 [pulsar-client-io-1-1] INFO  org.apache.pulsar.client.impl.ClientCnx - [id: 0x758c992f, L:/10.22.32.9:37726 ! R:pulsar-bigdata-ontest-proxy.pulsar.svc.cluster.local/172.16.141.255:6650] Disconnected
2022-08-29T15:38:17,064+0800 [main] INFO  org.apache.pulsar.client.cli.PulsarClientTool - 1 messages successfully consumed
  查看topic状态

查看topic状态

./bin/pulsar-admin topics partitioned-stats test/test/test

 删除topic

 没报错即可

./bin/pulsar-admin topics delete-partitioned-topic test/test/test
./bin/pulsar-admin namespaces delete test/test
./bin/pulsar-admin tenants delete test

移除集群:

执行脚本,清理helm_release

./scripts/pulsar/cleanup_helm_release.sh -n pulsar -k pulsar-bigdata 
./scripts/pulsar/clean_tls.sh -n pulsar -k pulsar-bigdata

执行完成后,检查是否删除干净。

kubectl get statefulset -n pulsar
kubectl get secret -n pulsar
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
4月前
|
Kubernetes Java 流计算
Flink application on k8s 有没有和 session 模式通过-C 指定额外的 jar 的相同功能啊?
Flink application on k8s 有没有和 session 模式通过-C 指定额外的 jar 的相同功能啊?
30 0
|
6月前
|
Kubernetes 流计算 容器
Flink on k8s的话,怎么在容器运行前初始化一些脚本?
Flink on k8s的话,怎么在容器运行前初始化一些脚本?
45 1
|
4月前
|
弹性计算 资源调度 Kubernetes
Flink三种集群模式,Standalone模式,Flink On YARN,Flink On K8S,这三种模式有啥优缺点,生产环境如何选择呢?
Flink三种集群模式,Standalone模式,Flink On YARN,Flink On K8S,这三种模式有啥优缺点,生产环境如何选择呢?
236 3
|
9月前
GreenPlum on K8s
GreenPlum on K8s
138 0
|
3月前
|
存储 Kubernetes Apache
pulsar on k8s 部署验证
pulsar on k8s 部署验证
|
6月前
|
SQL 分布式计算 Kubernetes
Hadoop on K8s 编排部署进阶篇
Hadoop on K8s 编排部署进阶篇
Hadoop on K8s 编排部署进阶篇
|
3月前
|
分布式计算 Kubernetes Java
spark on k8s native
spark on k8s native
|
SQL Prometheus 运维
Higress on K8s 5分钟开箱即用
Higress on K8s 5分钟开箱即用
Higress on K8s 5分钟开箱即用
|
9月前
|
Kubernetes 监控 NoSQL
Gitlab on k8s最佳实践
Gitlab on k8s最佳实践
490 1
|
9月前
|
消息中间件 存储 Prometheus
HA RabbitMQ on K8s helm部署实战
HA RabbitMQ on K8s helm部署实战
439 0