rancher  kafka helm 安装

rancher  kafka helm 安装

Kafka是用于构建实时数据管道和流应用程序的分布式流平台。它具有水平可伸缩性,容错性,快速快速性,可在数千家公司中投入生产。

TL; DR;

$ helm install <helm-repo>/kafka

介绍

该图表使用Helm软件包管理器在Kubernetes集群上引导了Kafka部署。

Bitnami图表可与Kubeapps一起用于在群集中部署和管理Helm Charts。该Helm图表已在Bitnami Kubernetes生产运行时(BKPR)之上进行了测试。部署BKPR以获取自动化TLS证书,对应用程序进行日志记录和监视。

先决条件

  • 总督1.12+
  • Helm 2.11+或Helm 3.0-beta3 +
  • 基础架构中的PV供应商支持

安装图表

要使用发布名称安装图表my-release

$ helm install --name my-release <helm-repo>/kafka

这些命令以默认配置在Kubernetes集群上部署Kafka。“参数”部分列出了可以在安装过程中配置的参数。

提示:列出所有使用的版本helm list

卸载图表

要卸载/删除my-release部署:

$ helm delete my-release

该命令将删除与图表关联的所有Kubernetes组件并删除发行版。

参量

下表列出了Kafka图表的可配置参数及其默认值。

