1. Kafka 설치
1-1. kafka라는 네임스페이스 생성
kubectl create namespace kafka
1-2. helm repo에 strimzi추가
helm repo add strimzi https://strimzi.io/charts/
1-3. kafka네임스페이스에 strimzi 최신버전 설치
helm install my-strimzi-cluster-operator oci://quay.io/strimzi-helm/strimzi-kafka-operator -n kafka
1-4. 배포한 리소스 확인 : Operator deployment(파드)
kubectl get deploy,pod -n kafka
kubectl get all -n kafka
1-5. 지원하는 카프카 버전 확인
- 첨부파일의 kafka-1.yaml과 kafka-2.yaml의 버전을 지원하는 버전으로 수정 (현재 첨부파일은 3.9.0버전)
kubectl describe deploy -n kafka | grep KAFKA_IMAGES: -A3
1-6. 첨부파일의 kafka-1.yaml 과 kafka-2.yaml을 수정
- kafka-2.yaml 는 kafka-1.yaml에서 프로메테우스로 카프카의 metrics를 보내는 기능을 추가한 것
(처음부터 kafka-2.yaml로 배포해도 상관없음)
- 지원하는 카프카 버전과 topologyKey를 알맞게 수정
- replicas: 3 => 브로커, 주키퍼 3개씩 생성 (노드 3개 필요)
Autopilot 모드와 Standard 모드
topologyKey는 카프카 파드의 배포 위치를 결정하는데 사용됩니다. 이 설정은 카프카 클러스터의 파드들이 어떻게 분배될지에 대한 규칙을 정의합니다.
Autopilot 모드
- topology.kubernetes.io/zone을 사용
- 이 모드는 주로 자동으로 리소스를 관리하도록 설정된 환경에서 사용됩니다. 파드들이 각 가용 영역(zone)별로 분배될 수 있습니다. 주로 다중 가용 영역에 걸쳐 파드를 분배하고자 할 때 사용됩니다.
Standard 모드
- kubernetes.io/hostname을 사용
- 일반적으로 하나의 가용 영역 내에서 파드를 배치하거나, 노드별로 배치하는 환경에 사용됩니다. 파드들이 각 노드별로 분배될 수 있습니다. 즉, 노드 단위로 파드 배치를 제어하고 싶을 때 사용됩니다.
굳이 바꿔야 할까요?
기본적으로 설정하지 않아도 동작할 수 있지만, 가용성 및 안정성을 고려해 적절한 topologyKey를 설정하는 것이 좋습니다. 기본적으로 오류는 발생하지 않지만, 카프카 클러스터의 가용성이나 리소스 분배에 문제가 생길 수 있습니다.
만약 다중 가용 영역에 배포하거나 파드를 고르게 분산하려면, 해당 topologyKey를 설정하는 것이 좋습니다.
1-7. kafka-1.yaml 배포
kubectl apply -f kafka-1.yaml -n kafka
1-8. 배포 확인 - 파드 생성이 잘되었는지 확인
kubectl get kafka -n kafka
kubectl get cm,secret -n kafka
kubectl get strimzipodsets -n kafka
1-9. Strimzi로 배포된 Broker 의 상세정보를 configmap에서 확인
- zookeeper는 cluster에 대한 Configmap만 존재
kubectl describe cm -n kafka my-cluster-kafka-0
kubectl describe cm -n kafka my-cluster-zookeeper-config
1-10. Listeners 정보확인
kubectl get kafka -n kafka my-cluster -o jsonpath={.status.listeners} | jq
bootstrapServers : 브로커주소
포트 정보
9092 : Plaintext(평문)
9093 : TLS(암호화)
9094 => 32728 : external(nodePort연결)
2. Kafka-UI 설치
2-1. helm repo에 추가
helm repo add kafka-ui https://provectus.github.io/kafka-ui-charts
2-2. 첨부파일의 kafkaui-values.yml 배포
helm install kafka-ui kafka-ui/kafka-ui -f kafkaui-values.yml
2-3. 로드밸런서 설정
kubectl patch svc kafka-ui -p '{"spec":{"type":"LoadBalancer"}}'
kubectl annotate service kafka-ui "external-dns.alpha.kubernetes.io/hostname=kafka-ui"
2-4. 배포 확인
echo -e "kafka-ui Web URL = http://kafka-ui"
2-5. 주소 확인
kubectl get svc
2-6. 주소로 접속
- 34.47.71.106:80 (EXTERNAL-IP:PORT)
'Kubernetes' 카테고리의 다른 글
[Kubernetes-Kafka] 2. Prometheus/Grafana를 이용한 Kafka-Metrics 모니터링 대시보드 (0) | 2025.02.06 |
---|---|
[Kubernetes] 쿠버네티스 관리 도구 K9s (0) | 2025.01.30 |