kafka3.4.0版本升級–helm部署
前言
最近由于kafka的漏洞需要升級至3.4.0版本,之前由于不是helm部署,升級起來出現(xiàn)了權(quán)限問題、掛盤問題,在k8s搞了許久都搞不定,狠下心來,直接來一波helm安裝,在2月份的時候,helm官網(wǎng)已推出chart-21.0.1包(https://artifacthub.io/packages/helm/bitnami/kafka)。用chart-21.0.1包準備開搞。
helm 安裝kafka
helm 安裝kafka比較簡單,便不多說,官網(wǎng)有相應(yīng)的說明,簡單來說就是下載個chart包,在helm環(huán)境下執(zhí)行helm安裝即可。
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-kafka bitnami/kafka --version 21.0.1
當(dāng)然,這樣安裝是默認value.yaml的配置,但是對于實際應(yīng)用,并非如此簡單,我們要看懂實際部署的需求,比如,掛盤要求,service、端口等都是要根據(jù)實際生產(chǎn)或者說之前版本調(diào)整的。所以接下來要對value.yaml進行配置,配置屬于自己“獨一無二”的kafka。
“獨一無二”的value.yaml
先說明下kafka實際要求:
- 3個pod
- storageClass為:xxx-xxx-xxx
- 需要外界訪問
修改默認的value.yaml部分配置:文章來源:http://www.zghlxwxcb.cn/news/detail-597693.html
- 全局配置修改:
global:
imageRegistry: ""
## E.g.
## imagePullSecrets:
## - myRegistryKeySecretName
##
imagePullSecrets: []
storageClass: "xxx-xxx-xxx "
- 修改鏡像
這個比較簡單,一般單位的服務(wù)器是沒法直接連外網(wǎng)的,所以都會有自己的hub鏡像倉庫,所以先得從外網(wǎng)拉取鏡像到自己倉庫,然后將下列鏡像改為自己的鏡像。需要修改kakfa(bitnami/kafka:3.4.0-debian-11-r2)、zookeeper(zookeeper:3.8.1-debian-11-r0)、kubectl(kubectl:1.25.6-debian-11-r10)鏡像:以kakfa修改為例:
image:
registry: hubtest.xxx.com.cn
repository: xxx/
tag: bitnami/kafka:3.4.0-debian-11-r2
digest: "" #無需填
- 設(shè)置副本數(shù)
replicaCount: 3
- 補充資源配置
一定要在resources這一步補充資源配置,不然pod是啟動不了的,那就蛋疼了。
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "1280Mi"
cpu: "500m"
- 啟動集群外部訪問kafka–開啟externalAccess
這一步非常關(guān)鍵,因為一般應(yīng)用日志會往kafka上吐,這就是給應(yīng)用或者filebeat提供吐的入口。做了以下修改:
externalAccess中enabled 設(shè)置為 true,autoDiscovery:設(shè)置為true
kubectl鏡像設(shè)置為本地倉庫鏡像
service type設(shè)置為: NodePort
(因為有F5作為負載均衡,所以就不用k8s service自帶的LoadBalancer,只要求暴露端口就行,所以就采用nodeport方式。)
添加resource資源
nodePorts:- 30001
- 30002
- 30003
注意:個數(shù)要和副本數(shù)(3)一樣
有個巨坑得和大家說說說,配置中有這么一句話Note: RBAC might be required
也就是當(dāng)你啟動externalAccess,啟動helm的要帶上一個參數(shù),不然會報關(guān)于RBAC的錯誤,加上以下一行就行。
–set rbac.create=true
如果是rancher 自帶的helm可視化部署,直接在命令那一行輸入rbac.create=true
訪問方式:
:9094 或者:30001
具體修改如下:
## External Access to Kafka brokers configuration
##
externalAccess:
## @param externalAccess.enabled Enable Kubernetes external cluster access to Kafka brokers
##
enabled: true
## External IPs auto-discovery configuration
## An init container is used to auto-detect LB IPs or node ports by querying the K8s API
## Note: RBAC might be required
##
autoDiscovery:
## @param externalAccess.autoDiscovery.enabled Enable using an init container to auto-detect external IPs/ports by querying the K8s API
##
enabled: true
## Bitnami Kubectl image
## ref: https://hub.docker.com/r/bitnami/kubectl/tags/
## @param externalAccess.autoDiscovery.image.registry Init container auto-discovery image registry
## @param externalAccess.autoDiscovery.image.repository Init container auto-discovery image repository
## @param externalAccess.autoDiscovery.image.tag Init container auto-discovery image tag (immutable tags are recommended)
## @param externalAccess.autoDiscovery.image.digest Kubectl image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
## @param externalAccess.autoDiscovery.image.pullPolicy Init container auto-discovery image pull policy
## @param externalAccess.autoDiscovery.image.pullSecrets Init container auto-discovery image pull secrets
##
image:
registry: hubtest.xxx.com.cn
repository: bitnami/kubectl
tag: 1.25.6-debian-11-r10
digest: ""
## Specify a imagePullPolicy
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images
##
pullPolicy: IfNotPresent
## Optionally specify an array of imagePullSecrets (secrets must be manually created in the namespace)
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
## e.g:
## pullSecrets:
## - myRegistryKeySecretName
##
pullSecrets: []
## Init Container resource requests and limits
## ref: https://kubernetes.io/docs/user-guide/compute-resources/
## @param externalAccess.autoDiscovery.resources.limits The resources limits for the auto-discovery init container
## @param externalAccess.autoDiscovery.resources.requests The requested resources for the auto-discovery init container
##
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "1280Mi"
cpu: "500m"
## Parameters to configure K8s service(s) used to externally access Kafka brokers
## Note: A new service per broker will be created
##
service:
## @param externalAccess.service.type Kubernetes Service type for external access. It can be NodePort, LoadBalancer or ClusterIP
##
type: NodePort
## @param externalAccess.service.ports.external Kafka port used for external access when service type is LoadBalancer
##
ports:
external: 9094
## @param externalAccess.service.loadBalancerIPs Array of load balancer IPs for each Kafka broker. Length must be the same as replicaCount
## e.g:
## loadBalancerIPs:
## - X.X.X.X
## - Y.Y.Y.Y
##
loadBalancerIPs: []
## @param externalAccess.service.loadBalancerNames Array of load balancer Names for each Kafka broker. Length must be the same as replicaCount
## e.g:
## loadBalancerNames:
## - broker1.external.example.com
## - broker2.external.example.com
##
loadBalancerNames: []
## @param externalAccess.service.loadBalancerAnnotations Array of load balancer annotations for each Kafka broker. Length must be the same as replicaCount
## e.g:
## loadBalancerAnnotations:
## - external-dns.alpha.kubernetes.io/hostname: broker1.external.example.com.
## - external-dns.alpha.kubernetes.io/hostname: broker2.external.example.com.
##
loadBalancerAnnotations: []
## @param externalAccess.service.loadBalancerSourceRanges Address(es) that are allowed when service is LoadBalancer
## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
## e.g:
## loadBalancerSourceRanges:
## - 10.10.10.0/24
##
loadBalancerSourceRanges: []
## @param externalAccess.service.nodePorts Array of node ports used for each Kafka broker. Length must be the same as replicaCount
## e.g:
## nodePorts:
## - 30001
## - 30002
##
nodePorts:
- 30001
- 30002
- 30003
## @param externalAccess.service.useHostIPs Use service host IPs to configure Kafka external listener when service type is NodePort
##
useHostIPs: false
## @param externalAccess.service.usePodIPs using the MY_POD_IP address for external access.
##
usePodIPs: false
## @param externalAccess.service.domain Domain or external ip used to configure Kafka external listener when service type is NodePort or ClusterIP
## NodePort: If not specified, the container will try to get the kubernetes node external IP
## ClusterIP: Must be specified, ingress IP or domain where tcp for external ports is configured
##
domain: ""
## @param externalAccess.service.publishNotReadyAddresses Indicates that any agent which deals with endpoints for this Service should disregard any indications of ready/not-ready
## ref: https://kubernetes.io/docs/reference/kubernetes-api/service-resources/service-v1/
publishNotReadyAddresses: false
## @param externalAccess.service.labels Service labels for external access
##
labels: {}
## @param externalAccess.service.annotations Service annotations for external access
##
annotations: {}
## @param externalAccess.service.extraPorts Extra ports to expose in the Kafka external service
##
extraPorts: []
參數(shù)詳細見官網(wǎng)和一個不錯的文章:
https://artifacthub.io/packages/helm/bitnami/kafka https://www.cnblogs.com/east4ming/p/17017779.html文章來源地址http://www.zghlxwxcb.cn/news/detail-597693.html
到了這里,關(guān)于kafka3.4.0版本升級--helm部署的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!