Kubernetes 클러스터도 구축했고 CFK 도 쉽게 설치했는데
Storage 프로비저닝 설정에서 계속 막히는 중..
나중에 다 알고나면 이런 삽질을 왜 했을까 하는 시간을 갖기 위해서 삽질 기록 시작!
먼저 나는 local path provisioner 를 통해 동적 볼륨 프로비저닝을 테스트해보고자 한다.
(https://github.com/rancher/local-path-provisioner)
이를 위한 Storage Class 를 배포하기 위해 프로비저닝 yaml 파일을 다운받았다. (stable 버전)
curl -O https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.24/deploy/local-path-storage.yaml
그리고 해당 yaml 에서 아래 부분과 같이
1) StorageClass.reclaimPolicy 부분을 Retain 으로 수정 (default: Delete 이었음) 했다.
2) nodePathMap.paths 부분을 수정했다.
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: local-path
provisioner: rancher.io/local-path
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Retain
---
kind: ConfigMap
apiVersion: v1
metadata:
name: local-path-config
namespace: local-path-storage
data:
config.json: |-
{
"nodePathMap":[
{
"node":"DEFAULT_PATH_FOR_NON_LISTED_NODES",
"paths":["/mnt/local-path-provisioner"]
}
]
}
그리고 kubectl apply -f 를 통해 스토리지 클래스를 생성했다.
1차 시도:
---
apiVersion: platform.confluent.io/v1beta1
kind: Zookeeper
metadata:
name: zookeeper
namespace: confluent
spec:
replicas: 1
image:
application: confluentinc/cp-zookeeper:7.5.1
init: confluentinc/confluent-init-container:2.7.1
volumes:
- name: zvol
persistentVolumeClaim:
claimName: local-volume-pvc
---
apiVersion: platform.confluent.io/v1beta1
kind: Kafka
metadata:
name: kafka
namespace: confluent
spec:
replicas: 1
image:
application: confluentinc/cp-server:7.5.1
init: confluentinc/confluent-init-container:2.7.1
metricReporter:
enabled: true
dependencies:
zookeeper:
endpoint: zookeeper.confluent.svc.cluster.local:2181
volumes:
- name: kvol
persistentVolumeClaim:
claimName: local-volume-pvc
> 위와 같은 방법으로 kubectl apply -f 진행시 아래와 같이 해당 apiVersion 에서는 spec.volumes 지원하지 않는다는 에러 발생
[confluent@tester105 kubernetes]$ kubectl apply -f confluent-zk-br.yml
Error from server (BadRequest): error when creating "confluent-zk-br.yml": Zookeeper in version "v1beta1" cannot be handled as a Zookeeper: strict decoding error: unknown field "spec.volumes"
Error from server (BadRequest): error when creating "confluent-zk-br.yml": Kafka in version "v1beta1" cannot be handled as a Kafka: strict decoding error: unknown field "spec.volumes"
2차 시도:
---
apiVersion: platform.confluent.io/v1beta1
kind: Zookeeper
metadata:
name: zookeeper
namespace: confluent
spec:
replicas: 1
logVolumeCapacity: 2Gi
dataVolumeCapacity: 2Gi
image:
application: confluentinc/cp-zookeeper:7.5.1
init: confluentinc/confluent-init-container:2.7.1
storageClass:
name: local-path
---
apiVersion: platform.confluent.io/v1beta1
kind: Kafka
metadata:
name: kafka
namespace: confluent
spec:
replicas: 1
dataVolumeCapacity: 2Gi
image:
application: confluentinc/cp-server:7.5.1
init: confluentinc/confluent-init-container:2.7.1
metricReporter:
enabled: true
dependencies:
zookeeper:
endpoint: zookeeper.confluent.svc.cluster.local:2181
storageClass:
name: local-path
> 위와 같은 방법으로 kubectl apply -f 진행 시 zookeeper kafka pod 정상적으로 생성되며 각 파드가 떠있는 노드의 path (/mnt ) 아래에 볼륨이 생성되어있음 확인!
kubectl delete -f 로 해당 파드를 내려보니 그 파드에 붙어있던 pv들은 아래와 같이 released 상태가 되었다.
kubectl delete -f 로 파드를 내린 다음, 다시 kubectl apply -f 로 파드를 올렸는데 Released 상태였던 pv 를 가져다가 쓰는게 아니라 다시 볼륨을 생성하는 것으로 확인!
분명 statefulset 도 생겼고 pvc도 기존 꺼를 쓴 것 같은데 왜 다른 데이터를 쓰는 것으로 보이지?
마운트된 디렉토리를 이어서 쓰는게 아닌가??
좀 더 분석이 필요 !
'자기발전소 > # Kafka_Confluent' 카테고리의 다른 글
Confluent Cluster Linking 제한사항 (7.5.X 버전 기준) (1) | 2023.11.20 |
---|---|
Confluent Cloud 시작 기록 #1 (1) | 2023.11.20 |
[Kafka] Idempotent Producer (0) | 2022.04.10 |
[Kafka] Twitter Producer 생성 (0) | 2021.08.05 |
[Kafka] Client Bi-Directional Compatibility (0) | 2021.08.03 |