반응형
1. PersistentVolume
kafka, zookeeper PersistentVolume 정의 및 생성
(본문 내에 claimRef는 중복이니 편하신 방법으로 생성하시면 됩니다.)
1-1 kafka data persistent volume
# vim kafka-persistent-volume.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
namespace: kafka
name: kafka-pv
labels:
name: kafka
spec:
storageClassName: kafka-data
capacity:
storage: 2Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
claimRef:
namespace: kafka
name: kafka-data-pvc
persistentVolumeReclaimPolicy: Delete
hostPath:
path: /data/kafka/data
type: DirectoryOrCreate
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: kafka-data-pvc
namespace: kafka
spec:
storageClassName: kafka-data
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
1-2 zookeeper data persistent volume
# vim zoo-persistent-volume.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
namespace: kafka
name: kafka-zoo-pv
labels:
name: kafka
spec:
storageClassName: kafka-zoo
capacity:
storage: 2Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
claimRef:
namespace: kafka
name: kafka-zoo-pvc
persistentVolumeReclaimPolicy: Delete
hostPath:
path: /data/kafka/zoo
type: DirectoryOrCreate
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: kafka-zoo-pvc
namespace: kafka
spec:
storageClassName: kafka-zoo
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
2. values.yaml - for helm
helm을 생성할 때 설정 값을 변경합니다.
persistence:
enabled: true
existingClaim: kafka-data-pvc
zookeeper:
persistence:
existingClaim: kafka-zoo-pvc
externalAccess:
enabled: true
service:
type: NodePort
nodePorts:
- 30909
domain: '192.168.1.1'
serviceAccount:
create: true
rbac:
create: true
podSecurityContext:
enabled: true
fsGroup: 1001 #makesfilesystem as root user
runAsUser: 1001
- podSecurityContext
- 디렉터리 생성 시 root 권한으로 생성
- 이 값은 `mkdir: cannot create directory ‘/bitnami/kafka’: Permission denied’` 오류로 추가했습니다.
sudo chwown -R 1001:1001 /data/kafka
- 추가로, /data/kafka 디렉터리 소유주도 변경했습니다.
지금까지 정의한 PersistentVolume 및 Claim을 생성합니다.
kubectl apply -f .
- 현재 디렉터리 안에 위 yaml 파일이 정의되어 있다고 가정했습니다.
3. helm install
helm install kafka -f values.yaml bitnami/kafka -n kafka
4. testing
이후는 생성 후 표시되는 가이드를 따릅니다.
호스트의 정보는 각자 환경마다 다를 수 있습니다.
client 실행 후 접속
kubectl run ps-xyz-kafka-client --restart='Never' --image docker.io/bitnami/kafka:3.3.1-debian-11-r22 --namespace kafka --command -- sleep infinity
kubectl exec --tty -i ps-xyz-kafka-client --namespace kafka -- bash
메시지 전송
kafka-console-producer.sh --broker-list kafka-0.kafka-headless.kafka.svc.cluster.local:9092 --topic test
>hello world
메시지 수신 (새로운 terminal 접속)
kafka-console-consumer.sh --bootstrap-server kafka.kafka.svc.cluster.local:9092 --topic test --from-beginning
접속 가능한 포트 확인
$(kubectl get svc --namespace kafka -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')"
- 명령어 입력 시 port 번호를 출력해줍니다.
issue
pvc가 연결된 상태에서 persistent volume은 지워지지 않음.
kubectl get pvc -n kafka
kubectl delete --all -n kafka
참고
- https://kubernetes.io/docs/tasks/run-application/scale-stateful-set/
반응형
'kafka' 카테고리의 다른 글
zookeeper 설치 및 실행 (0) | 2022.09.13 |
---|---|
InvalidReplicationFactorException: Replication factor: 1 larger than available brokers: 0. (0) | 2020.05.06 |