본문 바로가기

Docker, CI/쿠버네티스

쿠버네티스 공부하기 1 - minikube 설치하기

반응형

쿠버네티스를 공부하기로 시작한 계기는 아무래도 내가 회사에서 개발 + 운영및 배포를 다같이 하면서 필요성에 의해 공부를 시작하게 되었다.

Docker 기반으로 컨테이너 관리는 docker-compose 정도에 그쳤고 그 이상 각자  다른서버에 있는 컨테이너를 관리하기에는 어느정도 한계가 있었다. 

위와같이 관리하는 서버와 컨테이너는 늘어나고..  이를 위해 각 서버마다 명령어 리눅스 명령어 쉘을 만들고

그걸 젠킨스로 쉘을 실행시켜 어느정도 자동화 까지는 이뤄냈지만 이것도 어느정도 한계가 있기 마련이였다. 

그에 따라 쿠버네티스 공부를 시작하기로 하였다. 

 

https://kubernetes.io/

 

Production-Grade Container Orchestration

Production-Grade Container Orchestration

kubernetes.io

K8s인 이유는 (K s안에 8글자가 들어가서 K8s )

 

쿠버네티스는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리해주는 오픈소스 시스템이다. 

 

해당 페이지에서 강조하는 내용은 다음과 같다. 

 

행성규모라고 할정도로 규모 확대에 용이하고 어디서든 유연하게 사용이 가능하다고 한다.

이러한 위 방식을 뒷받쳐 현재는 여러 기업에서 많이 사용되고 있는 추세이다. 

 

 

또한 쿠버네티스 공식문서에서 쿠버네티스가 제공해주는 기능을 확인해보면

 

  • 서비스 디스커버리와 로드 밸런싱 
    쿠버네티스는 DNS 이름을 사용하거나 자체 IP 주소를 사용하여 컨테이너를 노출할 수 있다. 컨테이너에 대한 트래픽이 많으면, 쿠버네티스는 네트워크 트래픽을 로드밸런싱하고 배포하여 배포가 안정적으로 이루어질 수 있다.
  • 스토리지 오케스트레이션
    쿠버네티스를 사용하면 로컬 저장소, 공용 클라우드 공급자 등과 같이 원하는 저장소 시스템을 자동으로 탑재할 수 있다.

  • 자동화된 롤아웃과 롤백 
    쿠버네티스를 사용하여 배포된 컨테이너의 원하는 상태를 서술할 수 있으며 현재 상태를 원하는 상태로 설정한 속도에 따라 변경할 수 있다. 예를 들어 쿠버네티스를 자동화해서 배포용 새 컨테이너를 만들고, 기존 컨테이너를 제거하고, 모든 리소스를 새 컨테이너에 적용할 수 있다.

  • 자동화된 빈 패킹(bin packing)
     컨테이너화된 작업을 실행하는데 사용할 수 있는 쿠버네티스 클러스터 노드를 제공한다. 각 컨테이너가 필요로 하는 CPU와 메모리(RAM)를 쿠버네티스에게 지시한다. 쿠버네티스는 컨테이너를 노드에 맞추어서 리소스를 가장 잘 사용할 수 있도록 해준다.

  • 자동화된 복구(self-healing)
     쿠버네티스는 실패한 컨테이너를 다시 시작하고, 컨테이너를 교체하며, '사용자 정의 상태 검사'에 응답하지 않는 컨테이너를 죽이고, 서비스 준비가 끝날 때까지 그러한 과정을 클라이언트에 보여주지 않는다.

  • 시크릿과 구성 관리 쿠버네티스를 사용하면 암호, OAuth 토큰 및 SSH 키와 같은 중요한 정보를 저장하고 관리할 수 있다. 컨테이너 이미지를 재구성하지 않고 스택 구성에 시크릿을 노출하지 않고도 시크릿 및 애플리케이션 구성을 배포 및 업데이트할 수 있다.

 

위 기능을 제공해준다고 한다.

 

따라서 내 입장에서

  • 컨테이너 관리에 있어서 불편했던 점을 해결할수 있는가? 
  • 많이 사용되고 찾을수 있는 자료가 많은가?  

