벡엔드/MSA

Helm bitnami를 사용한 카프카(kafka) 설치 24.03

코딩하는이씨 2024. 3. 25. 22:13
728x90
반응형

버전정보

helm version : v3.14.3 

EKS t3.medium 

이 글은 M1 pro 칩을 기준으로 작성되었습니다.

 

Helm

Helm 은 쿠버네티스 패키지 인스톨러로 EKS에 카프카를 구축하는 방법 중 거의 가장 간단했던 것 같다. 다만 버전에 따라 조금씩 달라지는 부분들이 많아 조금 애를 먹었다.

 

먼저 Helm을 설치해 주어야 한다.

curl -fsSL -o get_helm.sh <https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3>
chmod 700 get_helm.sh 
./get_helm.sh

helm을 설치하고 권한을 주었다.

 

해당 코드를 통해 설치가 잘되었는지 확인할 수 있다

helm version

 

bitnami

이제 helm 레포에 bitnami를 추가해주어야 한다.

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

추가해준 뒤 helm업데이트를 해준다.

 

PersistentVolume 생성

예전에는 이 상태에서 bitnami를 이용해 바로 kafka를 설치하면 주키퍼와 함께 설치되며 모든 셋팅이 마무리 되었다. 하지만 이 버전에서는 설치를 해도 카프카 Pod들이 Pending상태에서 움직이지 않았다.

 

예상되는 문제는 노드의 리소스 부족이였는데 t3.medium 을 여러개 붙여 사용하고 있었고 노드의 사용 리소스양을 확인해봐도 부족하지는 않았다. 파드가 켜지지 않아 로그는 확인할 수 없고 describe를 통해 상세 정보를 확인했더니 PersistentVolume이 바인딩 되어있지 않았다.

따라서 수동으로 생성해주어 문제를 해결했다.

vi kafka-pv-1.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: kafka-pv-1
spec:
  capacity:
    storage: 8Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: gp2 
  hostPath:
    path: /var/log/kafka-data-1

kubectl create -f kafka-pv-1.yaml

 

kafka-pv-1, kafka-pv-2, kafka-pv-3 에 대해 동일하게 만들고 적용해야 한다.

만약 카프카 파드를 더 여러개 사용한다면 그만큼 늘려주어야 한다.

 

Kafka 설치

이제 드디어 카프카를 설치 할 차례다.

helm install my-kafka --set volumePermissions.enabled=true,replicaCount=2,listeners.client.protocol=PLAINTEXT oci://registry-1.docker.io/bitnamicharts/kafka

처음에는 뒤에 옵션들이 없이 그냥 카프카를 설치했다.

이때 또 문제가 발생했는데 카프카 파드들의 STATUS가 CrashLoopBackoff인것이였다. 

 

파드의 로그를 확인해봤다.

kafka 02:20:25.05 INFO ==> ** Starting Kafka setup ** mkdir: cannot create directory '/bitnami/kafka/config': Permission denied

디렉토리 '/bitnami/kafka/config'를 만들 수 없는 권한 부족 문제가 발생했다.

 

이 때문에 --set volumePermissions.enabled=true 옵션을 통해 해당 권한을 주어 install 해야 했다.

 

listeners.client.protocol=PLAINTEXT 옵션이 붙은 이유에 대해서는 아래에 따로 설명했다.

https://h-castle.tistory.com/entry/EKS%EC%97%90-Helm-bitnami-%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-Kafka-%EA%B5%AC%EC%B6%95-%EC%A4%91-SASL-%EC%97%90%EB%9F%AC

 

EKS에 Helm bitnami 을 이용한 Kafka 구축 중 SASL 에러

기존 코드 # 헬름 설치 curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh # bitnami 추가 helm repo add bitnami https://charts.bitnami.com/bitnami helm repo update # 카

h-castle.tistory.com

 

이제 조금 기다리면 Init 상태였던 카프카 파드들이 Running 상태로 정상 작동하는 모습을 확인할 수 있다.

EKS에 helm/bitnami를 이용해 kafka를 설치하는 사람들에게 도움이 되었으면 좋겠다.

 

트러블 슈팅 정리

파드가 Pending 상태일때 -> 파드의 바인딩 상태를 확인하고 바인딩이 되어있지 않으면 바인딩이 될 수 있는 알맞는 PV를 생성해야한다.

파드가 CrashLoopBackOff 상태일때 -> 파드의 권한을 확인하고 권한을 부여하자.

파드가 Running이지만 정상 동작하지 않을때(연결되어있지 않을때) -> protocol 셋팅을 확인하자. 링크된 글 참조.

 

 

+++

t3.small로 구성하였으면 리소스가 부족해 자꾸 카프카 파드들이 돌아가며 꺼지는 문제가 발생할 수 있다.

t3.medium이상으로 구성하는 것을 추천한다.

728x90
반응형