基于k8s环境pulsar集群之一:pulsar-manager部署

目录

一:pulsar-manager安装说明

二:pulsar-manager环境

四:pulsar-manager部署步骤

1.安装postgres

2.创建pulsar-manager库

3.验证pulsar-manger创建成功

4.执行安装pulsar-manger 

4.1.创建pvc

  4.2.创建svc,deployment

4.3. 执行pulsar-manager-pvc

4.4.验证pulsar-manager的pod,svc

4.5.设置pulsar-manager的admin用户

五: pulsar-manger 登录

1. 创建环境变量

2.添加pulsar-proxy代理

3.查看pulsar默认的pulsar和public​编辑

4. 查看pulsar集群的节点数


一:pulsar-manager安装说明

在第一篇文章中,我们详细介绍了Pulsar的部署流程。本篇则专注于如何利用Pulsar提供的管理工具来进行部署,以简化管理和维护工作,确保集群的高效运作。通过这些工具,管理员可以更加便捷地执行诸如配置管理、监控集群状态、调整集群设置以及进行故障排查等任务。这不仅提升了操作效率,还减少了人为错误的可能性,使得Pulsar集群的日常运维变得更加直观和可靠。


二:pulsar-manager环境

centos8\redhad8
k8s-1.23.17
helm3.15.3
storageClass: nfs-client
pulsar-manager:v0.2.0


三:pulsar-manager下载

registry.cn-hangzhou.aliyuncs.com/xxx/apachepulsar/pulsar-manager:v0.2.0 

四:pulsar-manager部署步骤

1.安装postgres

#安装的yaml
[root@k8s-master postgres]# cat postgres.yaml

---
apiVersion: v1
kind: Service
metadata:
  name: postgres-service
  namespace: pulsar
  labels:
    app: postgres
spec:
  selector:
    app: postgres
  ports:
  - name: pgport
    port: 5432
  clusterIP: None
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: postgres
  namespace: pulsar
spec:
  selector:
    matchLabels:
      app: postgres
  serviceName: "postgres-service"
  template:
    metadata:
      labels:
        app: postgres
    spec:
      terminationGracePeriodSeconds: 10
      #      nodeSelector:
      #        public: ops
      nodeSelector:
        kubernetes.io/hostname: k8s-master
      containers:
      - name: postgres
        image: registry.cn-hangzhou.aliyuncs.com/renshaojin/postgres:12.8
        imagePullPolicy: IfNotPresent
        env:
        # 配置postgres的密码
        - name: POSTGRES_PASSWORD
          value: "pulsar"
        - name: ALLOW_IP_RANGE
          value: "0.0.0.0/0"
        ports:
        - name: pgport
          protocol: TCP
          containerPort: 5432
        #resources:
        #  limits:
        #    cpu: 8000m
        #    memory: 8Gi
        #  requests:
        #    cpu: 1000m
        #    memory: 1Gi
        volumeMounts:
        - name: postgresdata
          mountPath: /var/lib/postgresql
      securityContext:
        runAsUser: 999
        fsGroup: 999
  volumeClaimTemplates:
  - metadata:
      name: postgresdata
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "nfs-client"
      resources:
        requests:
          storage: 5Gi


#安装postgres

[root@k8s-master postgres]# kubectl apply -f postgres.yaml
service/postgres-service created
statefulset.apps/postgres created

[root@k8s-master postgres]# kubectl -n pulsar get pod,svc |grep postgres
pod/postgres-0                 1/1     Running     0              75s
service/postgres-service   ClusterIP   None            <none>        5432/TCP                              75s

2.创建pulsar-manager库

登录到pg上,创建pulsar-manager库

[root@k8s-master postgres]# kubectl -n pulsar exec -it postgres-0 -- bash
postgres@postgres-0:/$

postgres@postgres-0:/$ psql -U postgres -W
Password:  此处直接输入pulsar

postgres=# \l
                                 List of databases
   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges
-----------+----------+----------+------------+------------+-----------------------
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
(3 rows)


