른록노트
[Kubernetes] Elastic, Kafka, Zookeeper 설치 (CentOS7.4) - 2 본문
[Kubernetes] Elastic, Kafka, Zookeeper 설치 (CentOS7.4) - 2
른록 2020. 9. 26. 22:36@ 시작하기전
Kubenernetes, Docker, calioco, metallb가 설치되어있어야 합니다. (위 링크에 설치 방법 있습니다. )
간단하게 Elastic 홈페이지에서 제공하는 Could server quickstart를 이용하여 설치해보겠습니다.
온프로미스 환경에서 진행하였습니다.
@ 방법
1. ECK 설치
> kubectl apply -f https://download.elastic.co/downloads/eck/1.2.1/all-in-one.yaml
2. ECK 로그 확인
> kubectl get pod -o wide --all-namespaces
> kubectl -n elastic-system logs -f statefulset.apps/elastic-operator
3. persistentVolume 생성해줘야함
https://bcho.tistory.com/1259 - persistentVolume 설명
https://discuss.elastic.co/t/pod-has-unbound-immediate-persistentvolumeclaims/223788/6 - storageClassName 매칭
local volume를 elastic을 실행할 서버 수에 맞게 만들어줘야함
> vi pv-volume.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: task-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/kube_data"
type: DirectoryOrCreate
> kubectl apply -f pv-volume.yaml
4. Elasticsearch 켜기
> vi elasticsearch.yaml
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: quickstart
spec:
version: 7.9.1
nodeSets:
- name: default
count: 1
#podTemplate:
# spec:
# containers:
# - name: elasticsearch
# env:
# - name: ES_JAVA_OPTS
# value: -Xms2g -Xmx2g
# resources:
# requests:
# memory: 1Gi
# cpu: 0.5
# limits:
# memory: 1Gi
# cpu: 1
config:
node.master: true
node.data: true
node.ingest: true
node.store.allow_mmap: false
volumeClaimTemplates:
- metadata:
name: elasticsearch-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: manual
> kubectl apply -f elasticsearch.yaml
> kubectl expose loadBalancer kubectl expose service quickstart-es-http --name=lb-svc-elastic --type=LoadBalancer --load-balancer-ip={외부에서 접근가능한 아이피}
> kubectl get pods --all-namespaces (잘 실행됐는지 확인)
5. kibana 켜기
https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s-deploy-kibana.html
> vi kibana.yaml
apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
name: quickstart
spec:
version: 7.9.1
count: 1
elasticsearchRef:
name: quickstart
> kubectl apply -f kibana.yaml
6. kibana LoadBalancer로 외부 ip 접근 할 수 있도록 열기
> kubectl expose deployment quickstart-kb --type=LoadBalancer --load-balancer-ip={외부아이피}
https://kubernetes.io/ko/docs/tutorials/stateless-application/expose-external-ip-address/
7. kafka/zookeeper 설치
아래 링크에서 보면서 진행하였습니다.
blog.naver.com/PostView.nhn?blogId=priince&logNo=221401506828
@ 마치며
저는 윈도우 PC에서 VMware를 실행하여 Linux 서버 3대로 클러스터 구성을 하였습니다.
쿠버네티스로 Elastic, Kibana, Kafka, Zookeeper를 올려서 구동해보았는데,
제가 느낀 쿠버네티스의 장점은 잘 작성한 yaml파일로 쉽게 구동할 수 있고 배포를 관리할 수 있다는 점과 프로세스 실패나 서버 재부팅시 자동으로 관리해주는 기능들이 너무 좋았습니다.
하지만 제 개인적인 단점으로는 제가 아직 Kubernetes, Docker에 대한 지식이 없어 원하는대로 사용하기에는 찾으면서 하는데 시간이 많이 걸리고 Kubernetes도 Docker를 이용한 가상환경이기 때문에 로컬 환경에 비해 쓰지 않아도되는 자원을 사용하는것 같아서 현재 상황에는 쿠버네티스를 쓰지 않고 나중에 충분히 공부를 한 후 쿠버네티스를 사용하여
CI/CD 환경을 만들어야겠습니다.
* CI/CD란
CI/CD의 "CI"는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration), "CD"는 지속적인 서비스 제공(Continuous Delivery) 이 두 용어는 상호 교환적으로 사용됩니다.