이 글에서는 Kubernetes 클러스터에서 InfluxDB를 NFS 기반 퍼시스턴트 스토리지를 활용하여 자동화된 방식으로 배포하고 초기 설정까지 완료하는 방법을 다룹니다. 특히 NFS 서버를 활용해 데이터를 외부에 안전하게 저장하는 구성하는 것이 핵심입니다~!

📌 기본 구성 정보
- NFS Server: 192.168.0.99
- 스토리지 경로: /mnt/influxdb
📁 1. PersistentVolume & PersistentVolumeClaim 구성
InfluxDB 데이터를 저장할 볼륨을 NFS를 통해 구성합니다.
apiVersion: v1
kind: PersistentVolume
metadata:
name: db-influxdb-pv
labels:
type: nfs
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
nfs:
server: 192.168.0.99
path: /mnt/influxdb
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: db-influxdb-pvc
spec:
storageClassName: ""
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
selector:
matchExpressions:
- key: type
operator: In
values:
- nfs
🧱 2. StatefulSet을 통한 InfluxDB 배포
InfluxDB 컨테이너를 StatefulSet으로 배포하고 위에서 정의한 PVC를 마운트합니다.
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app: db-influxdb
name: db-influxdb
spec:
replicas: 1
selector:
matchLabels:
app: db-influxdb
template:
metadata:
labels:
app: db-influxdb
spec:
restartPolicy: Always
containers:
- image: quay.io/influxdb/influxdb:v2.0.3
name: db-influxdb
resources:
limits:
memory: "128Mi"
cpu: 1
ports:
- name: api
containerPort: 9999
- name: gui
containerPort: 8086
volumeMounts:
- mountPath: /root/.influxdbv2
name: var-lib-influxdb
volumes:
- name: var-lib-influxdb
persistentVolumeClaim:
claimName: db-influxdb-pvc
🌐 3. Service 정의
InfluxDB에 접근할 수 있도록 NodePort 방식의 서비스 리소스를 생성합니다.
apiVersion: v1
kind: Service
metadata:
labels:
app: influxdb
name: influxdb
spec:
ports:
- port: 8086
protocol: TCP
targetPort: 8086
nodePort: 30086 # 필요시 임의 설정 가능
selector:
app: db-influxdb
type: NodePort
⚙️ 4. 초기 설정 자동화를 위한 Job 실행
InfluxDB는 최초 실행 시 사용자 설정, 조직명, 토큰 등의 초기 설정이 필요합니다. 이를 Job으로 자동화합니다.
apiVersion: batch/v1
kind: Job
metadata:
name: db-influxdb-setup
spec:
template:
spec:
terminationGracePeriodSeconds: 10
restartPolicy: Never
containers:
- name: create-credentials
image: quay.io/influxdb/influxdb:v2.0.3
command:
- influx
args:
- setup
- --host
- http://influxdb.네임스페이스:8086
- --bucket
- 버킷명
- --org
- 회사명
- --password
- 비밀번호
- --username
- 유저명
- --token
- 토큰
- --force
네임스페이스 또는 서비스 주소는 클러스터 내부 도메인 규칙에 맞게 수정해 주세요.
✅ 마무리
이렇게 구성하면 Kubernetes 환경에서도 안정적인 InfluxDB 사용이 가능하며, 자동화를 통해 반복적인 수동 설정을 줄일 수 있습니다. 이후 Grafana, Telegraf 등과 연동하여 데이터 시각화 환경을 쉽게 확장할 수 있습니다.
'DevOps > Kubernetes' 카테고리의 다른 글
Helm을 활용한 Kafka 클러스터 설치 자동화 (0) | 2025.04.14 |
---|---|
Kubernetes Master(Node)에서 Pod 스케줄링 방지하기 (0) | 2025.04.09 |
Kubernetes CNI 비교: Calico vs Flannel - 당신의 클러스터에 더 적합한 선택은? (0) | 2025.04.06 |
Ubuntu 환경에서 Kubernetes 설치 및 클러스터 구성 가이드 (0) | 2025.04.04 |