postgres=# CREATE DATABASE pulsar_manager;
CREATE DATABASE

postgres=# \l
                                   List of databases
      Name      |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges
----------------+----------+----------+------------+------------+-----------------------
 postgres       | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 pulsar_manager | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 template0      | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
                |          |          |            |            | postgres=CTc/postgres
 template1      | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
                |          |          |            |            | postgres=CTc/postgres
(4 rows)


postgres=# \c pulsar_manager;
Password:  此处输入pulsar
You are now connected to database "pulsar_manager" as user "postgres".
pulsar_manager=#

 #创建表:

CREATE TABLE IF NOT EXISTS environments (
  name varchar(256) NOT NULL,
  broker varchar(1024) NOT NULL,
  CONSTRAINT PK_name PRIMARY KEY (name),
  UNIQUE (broker)
);
 
CREATE TABLE IF NOT EXISTS topics_stats (
  topic_stats_id BIGSERIAL PRIMARY KEY,
  environment varchar(255) NOT NULL,
  cluster varchar(255) NOT NULL,
  broker varchar(255) NOT NULL,
  tenant varchar(255) NOT NULL,
  namespace varchar(255) NOT NULL,
  bundle varchar(255) NOT NULL,
  persistent varchar(36) NOT NULL,
  topic varchar(255) NOT NULL,
  producer_count BIGINT,
  subscription_count BIGINT,
  msg_rate_in double precision,
  msg_throughput_in double precision,
  msg_rate_out double precision,
  msg_throughput_out double precision,
  average_msg_size double precision,
  storage_size double precision,
  time_stamp BIGINT
);
 
CREATE TABLE IF NOT EXISTS publishers_stats (
  publisher_stats_id BIGSERIAL PRIMARY KEY,
  producer_id BIGINT,
  topic_stats_id BIGINT NOT NULL,
  producer_name varchar(255) NOT NULL,
  msg_rate_in double precision,
  msg_throughput_in double precision,
  average_msg_size double precision,
  address varchar(255),
  connected_since varchar(128),
  client_version varchar(36),
  metadata text,
  time_stamp BIGINT,
  CONSTRAINT fk_publishers_stats_topic_stats_id FOREIGN KEY (topic_stats_id) References topics_stats(topic_stats_id)
);
 
CREATE TABLE IF NOT EXISTS replications_stats (
  replication_stats_id BIGSERIAL PRIMARY KEY,
  topic_stats_id BIGINT NOT NULL,
  cluster varchar(255) NOT NULL,
  connected BOOLEAN,
  msg_rate_in double precision,
  msg_rate_out double precision,
  msg_rate_expired double precision,
  msg_throughput_in double precision,
  msg_throughput_out double precision,
  msg_rate_redeliver double precision,
  replication_backlog BIGINT,
  replication_delay_in_seconds BIGINT,
  inbound_connection varchar(255),
  inbound_connected_since varchar(255),
  outbound_connection varchar(255),
  outbound_connected_since varchar(255),
  time_stamp BIGINT,
  CONSTRAINT FK_replications_stats_topic_stats_id FOREIGN KEY (topic_stats_id) References topics_stats(topic_stats_id)
);
 
CREATE TABLE IF NOT EXISTS subscriptions_stats (
  subscription_stats_id BIGSERIAL PRIMARY KEY,
  topic_stats_id BIGINT NOT NULL,
  subscription varchar(255) NULL,
  msg_backlog BIGINT,
  msg_rate_expired double precision,
  msg_rate_out double precision,
  msg_throughput_out double precision,
  msg_rate_redeliver double precision,
  number_of_entries_since_first_not_acked_message BIGINT,
  total_non_contiguous_deleted_messages_range BIGINT,
  subscription_type varchar(16),
  blocked_subscription_on_unacked_msgs BOOLEAN,
  time_stamp BIGINT,
  UNIQUE (topic_stats_id, subscription),
  CONSTRAINT FK_subscriptions_stats_topic_stats_id FOREIGN KEY (topic_stats_id) References topics_stats(topic_stats_id)
);
 
