서론
minikube가 무엇인지 알아보자
kubectl이 무엇인지 알아보자
Minikube cluster를 설치해보자
Minikube 란?
일반적으로 배포에 사용되는 쿠버네티스 클러스터는 위와 같은 구조를 가진다. 즉, 다수의 마스터 노드와 워커 노드를 가진다.
그리고 마스터 노드와 워커 노드들은 각자의 역할을 부여받는다. 위 그림에서 보다시피 하나의 노드는 하나의 물리 머신 또는 가상 머신이 된다.
만약 로컬 환경에서 이러한 구조를 테스트 해보고 싶다면 어떻게 할까?
작은 기능 하나를 테스트 하기 위해서 위와 같이 많은 노드를 가진 클러스터를 구성해 보는 것은 매우 어렵다.
(가상 머신을 많이 만들어서 테스트 한다고 해도, 일반적인 컴퓨터에서는 CPU와 RAM은 충분하지 않을 것이다.)
이같은 걱정을 해결해 주기위해서 오픈소스 프로젝트인 minikube가 존재한다.
minikube 클러스터는 기본적으로 노드 하나로 구성된 클러스터이다. 마스터 노드와 워커 노드가 하나의 머신에 함께 있는 것이다. 이 노드(머신)에는 컨테이너 런타임으로 Docker가 먼저 설치되어 있어야 한다.
minikube는 virtualbox의 한 가상환경(머신)에 설치해서 사용하고, 그 머신이 minikube 클러스터의 노드가 된다.
따라서 하나의 노드에서 쿠버네티스 컴포넌트들을 생성하고, 연결해서 테스트 해볼 수 있게 된다.
kubectl 이란?
minikube 클러스터가 노드에 구성되면 개발자는 클러스터와의 상호작용이 필요하다.
파드를 생성해야 할 것이고, ConfigMap, Service, Secret 등의 컴포넌트들을 생성 및 관리해야 할 것이다.
그래서 개발자와 쿠버네티스 클러스터와의 상호작용을 도와주는 command-line-tool인 kubectl이 있다.
minikube 노드에는 마스터 프로세스와 워커 프로세스가 구동된다. 마스터 프로세스는 쿠버네티스 클러스터의 entrypoint를 통해 Api server에 접속할 수 있다. 클러스터의 컴포넌트 생성 및 관리 등의 모든 요청은 Api server로 전달될 것이다.
Api server로의 요청은 여러 클라이언트를 통해서 보낼 수 있다.
쿠버네티스 dashboard의 UI를 통해 보낼 수 있고, 쿠버네티스 API를 직접 사용해서 보낼 수도 있고, command-line-tool인 kubectl을 통해 보낼 수도 있다.
중요한 점은 kubectl은 쿠버네티스 클러스터에 포함되지 않는다는 점이다.
Cloud cluster를 사용하든, hybrid cluster를 사용하든 kubectl은 단순히 클러스터와 상호작용하기 위한 도구일 뿐이다.
minikube cluster 구성하기
mac을 사용한다면 더 이상 볼 필요없이 본 영상의 39:34 부터 보고 따라하자.
그래도 나중에 linux기반의 서버에서 배포 할거면, 실제 환경과 동일한 가상 머신 정도는 구축해 보는게 좋지 않을까..?
ubuntu 가상환경 구축
가상환경이 필수이다.
virtualbox나 vmware를 통해 가상환경을 구축하자. ubuntu server CLI 환경이 좋을 듯 하다.
아래 블로그에 매우 설명이 잘 되어 있다. 그대로 따라하면 된다.
minikube는 CPU가 최소 2개 필요하다. 따라서 위 블로그의 과정을 따라한 뒤에 추가적인 설정이 필요하다.
방금 만든 가상 머신을 종료하고, '설정' -> '시스템' -> '프로세서' 로 들어온다.
그리고 프로세서 개수를 2로 설정한 후에 '확인'을 누른다.
가상머신을 백그라운드에서 실행시키고 싶다면 'shift'를 누른채로 시작 버튼을 누르면 된다.
백그라운드에서 실행할 때 자동으로 로그인이 되도록 하려면 아래 블로그를 참고하면 된다.
Docker 설치
minikube는 Docker를 컨테이너 런타임으로 사용한다.
따라서 아래 블로그를 따라서 먼저 Docker를 설치하자.
설치가 끝났다면 docker ps
명령어를 입력해 보자.
이렇게 잘 나온다면 다행이지만
위와 같은 에러가 날 수 있다.
해당 문제는 사용자가 /var/run/docker.sock 에 접근하려고 했지만 권한이 없어 발생하는 문제로, 사용자가 root:docker 권한을 가지고 있어야 한다.
root 권한을 가지고 실행하는 것은 권장되지 않으므로, 사용자를 docker group에 포함시켜주면 된다.
($USER 환경 변수는 현재 로그인한 사용자 아이디를 나타내므로 그대로 입력하면 된다.)
sudo usermod -a -G docker $USER
서버를 reboot 한 후 id를 입력해보자
그룹에 docker가 포함되었다. 이제 docker ps 등의 명령어를 사용할 수 있다.
(에러가 난 경우에 minikube는 docker를 사용하기 때문에 이 작업이 반드시 필요할 것이다.)
kubectl 설치
minikube 설치
minikube start
를 실행 했다면, 다음 명령어를 순서대로 입력해보자.
kubectl get nodes
minikube status
위와 같이 나온다면 성공한 것이다.
minikube status를 보면 kubelet: Running을 볼 수 있다.
kubelet은 컨테이너 런타임을 사용해서 파드를 생성하는 역할을 수행한다.
kubectl CLI : Minikube 클러스터를 설정하는데 사용하는 도구
Minikube CLI : 클러스터의 실행과 삭제를 위한 도구
출처 : https://www.youtube.com/watch?v=X48VuDVv0do
번역 : 나
Chapter : Minikube and kubectl - Local Setup
'DevOps > Kubernetes' 카테고리의 다른 글
[kubernetes] #6 쿠버네티스 YAML 설정 파일 (0) | 2022.03.02 |
---|---|
[kubernetes] #5 핵심 kubectl 명령어 (0) | 2022.03.01 |
[kubernetes] #3 쿠버네티스 아키텍처 (0) | 2022.02.27 |
[Kubernetes] #2 핵심 쿠버네티스 컴포넌트 (0) | 2022.02.27 |
[Kubernetes] #1 쿠버네티스란? (0) | 2022.02.26 |