Strimzi从入门到精通系列之一:部署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 时,部署成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

最笨的羊羊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值