首页 > 其他分享 >Strimzi从入门到精通系列之一:部署Cluster Operator

Strimzi从入门到精通系列之一:部署Cluster Operator

时间:2023-09-11 10:03:08浏览次数:35  
标签:cluster Strimzi namespace operator Kafka Cluster Operator



Strimzi从入门到精通系列之一:部署Cluster Operator

  • 一、认识Strimzi
  • 二、Strimzi的核心知识点
  • 三、认识Cluster Operator
  • 四、部署 Cluster Operator 以监视单个命名空间
  • 五、部署 Cluster Operator 以监视多个命名空间
  • 六、部署 Cluster Operator 以监视所有命名空间


一、认识Strimzi

  • Strimzi是一款用于在Kubernetes集群上管理Apache Kafka的开源项目。它使得在Kubernetes上部署、管理和监控Kafka成为可能,提供了一种高度可扩展和可靠的解决方案。Strimzi支持自动缩放、配置灵活、内置监控和告警等功能。通过使用Strimzi,用户可以将Kafka集成到Kubernetes和OpenShift中,并享受到自动化、简单部署和可靠性的好处。

二、Strimzi的核心知识点

  1. Kafka在Kubernetes中的部署和管理:Strimzi提供了一种足够简单且可扩展的方法来在Kubernetes中部署和管理Apache Kafka集群。
  2. 操作Kafka集群:Strimzi可用于对Kafka集群进行管理和操作,包括创建和删除Kafka Topic、更改Kafka Broker配置、动态增加和减少Broker数量等。
  3. 与Kubernetes的集成:Strimzi与Kubernetes集成得非常紧密,使得Kafka集群可以受益于Kubernetes为应用程序提供的优点,如自动化、弹性、伸缩等。
  4. 自动缩放和容错:Strimzi支持Kafka自动扩容和容错,可以根据负载自动增加或减少Kafka Broker数量,同时还能够自动平衡partition分布,从而提高Kafka的可靠性和可用性。
  5. 监控和告警:Strimzi内置了监控和告警功能,可以监控Kafka集群的健康状况和性能数据,提供对Kafka集群的可视化监控和警报功能。
  6. 灵活的配置:Strimzi提供了灵活的配置选项,可以灵活地配置Kafka Broker和Topic的属性、日志级别、安全性和认证等。
  7. 扩展和定制:Strimzi是一个扩展性强、可定制的开源项目,用户可以根据自己的需求进行定制和扩展,从而满足特定的业务要求。

三、认识Cluster Operator

  • Strimzi的Cluster Operator是一个自定义的Kubernetes操作符,用于管理和运行Kafka集群。
  • 它是Strimzi的核心组件之一,负责监视Kafka集群的运行状态、处理集群级别的配置变更、创建、删除和更新Kafka集群资源等。
  • Cluster Operator可以自动化部署、升级和维护Kafka集群,使得Kafka集群可以自动化、高效地运行在Kubernetes中。
  • 主要用途是将Kafka和Kubernetes整合在一起,提供了一种简单、可扩展且可靠的方式来管理Kafka集群。

四、部署 Cluster Operator 以监视单个命名空间

此过程演示如何部署 Cluster Operator 以监视 Kubernetes 集群中单个命名空间中的 Strimzi 资源。

先决条件

  • 您需要一个有权创建和管理 CustomResourceDefinition 和 RBAC(ClusterRole 和 RoleBinding)资源的帐户。

程序

  1. 编辑 Strimzi 安装文件以使用 Cluster Operator 将安装到的命名空间。
    例如,在此过程中,Cluster Operator 安装到命名空间 my-cluster-operator-namespace 中。

在 Linux 上,使用:

sed -i 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml

在MacOS上,使用:

sed -i '' 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml

2.部署集群操作器:

kubectl create -f install/cluster-operator -n my-cluster-operator-namespace

3.检查部署状态:

kubectl get deployments -n my-cluster-operator-namespace

输出显示部署名称和准备情况

NAME                      READY  UP-TO-DATE  AVAILABLE
strimzi-cluster-operator  1/1    1           1

READY 显示已准备好/预期的副本数量。当 AVAILABLE 输出显示 1 时,部署成功。

五、部署 Cluster Operator 以监视多个命名空间

此过程演示如何部署 Cluster Operator 以跨 Kubernetes 集群中的多个命名空间监视 Strimzi 资源。

先决条件

  • 您需要一个有权创建和管理 CustomResourceDefinition 和 RBAC(ClusterRole 和 RoleBinding)资源的帐户。

