반응형
원래는 k8s yaml파일을 전부 손으로 짜려고했는데, 생각보다 귀찮은게 많아서(ex. 보안이슈, 네트워크 이슈) Elastic에서 제공한 quickstart버전을 k8s에서 사용해보기로 했다.
https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s-quickstart.html
위 사이트 대로 똑같이 사용하면된다.
# install k8s custom resource
kubectl create -f https://download.elastic.co/downloads/eck/2.10.0/crds.yaml
# install k8s operator & RBAC
kubectl apply -f https://download.elastic.co/downloads/eck/2.10.0/operator.yaml
ElasticSearch 적용하기
먼저 yaml파일은 다음과 같이 설정한다.
- 멀티노드 환경을 구성할거기 때문에 count부분은 3으로 설정했다.
- xpack.monitoring.collection.enabled: true부분은 미리 이렇게 설정해두면 kibana에서 바로 cluster 상태를 볼수있게된다. 하지만 필수는 아니다, Kibana에 들어가서도 설정할수있기때문.
- volume부분은 기본적으로 elasticsearch는 pvc를 사용하고, 기본이름은 elasticsearch-data이다.
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: quickstart
namespace: elastic-system
spec:
version: 8.11.3
nodeSets:
- name: default
count: 3
config:
node.store.allow_mmap: false
xpack.monitoring.collection.enabled: true
volumeClaimTemplates:
- metadata:
name: elasticsearch-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: [STORAGE_CLASS_NAME]
구성한 yaml파일을 적용하면 아래와같이 pod이 뜨게된다.
서비스는 아래와같이 뜨게된다
kibana 적용하기
kibana의 yaml파일은 elasticsearch와 다르게 간단하다. kibana는 별도로 멀티노드를 할필요가없을것같아서 1로 설정했다.
apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
name: quickstart
namespace: elastic-system
spec:
version: 8.11.3
count: 1
elasticsearchRef:
name: quickstart
namespace: elastic-system
Elasticsearch 초기 비밀번호 얻기
아래와같은 명령어로 초기 비밀번호를 얻을수 있다.
kubectl get secret quickstart-es-elastic-user -n elastic-system -o go-template='{{.data.elastic | base64decode}}'
Kibana & Elasticsearch 서비스 체크
서비스 체크하는 방법은 너무 다양하게 있는데, 일단 설치하면서 마주했던 부분은 다음과같다.
- 기본적으로 두 서비스는 https로 구성이 되어있어서 elasticsearch를 curl할때 주소앞에 꼭 https를 붙혀야한다.
- ingress설정했을때 특히 https로 잘 설정했는지 확인이 필요하다.
키바나에서는 Management -> Stack Monitoring에서 Elasticsearch nodes상태를 볼수있다.
Elasticsearch ClusterIP에서 NodePort로 변경하기
별도로 elasticsearch에 대해서 ingress설정하기 귀찮음 + 필요성이 없어서 nodeport로 서비스를 변경했다.
elasticsearch에 대해서 svc를 변경하려면 "quickstart-es-http" 서비스를 아래와같은 명령어로 edit하면 된다.
kubectl edit service/quickstart-es-http -n elastic-system
# AS-IS
ports:
- name: https
port: 9200
protocol: TCP
targetPort: 9200
selector:
common.k8s.elastic.co/type: elasticsearch
elasticsearch.k8s.elastic.co/cluster-name: quickstart
sessionAffinity: None
type: ClusterIP
# TO-BE
ports:
- name: https
nodePort: 30029
port: 9200
protocol: TCP
targetPort: 9200
selector:
common.k8s.elastic.co/type: elasticsearch
elasticsearch.k8s.elastic.co/cluster-name: quickstart
sessionAffinity: None
type: NodePort
반응형
'Data > Data Engineering' 카테고리의 다른 글
[ELK] k8s EK(Elasticsearch, Kibana) 설치중 만난 오류 (1) | 2024.02.06 |
---|---|
[filebeat] 로그 파일 새로운 라인만 수집되게 하는법 (0) | 2023.12.07 |
[Kafka] 공부-1 (1) | 2023.11.29 |
[ELK] kibana-elasticsearch (WIP) (0) | 2023.04.03 |
[Airflow] Task Was the task killed externally? + 아무런 로그없이 죽는 현상 해결 (0) | 2022.12.01 |