이번 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 |
---|