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的核心知识点
- Kafka在Kubernetes中的部署和管理:Strimzi提供了一种足够简单且可扩展的方法来在Kubernetes中部署和管理Apache Kafka集群。
- 操作Kafka集群:Strimzi可用于对Kafka集群进行管理和操作,包括创建和删除Kafka Topic、更改Kafka Broker配置、动态增加和减少Broker数量等。
- 与Kubernetes的集成:Strimzi与Kubernetes集成得非常紧密,使得Kafka集群可以受益于Kubernetes为应用程序提供的优点,如自动化、弹性、伸缩等。
- 自动缩放和容错:Strimzi支持Kafka自动扩容和容错,可以根据负载自动增加或减少Kafka Broker数量,同时还能够自动平衡partition分布,从而提高Kafka的可靠性和可用性。
- 监控和告警:Strimzi内置了监控和告警功能,可以监控Kafka集群的健康状况和性能数据,提供对Kafka集群的可视化监控和警报功能。
- 灵活的配置:Strimzi提供了灵活的配置选项,可以灵活地配置Kafka Broker和Topic的属性、日志级别、安全性和认证等。
- 扩展和定制: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)资源的帐户。
程序
- 编辑 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)资源的帐户。
程序
- 编辑 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)资源的帐户。
程序
- 编辑 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 时,部署成功。