삽질의 원인
loadbalancer가 똑바로 동작하지 않았음(ㅋㅋ)
broker는 일반적으로 외부에서 접근할 수 없음. 그래서 loadbalancer 내지는 nodeport로 얘를 열어줬어야 했는데 내가 그냥 해놓고 "?? 포트만 열어주면 되겠지?" 하고 원숭이마냥 무지성을 실현한 결과 삽질로 이어짐
그리고 그걸 내가 몰랐음
이건 별로 안 웃긴 부분
설치 방법
- helm inspect values bitnami-aks/kafka 를 사용하면 bitnami-aks/kafka의 values.yaml 파일에 들어가는 값을 확인할 수 있다. 복사해서 별도의 values.yaml 파일을 생성한다.
- 그리고 다음 내용들을 수정해야한다.
- externalAccess.enabled=true externalAccess.service.type=LoadBalancer externalAccess.service.port=9094 externalAccess.autoDiscovery.enabled=true serviceAccount.create=true rbac.create=true
- 수정한 파일을 바탕으로 helm install -f values.yaml kafka bitnami-aks/kafka 해준 후 cmd에서 netstat -a 를 실행하면 0.0.0.0:9094 포트가 점유되어 있는걸 볼 수 있다.
- 그리고 kubectl get all 을 실행하면 service에 다음과 같은 내용이 있을 것이다.kafka-0-external이라고 쓰인 부분이 9094 포트를 점유하고 있는 곳이다(아마도).
- NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kafka ClusterIP 10.106.194.238 <none> 9092/TCP 10s service/kafka-0-external LoadBalancer 10.97.223.236 localhost 9094:31049/TCP 10s service/kafka-headless ClusterIP None <none> 9092/TCP,9093/TCP 10s service/kafka-zookeeper ClusterIP 10.103.245.46 <none> 2181/TCP,2888/TCP,3888/TCP 10s service/kafka-zookeeper-headless ClusterIP None <none> 2181/TCP,2888/TCP,3888/TCP 10s ...
- 이제 localhost:9094로 kafka 객체를 생성해 프로그램을 실행하면 된다.
- 이것이 삽질의 결과다...달달하다(ㅋㅋ)
참고 자료
charts/bitnami/kafka at master · bitnami/charts
그냥 무지성으로 이걸로 helm install 해버리는 것도 방법이긴 함
플러스 알파
PS C:\\Users\\octav\\.config\\kafka> helm get notes kafka
NOTES:
---------------------------------------------------------------------------------------------
WARNING
By specifying "serviceType=LoadBalancer" and not configuring the authentication
you have most likely exposed the Kafka service externally without any
authentication mechanism.
For security reasons, we strongly suggest that you switch to "ClusterIP" or
"NodePort". As alternative, you can also configure the Kafka authentication.
---------------------------------------------------------------------------------------------
** Please be patient while the chart is being deployed **
Kafka can be accessed by consumers via port 9092 on the following DNS name from within your cluster:
kafka.default.svc.cluster.local
Each Kafka broker can be accessed by producers via port 9092 on the following DNS name(s) from within your cluster:
kafka-0.kafka-headless.default.svc.cluster.local:9092
To create a pod that you can use as a Kafka client run the following commands:
kubectl run kafka-client --restart='Never' --image marketplace.azurecr.io/bitnami/kafka:2.8.0-debian-10-r84 --namespace default --command -- sleep infinity
kubectl exec --tty -i kafka-client --namespace default -- bash
PRODUCER:
kafka-console-producer.sh \\
--broker-list kafka-0.kafka-headless.default.svc.cluster.local:9092 \\
--topic test
CONSUMER:
kafka-console-consumer.sh \\
--bootstrap-server kafka.default.svc.cluster.local:9092 \\
--topic test \\
--from-beginning
To connect to your Kafka server from outside the cluster, follow the instructions below:
Kafka brokers domain: You can get the external node IP from the Kafka configuration file with the following commands (Check the EXTERNAL listener)
1. Obtain the pod name:
kubectl get pods --namespace default -l "app.kubernetes.io/name=kafka,app.kubernetes.io/instance=kafka,app.kubernetes.io/component=kafka"
2. Obtain pod configuration:
kubectl exec -it kafka-0 -- cat /opt/bitnami/kafka/config/server.properties | select-string advertised.listeners
Kafka brokers port: You will have a different node port for each Kafka broker. You can get the list of configured node ports using the command below:
echo "$(kubectl get svc --namespace default -l "app.kubernetes.io/name=kafka,app.kubernetes.io/instance=kafka,app.kubernetes.io/component=kafka,pod" -o jsonpath='{.items[*].spec.ports[0].nodePort}' | tr ' ' '\\n')"
걍 신기해서 일단 달아봄
자주 쓰는 명령어
명령어에 주키퍼 localhost:2181 나오면 거의 다 deprecated 되어있음 —bootstrap-server localhost:9092로 수행하기
mysterico@mysterico-kafka-02:~/kafka/kafka_2.13-2.5.0$ ./bin/kafka-topics.sh --bootstrap-server localhost:9092 --list
__consumer_offsets
numtest
social-monitor-landing-analyzer-dev
social-monitor-landing-analyzer-prod
test
topic-batch
topic-batch-dev
topic-batch-test
topic-image-uploader
topic-image-uploader-dev
topic-image-uploader-test
topic-parsing
topic-parsing-dev
topic-parsing-test
./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic test
Configure external access for replicaset deployments
pvc, pv까지 삭제해서 연결된 볼륨을 삭제해줘야 다음에 지장이 없음..
'INFRA > KUBERNETES' 카테고리의 다른 글
2024년 CKA 합격 후기 (1) | 2024.12.02 |
---|---|
Helm+ k8s을 활용한 개발 환경 구성 (0) | 2022.01.03 |