CREATE TABLE IF NOT EXISTS consumers_stats (
  consumer_stats_id BIGSERIAL PRIMARY KEY,
  consumer varchar(255) NOT NULL,
  topic_stats_id BIGINT NOT NUll,
  replication_stats_id BIGINT,
  subscription_stats_id BIGINT,
  address varchar(255),
  available_permits BIGINT,
  connected_since varchar(255),
  msg_rate_out double precision ,
  msg_throughput_out double precision   ,
  msg_rate_redeliver double precision   ,
  client_version varchar(36),
  time_stamp BIGINT,
  metadata text
);
 
CREATE TABLE IF NOT EXISTS tokens (
  token_id BIGSERIAL PRIMARY KEY,
  role varchar(256) NOT NULL,
  description varchar(128),
  token varchar(1024) NOT NUll,
  UNIQUE (role)
);
 
CREATE TABLE IF NOT EXISTS users (
  user_id BIGSERIAL PRIMARY KEY,
  access_token varchar(256),
  name varchar(256) NOT NULL,
  description varchar(128),
  email varchar(256),
  phone_number varchar(48),
  location varchar(256),
  company varchar(256),
  expire BIGINT,
  password varchar(256),
  UNIQUE (name)
);
 
CREATE TABLE IF NOT EXISTS roles (
  role_id BIGSERIAL PRIMARY KEY,
  role_name varchar(256) NOT NULL,
  role_source varchar(256) NOT NULL,
  description varchar(128),
  resource_id BIGINT NOT NULL,
  resource_type varchar(48) NOT NULL,
  resource_name varchar(48) NOT NULL,
  resource_verbs varchar(256) NOT NULL,
  flag INT NOT NULL
);
 
CREATE TABLE IF NOT EXISTS tenants (
  tenant_id BIGSERIAL PRIMARY KEY,
  tenant varchar(255) NOT NULL,
  admin_roles varchar(255),
  allowed_clusters varchar(255),
  environment_name varchar(255),
  UNIQUE(tenant)
);
 
CREATE TABLE IF NOT EXISTS namespaces (
  namespace_id BIGSERIAL PRIMARY KEY,
  tenant varchar(255) NOT NULL,
  namespace varchar(255) NOT NULL,
  UNIQUE(tenant, namespace)
);
 
CREATE TABLE IF NOT EXISTS role_binding(
  role_binding_id BIGSERIAL PRIMARY KEY,
  name varchar(256) NOT NULL,
  description varchar(256),
  role_id BIGINT NOT NULL,
  user_id BIGINT NOT NULL
);

3.验证pulsar-manger创建成功

#查看表

pulsar_manager=# \d
                              List of relations
 Schema |                     Name                      |   Type   |  Owner
--------+-----------------------------------------------+----------+----------
 public | consumers_stats                               | table    | postgres
 public | consumers_stats_consumer_stats_id_seq         | sequence | postgres
 public | environments                                  | table    | postgres
 public | namespaces                                    | table    | postgres
 public | namespaces_namespace_id_seq                   | sequence | postgres
 public | publishers_stats                              | table    | postgres
 public | publishers_stats_publisher_stats_id_seq       | sequence | postgres
 public | replications_stats                            | table    | postgres
 public | replications_stats_replication_stats_id_seq   | sequence | postgres
 public | role_binding                                  | table    | postgres
 public | role_binding_role_binding_id_seq              | sequence | postgres
 public | roles                                         | table    | postgres
 public | roles_role_id_seq                             | sequence | postgres
 public | subscriptions_stats                           | table    | postgres
 public | subscriptions_stats_subscription_stats_id_seq | sequence | postgres
 public | tenants                                       | table    | postgres
 public | tenants_tenant_id_seq                         | sequence | postgres
 public | tokens                                        | table    | postgres
 public | tokens_token_id_seq                           | sequence | postgres
 public | topics_stats                                  | table    | postgres
 public | topics_stats_topic_stats_id_seq               | sequence | postgres
 public | users                                         | table    | postgres
 public | users_user_id_seq                             | sequence | postgres