程序

  1. 编辑 Strimzi 安装文件以使用 Cluster Operator 将安装到的命名空间。
    例如,在此过程中,Cluster Operator 安装到命名空间 my-cluster-operator-namespace 中。

在 Linux 上,使用:

sed -i 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml

在MacOS上使用:

sed -i '' 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml

2.编辑 install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml 文件,将 Cluster Operator 将监视的所有命名空间的列表添加到 STRIMZI_NAMESPACE 环境变量中。

例如,在此过程中,Cluster Operator 将监视命名空间 Watched-namespace-1、watched-namespace-2、watched-namespace-3。

apiVersion: apps/v1
kind: Deployment
spec:
  # ...
  template:
    spec:
      serviceAccountName: strimzi-cluster-operator
      containers:
      - name: strimzi-cluster-operator
        image: quay.io/strimzi/operator:0.35.1
        imagePullPolicy: IfNotPresent
        env:
        - name: STRIMZI_NAMESPACE
          value: watched-namespace-1,watched-namespace-2,watched-namespace-3

3.对于列出的每个命名空间,安装 RoleBindings。

在此示例中,我们将这些命令中的 Watched-namespace 替换为上一步中列出的命名空间,并对 Watched-Namespace-1、Watched-Namespace-2、Watched-Namespace-3 重复它们:

kubectl create -f install/cluster-operator/020-RoleBinding-strimzi-cluster-operator.yaml -n <watched_namespace>
kubectl create -f install/cluster-operator/023-RoleBinding-strimzi-cluster-operator.yaml -n <watched_namespace>
kubectl create -f install/cluster-operator/031-RoleBinding-strimzi-cluster-operator-entity-operator-delegation.yaml -n <watched_namespace>

4.部署集群操作器:

kubectl create -f install/cluster-operator -n my-cluster-operator-namespace

5.检查部署状态:

kubectl get deployments -n my-cluster-operator-namespace

输出显示部署名称和准备情况

NAME                      READY  UP-TO-DATE  AVAILABLE
strimzi-cluster-operator  1/1    1           1

READY 显示已准备好/预期的副本数量。当 AVAILABLE 输出显示 1 时,部署成功。

六、部署 Cluster Operator 以监视所有命名空间

此过程演示如何部署 Cluster Operator 以监视 Kubernetes 集群中所有命名空间中的 Strimzi 资源。

在此模式下运行时,Cluster Operator 会自动管理创建的任何新命名空间中的集群。

先决条件

  • 您需要一个有权创建和管理 CustomResourceDefinition 和 RBAC(ClusterRole 和 RoleBinding)资源的帐户。

程序

  1. 编辑 Strimzi 安装文件以使用 Cluster Operator 将安装到的命名空间。
    例如,在此过程中,Cluster Operator 安装到命名空间 my-cluster-operator-namespace 中。

在 Linux 上,使用:

sed -i 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml

在MacOS上使用:

sed -i '' 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml

2.编辑 install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml 文件,将 STRIMZI_NAMESPACE 环境变量的值设置为 *。

apiVersion: apps/v1
kind: Deployment
spec:
  # ...
  template:
    spec:
      # ...
      serviceAccountName: strimzi-cluster-operator
      containers:
      - name: strimzi-cluster-operator
        image: quay.io/strimzi/operator:0.35.1
        imagePullPolicy: IfNotPresent
        env:
        - name: STRIMZI_NAMESPACE
          value: "*"
        # ...

3.创建 ClusterRoleBindings,向 Cluster Operator 授予所有命名空间的集群范围访问权限。

kubectl create clusterrolebinding strimzi-cluster-operator-namespaced --clusterrole=strimzi-cluster-operator-namespaced --serviceaccount my-cluster-operator-namespace:strimzi-cluster-operator
kubectl create clusterrolebinding strimzi-cluster-operator-watched --clusterrole=strimzi-cluster-operator-watched --serviceaccount my-cluster-operator-namespace:strimzi-cluster-operator
kubectl create clusterrolebinding strimzi-cluster-operator-entity-operator-delegation --clusterrole=strimzi-entity-operator --serviceaccount my-cluster-operator-namespace:strimzi-cluster-operator

4.将 Cluster Operator 部署到您的 Kubernetes 集群。

kubectl create -f install/cluster-operator -n my-cluster-operator-namespace

5.检查部署状态:

kubectl get deployments -n my-cluster-operator-namespace

输出显示部署名称和准备情况

NAME                      READY  UP-TO-DATE  AVAILABLE
strimzi-cluster-operator  1/1    1           1

READY 显示已准备好/预期的副本数量。当 AVAILABLE 输出显示 1 时,部署成功。