参数描述默认
global.imageRegistry全局Docker映像注册表nil
global.imagePullSecrets全局Docker注册表机密名称作为数组[] (不向已部署的吊舱添加图像拉取秘密)
global.storageClass用于动态配置的全局存储类nil
image.registry卡夫卡图像注册表docker.io
image.repositoryKafka图片名称bitnami/kafka
image.tagKafka图片标签{VERSION}
image.pullPolicyKafka图片拉取政策IfNotPresent
image.pullSecrets将docker-registry秘密名称指定为数组[] (不向已部署的吊舱添加图像拉取秘密)
image.debug指定是否应设置调试值false
nameOverride使用字符串部分覆盖kafka.fullname模板的字符串(将附加发行版本名称)nil
fullnameOverride使用字符串完全覆盖kafka.fullname模板的字符串nil
volumePermissions.enabled启用用于更改数据目录中的卷许可权的初始化容器(对于默认的k8runAsUserfsUser值不起作用的情况)false
volumePermissions.image.registry初始化容器容量许可映像注册表docker.io
volumePermissions.image.repository初始化容器容量许可映像名称bitnami/minideb
volumePermissions.image.tag初始化容器体积许可图像标签stretch
volumePermissions.image.pullPolicy初始化容器容量许可映像拉取策略Always
volumePermissions.resources初始化容器资源请求/限制nil
updateStrategy有状态集的更新策略RollingUpdate
rollingUpdatePartition分区更新策略nil
podDisruptionBudget.maxUnavailable同时下降的豆荚数量上限1
replicaCountKafka节点数1
configKafka的配置文件nil
allowPlaintextListener允许使用PLAINTEXT侦听器true
listeners套接字服务器侦听的地址。nil
advertisedListeners代理将向生产者和消费者通告的主机名和端口。nil
listenerSecurityProtocolMap协议->侦听器映射。nil
interBrokerListenerName经纪人应进行通信的侦听器。nil
brokerIdKafka节点的ID-1
deleteTopicEnable切换是否启用主题删除。false
heapOptsKafka的Java堆大小。-Xmx1024m -Xms1024m
logFlushIntervalMessages强制将数据刷新到磁盘之前要接受的消息数。10000
logFlushIntervalMs在我们强制刷新之前,消息可以在日志中停留的最长时间。1000
logRetentionBytes基于大小的日志保留策略。_1073741824
logRetentionCheckIntervalMs检查日志段以查看是否可以删除的时间间隔。300000
logRetentionHours日志文件的最小年龄(可以根据年龄进行删除)。168
logSegmentBytes日志段文件的最大大小。达到此大小后,将创建一个新的日志段。_1073741824
logMessageFormatVersion记录消息格式版本。``
logsDirs以逗号分隔的目录列表,用于存储日志文件。/bitnami/kafka/data
maxMessageBytesKafka允许的最大记录批量。1000012
defaultReplicationFactor自动创建主题的默认复制因子1
offsetsTopicReplicationFactor偏移量主题的复制因子1
transactionStateLogReplicationFactor交易主题的复制因子1
transactionStateLogMinIsr覆盖交易主题的min.insync.replicas配置1
numIoThreads执行磁盘I / O的线程数。8
numNetworkThreads处理网络请求的线程数。3
numPartitions每个主题的默认日志分区数。1
numRecoveryThreadsPerDataDir每个数据目录在启动时用于日志恢复以及在关闭时用于刷新的线程数。1
socketReceiveBufferBytes套接字服务器使用的接收缓冲区(SO_RCVBUF)。102400
socketRequestMaxBytes套接字服务器将接受的请求的最大大小(防止OOM保护)。_104857600
socketSendBufferBytes套接字服务器使用的发送缓冲区(SO_SNDBUF)。102400
zookeeperConnectionTimeoutMs连接到Zookeeper的超时时间(以毫秒为单位)。6000
extraEnvVars要添加到Kafka Pod的额外环境变量nil
sslEndpointIdentificationAlgorithm使用服务器证书验证服务器主机名的端点标识算法。https
auth.enabled切换以启用kafka身份验证。false
auth.existingSecret现有机密的名称,其中包含brokerUser,interBrokerUser和zookeeperUser的凭据。nil
auth.certificatesSecret现有密钥的名称,其中包含将由Kafka使用的证书文件。nil
auth.certificatesPassword上述证书的密码(如果受密码保护)。nil
auth.brokerUserKafka客户端用户。user
auth.brokerPasswordKafka客户端密码。nil
auth.interBrokerUserKafka经纪人间通讯用户admin
auth.interBrokerPasswordKafka Inter Broker通信密码。nil
auth.zookeeperUserKafka Zookeeper用户。nil
auth.zookeeperPasswordKafka Zookeeper密码。nil
securityContext.enabled启用安全上下文true
securityContext.fsGroup容器的组ID1001
securityContext.runAsUser容器的用户标识1001
clusterDomainKubernetes集群域cluster.local
service.typeKubernetes服务类型ClusterIP
service.port卡夫卡港9092
service.nodePortKubernetes服务nodePortnil
service.loadBalancerIP用于Kafka服务的loadBalancerIPnil
service.annotations服务注释``
externalAccess.enabled启用Kubernetes外部集群对Kafka代理的访问false
externalAccess.service.typeKubernetes Servive类型,用于外部访问。它可以是NodePort或LoadBalancerLoadBalancer
externalAccess.service.port当服务类型为LoadBalancer时,用于外部访问的Kafka端口19092
externalAccess.service.loadBalancerIPKafka代理的负载均衡器IP数组。[]
externalAccess.service.domain服务类型为NodePort时用于配置Kafka外部侦听器的域或外部ipnil
externalAccess.service.nodePort服务类型为NodePort时用于配置Kafka外部侦听器的节​​点端口阵列[]
serviceAccount.create启用为kafka pod创建ServiceAccountfalse
serviceAccount.name创建的服务帐号名称使用kafka.fullname模板生成
persistence.enabled使用PVC启用Kafka持久性,请注意Zookeeper持久性不受影响true
persistence.existingClaim提供一个现有的PersistentVolumeClaim,该值作为模板进行评估。nil
persistence.storageClass卡夫卡卷的PVC存储等级nil
persistence.accessMode卡夫卡卷的PVC访问模式ReadWriteOnce
persistence.size卡夫卡量的PVC储存要求8Gi
persistence.annotationsPVC的注释{}
nodeSelector吊舱分配的节点标签{}
tolerations吊舱分配的公差标签[]
affinity节点/吊舱亲和度地图{}
resourcesCPU /内存资源请求/限制内存:256Mi,CPU:250m
livenessProbe.enabled你想启用一个lifesProbed吗true
livenessProbe.initialDelaySeconds启动活力探测之前的延迟30
livenessProbe.periodSeconds多久执行一次探测10
livenessProbe.timeoutSeconds探测超时时5
livenessProbe.failureThreshold成功后将被视为探针的最小连续失败数。6
livenessProbe.successThreshold探测失败后被认为成功的最小连续成功次数1
readinessProbe.enabled您是否希望准备就绪,启用探针true
readinessProbe.initialDelaySeconds启动活力探测之前的延迟5
readinessProbe.periodSeconds多久执行一次探测10
readinessProbe.timeoutSeconds探测超时时5
readinessProbe.failureThreshold成功后将被视为探针的最小连续失败数。6
readinessProbe.successThreshold探测失败后被认为成功的最小连续成功次数1
metrics.kafka.enabled是否创建独立的Kafka导出程序以公开Kafka指标false
metrics.kafka.image.registryKafka导出程序映像注册表docker.io
metrics.kafka.image.repositoryKafka导出程序映像名称bitnami/kafka-exporter
metrics.kafka.image.tagKafka出口商图片标签{TAG_NAME}
metrics.kafka.image.pullPolicy卡夫卡出口商形象拉动政策IfNotPresent
metrics.kafka.image.pullSecrets将docker-registry秘密名称指定为数组[] (不向已部署的吊舱添加图像拉取秘密)
metrics.kafka.interval使用Prometheus Operator时Prometheus抓取Kafka指标的时间间隔10s
metrics.kafka.portKafka Exporter Port以Prometheus格式公开指标以供抓取9308
metrics.kafka.resources允许设置kafka-exporter pod的资源限制{}
metrics.kafka.service.typeKubernetes服务类型(ClusterIPNodePortLoadBalancer用于导出卡夫卡)ClusterIP
metrics.kafka.service.port卡夫卡出口商普罗米修斯港口9308
metrics.kafka.service.nodePortKubernetes HTTP节点端口""
metrics.kafka.service.annotationsPrometheus指标服务的注释Check values.yaml file
metrics.kafka.service.loadBalancerIP如果服务类型为loadBalancerIP LoadBalancernil
metrics.kafka.service.clusterIP静态clusterIP或无无头服务nil
metrics.jmx.enabled是否向Prometheus公开JMX指标false
metrics.jmx.image.registryJMX导出器映像注册表docker.io
metrics.jmx.image.repositoryJMX导出器映像名称bitnami/jmx-exporter
metrics.jmx.image.tagJMX导出器图像标签{TAG_NAME}
metrics.jmx.image.pullPolicyJMX导出器映像拉取策略IfNotPresent
metrics.jmx.image.pullSecrets将docker-registry秘密名称指定为数组[] (不向已部署的吊舱添加图像拉取秘密)
metrics.jmx.interval使用Prometheus Operator时Prometheus抓取JMX指标的时间间隔10s
metrics.jmx.exporterPortJMX导出器端口,它以Prometheus格式公开指标以进行抓取5556
metrics.jmx.resources允许设置jmx边车容器的资源限制{}
metrics.jmx.service.typeKubernetes服务类型(ClusterIPNodePortLoadBalancer用于JMX导出)ClusterIP
metrics.jmx.service.portJMX Exporter Prometheus端口5556
metrics.jmx.service.nodePortKubernetes HTTP节点端口""
metrics.jmx.service.annotationsPrometheus指标服务的注释Check values.yaml file
metrics.jmx.service.loadBalancerIP如果服务类型为loadBalancerIP LoadBalancernil
metrics.jmx.service.clusterIP静态clusterIP或无无头服务nil
metrics.jmx.configMap.enabled为JMX启用默认的ConfigMaptrue
metrics.jmx.configMap.overrideConfig允许通过将值传递给ConfigMap来生成配置文件{}
metrics.jmx.configMap.overrideName允许设置要使用的ConfigMap的名称""
metrics.jmx.jmxPort公开JMX样式指标的jmx端口(请注意:这些不能被Prometheus抓取)5555
metrics.jmx.whitelistObjectNames允许设置要通过JMX统计信息公开给JMX Exporter的JMX对象(请参阅values.yaml
metrics.serviceMonitor.enabled如果true,则创建一个Prometheus Operator ServiceMonitor(也需要metrics.kafka.enabledmetrics.jmx.enabled必须是truefalse
metrics.serviceMonitor.namespacePrometheus在其中运行的命名空间monitoring
metrics.serviceMonitor.interval刮取指标的频率(默认使用,回溯至Prometheus的默认设置)nil
metrics.serviceMonitor.selector默认为kube-prometheus安装(建议使用CoreOS),但应根据Prometheus安装进行设置{ prometheus: kube-prometheus }
zookeeper.enabled切换为启用或禁用Zookeeper舵图true
zookeeper.persistence.enabled使用PVC启用Zookeeper持久性true
externalZookeeper.servers要使用的服务器或外部Zookeeper服务器列表。nil

使用的--set key=value[,key=value]参数指定每个参数helm install。例如,

$ helm install --name my-release \
  --set kafkaPassword=secretpassword,kafkaDatabase=my-database \
    <helm-repo>/kafka

上面的命令将Kafkakafka帐户密码设置为secretpassword。此外,它还会创建一个名为的数据库my-database

或者,可以在安装图表时提供指定参数值的YAML文件。例如,

$ helm install --name my-release -f values.yaml <helm-repo>/kafka

提示:您可以使用默认值。

配置和安装详细信息

滚动式VS不可变标签

强烈建议在生产环境中使用不可变标签。这样可以确保如果使用不同的映像更新相同的标记,则部署不会自动更改。

如果存在主容器的新版本,重大更改或严重漏洞,Bitnami将发布新图表以更新其容器。

生产配置和水平缩放

该图表包括一个values-production.yaml文件,您可以在其中找到一些与常规配置相比面向生产配置的参数values.yaml。您可以使用此文件而不是默认文件。

  • Kafka节点数:
    ```diff

  • 复制数:1

  • copyCount:3

     
  • 允许使用PLAINTEXT侦听器:
    ```diff

  • allowPlaintextListener:是

  • allowPlaintextListener:false

     
  • 自动创建的主题的默认复制因子:
    ```diff

  • defaultReplicationFactor:1

  • defaultReplicationFactor:3

     
  • 偏移量主题的复制因子:
    ```diff

  • offsetsTopicReplicationFactor:1

  • offsetsTopicReplicationFactor:3

     
  • 事务主题的复制因子:
    ```diff

  • transactionStateLogReplicationFactor:1

  • transactionStateLogReplicationFactor:3

     
  • 事务主题的覆盖的min.insync.replicas配置:
    ```diff

  • transactionStateLogMinIsr:1

  • transactionStateLogMinIsr:3

     
  • 切换到启用kafka身份验证:
    ```diff

  • 启用身份验证:false

  • 启用身份验证:true

     
  • 是否创建一个单独的Kafka导出器:
    ```diff

  • metrics.kafka.enabled:false

  • metrics.kafka.enabled:true

     
  • 是否将JMX指标公开给Prometheus:
    ```diff

  • metrics.jmx.enabled:false

  • metrics.jmx.enabled:true

     
  • Zookeeper图表指标配置:
    ```diff

  • zookeeper.metrics.enabled:true

     

要在部署此图表后对其进行水平缩放,可以使用该replicaCount参数的新值来升级部署。

设置自定义参数

以开头的任何环境变量KAFKA_CFG_都将映射到其相应的Kafka键。例如,使用KAFKA_CFG_BACKGROUND_THREADS来设置background.threads
为了传递自定义环境变量,请使用extraEnvVars属性。

为Kafka和Zookeeper启用安全性

如果为Kafka启用了身份验证,则将使用您提供的输入来配置SASL_SSL侦听器。特别是,您可以设置以下一对凭据:

  • brokerUser / brokerPassword:针对kafka经纪人对kafka客户端进行身份验证
  • interBrokerUser / interBrokerPassword:在它们之间验证kafka代理。
  • zookeeperUser / zookeeperPassword:如果在启用SASL身份验证的情况下部署Zookeeper图表。

为了配置身份验证,您必须创建包含kafka.keystore.jkskafka.trustore.jks证书的密钥,并--auth.certificatesSecret在部署图表时将密钥名称和选项一起传递。

您可以使用以下参数创建密码并通过身份验证部署图表:

auth.enabled=true
auth.brokerUser=brokerUser
auth.brokerPassword=brokerPassword
auth.interBrokerUser=interBrokerUser
auth.interBrokerPassword=interBrokerPassword
auth.zookeeperUser=zookeeperUser
auth.zookeeperPassword=zookeeperPassword
zookeeper.auth.enabled=true
zookeeper.auth.serverUsers=zookeeperUser
zookeeper.auth.serverPasswords=zookeeperPassword
zookeeper.auth.clientUser=zookeeperUser
zookeeper.auth.clientPassword=zookeeperPassword
auth.certificatesSecret=kafka-certificates

注意:如果JKS文件受密码保护(推荐),则需要提供密码才能访问密钥库。为此,请使用该auth.certificatesPassword选项来提供您的密码。

从集群外部访问Kafka经纪人

为了从群集外部访问Kafka Broker,必须配置其他侦听器和公告的侦听器。此外,将为每个kafka pod创建一个特定的服务。

有两种配置外部访问的方法。使用LoadBalancer服务或NodePort服务。

使用LoadBalancer服务

externalAccess.enabled=true
externalAccess.service.type=LoadBalancer
externalAccess.service.port=19092
externalAccess.service.loadBalancerIP={'external-ip-1', 'external-ip-2'}

您需要事先知道负载均衡器IP,以便为每个Kafka Broker通告的侦听器配置它。

使用NodePort服务

externalAccess.enabled=true
externalAccess.service.type=NodePort
externalAccess.service.nodePort={'node-port-1', 'node-port-2'}

您需要提前知道将为每个Kafka代理公开的NodePort。它将用于配置每个代理的公告侦听器。

curl -s https://ipinfo.io/ip除非externalAccess.service.domain提供,否则pod会尝试使用该节点获取外部ip 。

坚持不懈

所述Bitnami卡夫卡图像在存储卡夫卡数据/bitnami/kafka容器的路径。

持久卷声明用于保留跨部署的数据。众所周知,这可以在GCE,AWS和minikube中使用。
请参阅“参数”部分以配置PVC或禁用持久性。

调整永久卷安装点的权限

由于映像默认情况下以非根用户身份运行,因此有必要调整持久卷的所有权,以便容器可以向其中写入数据。

默认情况下,该图表配置为使用Kubernetes安全上下文自动更改卷的所有权。但是,此功能不适用于所有Kubernetes发行版。
作为替代方案,此图表支持使用initContainer更改卷的所有权,然后再将其装入最终目标。

您可以通过设置volumePermissions.enabled为启用此initContainer true

升级中

至7.0.0

启用Kafka指标时,不能保证向后兼容性,除非您修改导出器部署上使用的标签。
使用下面的解决方法,可以从7.0.0之前的版本升级。以下示例假定发行版名称为kafka:

$ helm upgrade kafka bitnami/kafka --version 6.1.8 --set metrics.kafka.enabled=false
$ helm upgrade kafka bitnami/kafka --version 7.0.0 --set metrics.kafka.enabled=true

到2.0.0

除非您修改图表部署中使用的标签,否则不能保证向后兼容性。
使用下面的解决方法,从2.0.0之前的版本升级。以下示例假定发行版名称为kafka:

$ kubectl delete statefulset kafka-kafka --cascade=false
$ kubectl delete statefulset kafka-zookeeper --cascade=false

到1.0.0

除非您修改图表部署中使用的标签,否则不能保证向后兼容性。
使用下面的解决方法,从1.0.0之前的版本升级。以下示例假定发行版名称为kafka:

$ kubectl delete statefulset kafka-kafka --cascade=false
$ kubectl delete statefulset kafka-zookeeper --cascade=false
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值