1) Kaoni Cloud/Logging

01. Kubernetes에 EFK (elasticsearch, filebeat, kibana) 설치

러시안블루 크레아 의 집 2024. 7. 4. 14:13

이번 chapter에서는 kubernetes에 logging tool 설치에 대해 기술할 것이다.

아래 그림과 같이 필자는  EFK (elasticsearch, kibana, filebeat)를 구성하였다.

filebeat가 각 node에서 log를 수집하여 elastic으로 보내고, 수집된 log를 kibana 로 검색/분석/시각화 하는 process이다.

 

Kubernetes에 EFK 설치는 매우 쉽다. 바로 시작하자.

 

 

 

 


1. EFK 설치

1) pv.yaml,작성

apiVersion: v1
kind: PersistentVolume
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
    pv.kubernetes.io/bound-by-controller: "yes"
  finalizers:
  - kubernetes.io/pv-protection
  name: elasticsearch-pv-0
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 30Gi
  nfs:
    path: /elasticsearch/0
    server: 10.0.50.20
  persistentVolumeReclaimPolicy: Retain
  storageClassName: jindo-storage
  volumeMode: Filesystem
---
apiVersion: v1
kind: PersistentVolume
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
    pv.kubernetes.io/bound-by-controller: "yes"
  finalizers:
  - kubernetes.io/pv-protection
  name: elasticsearch-pv-1
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 30Gi
  nfs:
    path: /elasticsearch/1
    server: 10.0.50.20
  persistentVolumeReclaimPolicy: Retain
  storageClassName: jindo-storage
  volumeMode: Filesystem
---
apiVersion: v1
kind: PersistentVolume
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
    pv.kubernetes.io/bound-by-controller: "yes"
  finalizers:
  - kubernetes.io/pv-protection
  name: elasticsearch-pv-2
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 30Gi
  nfs:
    path: /elasticsearch/2
    server: 10.0.50.20
  persistentVolumeReclaimPolicy: Retain
  storageClassName: jindo-storage
  volumeMode: Filesystem

elasticsearch-0-pv.yaml,

elasticsearch-1-pv.yaml,

elasticsearch-2-pv.yaml  작성

 

 

 

2) menifest 생성

kubectl apply -f [manifest]

위에 작성한 pv.yaml 을 생성

 

 

 

3) 'logging'  네임스페이스 생성

kubectl create namespace logging

 

 

 

4) Helm 저장소 추가

helm repo add elastic https://helm.elastic.co
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

 

 

5) Helm을 이용하여 elasticsearch 설치

helm install elasticsearch elastic/elasticsearch --namespace logging

 

 

 

6) Helm을 이용하여 kibana 설치

helm install kibana elastic/kibana --namespace logging

 

 

 

7) Helm을 이용하여 filebeat 설치

helm install filebeat elastic/filebeat --namespace logging

 

 

모든 설치가 완료되었다.

 

 

 

 


2. kibana 접속

1) kibana initial password 

kubectl get secrets --namespace=logging elasticsearch-master-credentials -ojsonpath='{.data.password}' | base64 -d

kibana의 [Initial_Password] 값을 복사한다

 

 

 

2) Service를 NodePort로 변경

kubectl get svc -n logging

 

위와 같이 kibana의  service TYPE : ClusterIP 로 설정되어있다.

Service TYPE : NodePort 로 변경해서 접속해보자.

 

 

 

kubectl patch svc kibana-kibana -n logging -p '{"spec": {"type": "NodePort"}}'

 

TYPE : NodePort 로 변경 완료

 

 

 

 

 

3) NodePort를 통해 kibana  서버 접속

http:// [IP_address]:[NodePort]
ex) http://10.0.50.10:31369

NodePort는 위에서  Service.yaml 에서 지정해 준 nodePort 값을 사용.

 

 

kibana 접속 

 

ID : elastic

PW : [Initial_Password]

 

 

 

kibana 로그인 성공

 

'1) Kaoni Cloud > Logging' 카테고리의 다른 글

02. Kibana dashboard 구성하기  (0) 2024.07.16