두가지를 충족하였기 때문에 배우기로 시작하였다. 

 

 

 

쿠버네티스 기본 셋팅하기

 

이제 튜토리얼을 위해 쿠버네티스 공식 홈페이지에 접속한다.

 

https://kubernetes.io/

 

Production-Grade Container Orchestration

Production-Grade Container Orchestration

kubernetes.io

 

(원래는 https://kubernetes.io/ko (한글 번역 사이트) 를 활용하려 했으나 번역이 다 안되었고 버전이 다른 탓에 한글이 아닌 공식 홈페이지를 활용하기로 하였다.)

 

홈페이지의 Document를 클릭해서 해당 Tutorial 사이트에 접속하게 되면 

 

https://kubernetes.io/docs/tutorials/

 

Tutorials

Production-Grade Container Orchestration

kubernetes.io

 

쿠버네티스를 배우려했는데 Minikube라니?

 

 

위와같이 쿠버네티스가 아니라 Hello Minikube 라는 내용이 가장 먼저 나와있다. 

 

해당 내용을 확인하면 Minikube가 깔려있다는 가정하에 프로젝트를 시작하려 하는데 minikube가 무엇이고 왜 필요한지 부터 알아보겠다. 

 

minikube start 클릭시 아래 사이트로 넘어간다.

https://minikube.sigs.k8s.io/docs/start/

 

minikube start

minikube is local Kubernetes

minikube.sigs.k8s.io

 

해당 사이트를 살펴보면 

 

시작시 docker가 필요하다고 나와있다.

 

minikube는 mini + kube라고 볼수도있는데 로컬 환경에서 쿠버네티스 환경을 사용하고자 하는 툴이라고 할수 있겠다.

 

그러면 이러한 툴이 왜 필요할까?

  • 로컬 환경에서 구성이 가능하다.
    • 기존 AWS, GCP등 여러 비용을 청구하는 관리형 쿠버네티스의 경우 테스트로 사용하기 부담스럽다.
      AWS에서 쿠버네티스로 EC2 3개만 관리한다고 생각해도 방치할 경우 비용이 꽤 나갈 것이다.

    • Virtual Box등을 설치해 구성하는것도 가능하지만 공식문서에서도 minikube를 채택한 만큼 편하게 사용할수 있다.

이제 minikube를 설치하기전에 필수 사항부터 알아본다.

 

마지막 내용을 보면 Docker나 가상 머신 매니저가 필요하다고 나와있다. Docker가 깔려있다는 전제 하에 진행하려고한다. ( 도커 설치는 https://loy124.tistory.com/353  참조)

 

docker- docker 정의 및 docker 설치하기

docker의 정의 docker 도커는 컨테이너를 사용해서 응용프로그램을 더 쉽게 만들고 배포하고 실행할 수 있도록 설계된 도구이며 컨테이너 기반의 오픈소스 가상화플랫폼이다. 도커 없이 프로그램

loy124.tistory.com

 

 

이제 사이트에 작성되어있는 Installation에 따라 설치를 진행해준다. 나는 window 기반에서 exe 를 내려받아 설치를 진행했다.

 

 

설치가 완료되었다면 터미널을 켜서  minikube start를 진행하면

 

 

쿠버네티스 설치및 컨테이너를 만드는 작업을 진행한다. 

위처럼 설치가 마무리되면 성공적으로 minikube 설치가 완료되었다. 

 

kubectl get pods -A

해당 명령어를 치게 되면 현재 어떤 pod들이 동작하는지 알수 있다. 

이렇게 동작 여부까지 확인하게 되면 minikube에 대한 기초 작업이 마무리되었다. 

 

다음시간에는 해당 minikube를 기반으로 deploy/service 해보는 시간을 가지려고한다. 

 

https://loy124.tistory.com/402

 

쿠버네티스 공부하기 2 - 간단하게 deploy/service 하기

https://loy124.tistory.com/400 쿠버네티스 공부하기 1 - minikube 설치하기 쿠버네티스를 공부하기로 시작한 계기는 아무래도 내가 회사에서 개발 + 운영및 배포를 다같이 하면서 필요성에 의해 공부를 시

loy124.tistory.com

 

반응형