쿠버네티스 공부하기 1 - minikube 설치하기
쿠버네티스를 공부하기로 시작한 계기는 아무래도 내가 회사에서 개발 + 운영및 배포를 다같이 하면서 필요성에 의해 공부를 시작하게 되었다.
Docker 기반으로 컨테이너 관리는 docker-compose 정도에 그쳤고 그 이상 각자 다른서버에 있는 컨테이너를 관리하기에는 어느정도 한계가 있었다.
위와같이 관리하는 서버와 컨테이너는 늘어나고.. 이를 위해 각 서버마다 명령어 리눅스 명령어 쉘을 만들고
그걸 젠킨스로 쉘을 실행시켜 어느정도 자동화 까지는 이뤄냈지만 이것도 어느정도 한계가 있기 마련이였다.
그에 따라 쿠버네티스 공부를 시작하기로 하였다.
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 키와 같은 중요한 정보를 저장하고 관리할 수 있다. 컨테이너 이미지를 재구성하지 않고 스택 구성에 시크릿을 노출하지 않고도 시크릿 및 애플리케이션 구성을 배포 및 업데이트할 수 있다.
위 기능을 제공해준다고 한다.
따라서 내 입장에서
- 컨테이너 관리에 있어서 불편했던 점을 해결할수 있는가?
- 많이 사용되고 찾을수 있는 자료가 많은가?
두가지를 충족하였기 때문에 배우기로 시작하였다.
쿠버네티스 기본 셋팅하기
이제 튜토리얼을 위해 쿠버네티스 공식 홈페이지에 접속한다.
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
위와같이 쿠버네티스가 아니라 Hello Minikube 라는 내용이 가장 먼저 나와있다.
해당 내용을 확인하면 Minikube가 깔려있다는 가정하에 프로젝트를 시작하려 하는데 minikube가 무엇이고 왜 필요한지 부터 알아보겠다.
https://minikube.sigs.k8s.io/docs/start/
minikube start
minikube is local Kubernetes
minikube.sigs.k8s.io
해당 사이트를 살펴보면
minikube는 mini + kube라고 볼수도있는데 로컬 환경에서 쿠버네티스 환경을 사용하고자 하는 툴이라고 할수 있겠다.
그러면 이러한 툴이 왜 필요할까?
- 로컬 환경에서 구성이 가능하다.
- 기존 AWS, GCP등 여러 비용을 청구하는 관리형 쿠버네티스의 경우 테스트로 사용하기 부담스럽다.
AWS에서 쿠버네티스로 EC2 3개만 관리한다고 생각해도 방치할 경우 비용이 꽤 나갈 것이다. - Virtual Box등을 설치해 구성하는것도 가능하지만 공식문서에서도 minikube를 채택한 만큼 편하게 사용할수 있다.
- 기존 AWS, GCP등 여러 비용을 청구하는 관리형 쿠버네티스의 경우 테스트로 사용하기 부담스럽다.
이제 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