(23 rows)


 

4.执行安装pulsar-manger 

4.1.创建pvc


[root@k8s-master pulsar-manager]# cat pulsar-manager-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pulsar-manager-pvc
  namespace: pulsar
spec:
  storageClassName: "nfs-client"
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 2Gi


  
4.2.创建svc,deployment

 [root@k8s-master pulsar-manager]# cat pulsar-manager.yaml
---
apiVersion: v1
kind: Service
metadata:
  name: pulsar-manager
  namespace: pulsar
  labels:
    app: pulsar-manager
  annotations:
    pulsar-manager.io/scrape: 'true'
spec:
  selector:
    app: pulsar-manager
  ports:
  - name: sport
    port: 7750
    protocol: TCP
    targetPort: 7750
  - name: nport
    port: 9527
    protocol: TCP
    targetPort: 9527
    nodePort: 32527
  type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: pulsar-manager
  namespace: pulsar
  labels:
    app: pulsar-manager
spec:
  replicas: 1
  selector:
    matchLabels:
      app: pulsar-manager
  template:
    metadata:
      name: pulsar-manager
      labels:
        app: pulsar-manager
    spec:
      containers:
      - name: pulsar-manager
        image: registry.cn-hangzhou.aliyuncs.com/renshaojin/pulsar-manager:v0.2.0
        imagePullPolicy: IfNotPresent
        ports:
        - name: sport
          containerPort: 7750
        - name: nport
          containerPort: 9527
        env:
        - name: REDIRECT_HOST
          value: "http://127.0.0.1"
        - name: REDIRECT_PORT
          value: "9527"
        - name: DRIVER_CLASS_NAME
          value: "org.postgresql.Driver"
        - name: URL
          value: "jdbc:postgresql://postgres-service.pulsar.svc:5432/pulsar_manager"
        - name: USERNAME
          value: "postgres"
        - name: PASSWORD
          value: "pulsar"
        - name: LOG_LEVEL
          value: "DEBUG"
        # 开启JWT认证后, 这里需要指定pulsar-token-admin这个Secret中的JWT Token
        #- name: JWT_TOKEN
        #  value: "<JWT TOKEN>"
        volumeMounts:
        - name: data
          mountPath: /data
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: pulsar-manager-pvc


4.3. 执行pulsar-manager-pvc

[root@k8s-master pulsar-manager]# kubectl apply -f pulsar-manager-pvc.yaml
persistentvolumeclaim/pulsar-manager-pvc created
[root@k8s-master pulsar-manager]# kubectl apply -f pulsar-manager.yaml
service/pulsar-manager created
deployment.apps/pulsar-manager created

4.4.验证pulsar-manager的pod,svc

[root@k8s-master pulsar-manager]# kubectl -n pulsar get po,svc|grep pulsar-manager
pod/pulsar-manager-7d464db5d5-hzp5v   1/1     Running       0              3m39s
service/pulsar-manager     NodePort    10.104.246.186   <none>        7750:31418/TCP,9527:32527/TCP         8m53s

4.5.设置pulsar-manager的admin用户

CSRF_TOKEN=$(curl http://localhost:31418/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://localhost:31418/pulsar-manager/users/superuser \
    -d '{"name": "admin", "password": "pulsar", "description": "test", "email": "username@test.org"}'

五: pulsar-manger 登录


    
    
image-20240831235216099

1. 创建环境变量

2.添加pulsar-proxy代理

3.查看pulsar默认的pulsar和public

可看到pulsar集群中默认的两租户。

4. 查看pulsar集群的节点数

到此,可看到pulsar集群中默认的两租户。 所有的pulsar,pulsar-manager安装部署搭建已完成。也可以证明出pulsar集群部署成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ToString_1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值