标签:cluster,Strimzi,namespace,operator,Kafka,Cluster,Operator
From: https://blog.51cto.com/u_12080573/7432207

相关文章

  • redis cluster集群安装(CentOS7 + redis 5.0.14)
    Linux系统-部署-运维系列导航 rediscluster介绍redis最开始使用主从模式做集群,若master宕机需要手动配置slave转为master;后来为了高可用提出来哨兵模式,该模式下有一个哨兵监视master和slave,若master宕机可自动将slave转为master,但它也有一个问题,就是不能动态扩充;所以在3.x提......
  • ORACLE 11.2.0.4 RAC Cluster not starting cssd with Cannot get GPnP profile
       最近,处理一次oracle11.2.0.4raccluster由于cssd无法启动,导致集群一个节点的CRS集群无法正常启动的故障。原本,计划变更是从ASM剔除磁盘,解除存储到数据库服务器的映射;磁盘已经成功从ASM剔除,也已经成功从存储解除到操作系统的映射,为了验证磁盘剔除是否对集群有影响,重启了......
  • K8S HPA在CRD Operator中的应用
    K8SHPA在TrinoOperator中的应用HPA(HorizontalPodAutoscaler)水平扩缩意味着对增加的负载的响应是部署更多的Pod。这与“垂直(Vertical)”扩缩不同,对于Kubernetes,垂直扩缩意味着将更多资源(例如:内存或CPU)分配给已经为工作负载运行的Pod。https://kubernetes.io/zh-cn/do......
  • Flink 1.17教程:算子链Operator Chain
    算子链OperatorChain在ApacheFlink中,算子链(OperatorChaining)是将多个操作符(算子)连接在一起形成一个链式结构的优化技术。算子链的作用是将多个操作符合并为一个单一的任务单元,以减少通信开销、提高执行效率和减少资源占用。通俗来说,算子链的作用可以比喻为将多个操作合并成一......
  • 20.集群因子(Clustering Factor)
    集群因子用于判断索引回表需要消耗的物理I/O次数。这里在测试表test上创建一个索引:createindexidx_idontest(object_id);selectowner,index_name,clustering_factorfromdba_indexeswhereowner='TEST'andindex_name='IDX_ID';结果展示:OWNER......
  • 玩转 PI 系列-看起来像服务器的 ARM 开发板矩阵-Firefly Cluster Server
    前言基于我个人的工作内容和兴趣,想要在家里搞一套服务器集群,用于容器/K8s等方案的测试验证。考虑过使用二手服务器,比如DellR730,还搞了一套配置清单,如下:DellR7303.5尺寸规格硬盘CPU:2686v4*2内存:16g*8存储:480Gintelssd系统盘+6tsas希捷*2个数据盘RAID卡:h73......
  • 玩转 PI 系列-看起来像服务器的 ARM 开发板矩阵-Firefly Cluster Server
    前言基于我个人的工作内容和兴趣,想要在家里搞一套服务器集群,用于容器/K8s等方案的测试验证。考虑过使用二手服务器,比如DellR730,还搞了一套配置清单,如下:DellR7303.5尺寸规格硬盘CPU:2686v4*2内存:16g*8存储:480Gintelssd系统盘+6tsas希捷*2个数据盘RAID卡:h7......
  • 【MySQL 8.0】在组复制(MGR)的基础上创建InnoDB Cluster
    [root@node04~]#wgethttps://dev.mysql.com/get/Downloads/MySQL-Shell/mysql-shell-8.0.32-1.el7.x86_64.rpm[root@node04~]#yumlocalinstallmysql-shell-8.0.32-1.el7.x86_64.rpm-y[root@node04~]#mysqlshMySQLJS>\connectroot@node01:3306MySQL......
  • kubebuilder 构建operator
    1.wsl上配置环境环境window环境上安装wsl,安装golang安装kubebuilder:wgethttps://github.com/kubernetes-sigs/kubebuilder/releases/download/v2.3.1/kubebuilder_2.3.1_linux_amd64.tar.gz tar-zxvfkubebuilder_2.3.1_linux_amd64.tar.gz#带kubectl,etcd等 mvkubebuild......
  • IfcArithmeticOperatorEnum
    IfcArithmeticOperatorEnum类型定义IfcAlgorithmicOperatorEnum指定关系所隐含的算术运算的形式。IFC2x2中的新枚举。 EnumerationdefinitionConstantDescriptionADD DIVIDE MULTIPLY SUBTRACT  EXPRESSSpecificationTYPEIfcArithmeticOpe......