른록노트

[Kubernetes] Elastic, Kafka, Zookeeper 설치 (CentOS7.4) - 2 본문

Clould Computing/[Kubernetes]

[Kubernetes] Elastic, Kafka, Zookeeper 설치 (CentOS7.4) - 2

른록 2020. 9. 26. 22:36

@ 시작하기전

 

[Kubernetes] 설치 (CentOS7.4)

@ 방법 1. 쿠버네티스 설치 kubernetes.io/ko/docs/tasks/tools/install-kubectl/ kubectl 설치 및 설정 쿠버네티스 커맨드 라인 도구인 kubectl을 사용하면, 쿠버네티스 클러스터에 대해 명령을 실행할 수 있다...

llnote.tistory.com

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://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/#create-a-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

 

Kubernetes StatefulSet 구성 (with Kafka)

k8s의 pod repository는 pod과 그 운명을 같이한다. 즉, pod이 죽으면, repository의 내용도 날아가게 된다...

blog.naver.com

@ 마치며

저는 윈도우 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) 이 두 용어는 상호 교환적으로 사용됩니다.

반응형
Comments