본문 바로가기
Kubernetes

[ minikube ] 환경 세팅하기_Minikube 설치 + kubectl 설치

by 쑨토리 2023. 7. 7.
반응형

minikube란 ?

미니큐브는 쿠버 네티스의 light한 버전이고 k8s와 달리 다중 노드가 아닌, 한 개의 노드만 들어있다.

즉 마스터서버 (api server, etcd , controller, scheduler) + 노드(proxy, kubelet)를 함께 운영

 

왜 사용할까?

minkube는 실 운영용 k8s은 너무나도 설정할 것들이 많고 여러개의 서버가 존재하기때문에 개발 환경 및 테스트용으로는 적합하지않다. 그렇기 때문에 나온게 minkube(+ k3s =>하나의 서버에서 master와 node를 관리)

 

 

https://www.youtube.com/watch?v=E2pP1MOfo3g

 

 

 

# kubectl version

미니 큐브는 싱글 노드라 하나만 나옴

미니큐브라는 노드 하나에 마스터노드 워크노드 둘 다 함께 있음.

여러개가 함께 보여지는 것은 멀티 노드에서 볼 수 있다.

 



▶ Minikube 설치(Single Node: Master Node + Worker Node)

 


▼ VirtualBox 에서 세팅하기
 (미리 저장해둔 ova 파일로 minikube를 생성해 줄 것임.)

 

가져오기 완료후 설정에서 MAC 주소 새로고침 해주기!

 

 

 

 


위에서 얻은 minikube 아이피를 가지고 모바엑스텀/터미널로 이동 > 세팅해주기.

 

 

 

# yum update -y 

"yum update -y" 명령은 CentOS, Fedora 및 기타 Linux 배포판에서 사용되는 Yellowdog Updater Modified (YUM) 패키지 매니저를 사용. 이 명령은 시스템에 설치된 모든 패키지를 최신 버전으로 업데이트하는 데 사용.

- "yum"은 패키지 매니저인 YUM을 가리킵니다.
- "update"는 패키지를 업데이트하는 명령입니다.
- "-y"는 업데이트 과정 중에 발생하는 모든 프롬프트나 확인 창에 자동으로 "예"라고 응답하는 옵션입니다. 이렇게 하면 수동 개입 없이 명령이 실행될 수 있습니다.

"yum update -y" : 패키지 매니저가 시스템에 구성된 저장소를 확인하고 설치된 모든 패키지를 최신 버전으로 업데이트합니다.

 

# hostnamectl set-hostname minikube

-  알아보기 쉽게 hostname을 minikube라고 변경해주기.

 

 

# curl -fsSL https://get.docker.com/ | sudo sh

- 도커 설치해주기

결과적으로, 위의 명령은 curl을 사용하여 Docker 설치 스크립트를 다운로드하고, 다운로드한 스크립트를 슈퍼유저 권한으로 실행하여 Docker를 설치하는 과정을 수행.

"curl -fsSLhttps://get.docker.com/| sudo sh" 명령은 Docker를 설치하기 위해 사용되는 일련의 명령어입니다. 이 명령은 다음과 같은 역할을 수행합니다:

1. "curl" 명령은 URL을 통해 데이터를 다운로드하는 명령입니다.
2. "-fsSL"은 curl의 옵션으로, 다운로드를 조용하게(-s), 오류 메시지를 표시하지 않게(-S), 리다이렉션을 따르게(-L) 설정합니다.
3. " https://get.docker.com/ "은 Docker 설치 스크립트가 호스팅된 URL입니다. curl을 사용하여 해당 URL에서 스크립트를 다운로드합니다.
4. "|"는 파이프라인 연산자로, 앞의 명령의 출력을 뒤의 명령의 입력으로 전달합니다.
5. "sudo sh"는 다운로드한 Docker 설치 스크립트를 실행하는 명령입니다. "sudo"는 슈퍼유저(root) 권한으로 실행하도록 하며, "sh"는 스크립트를 실행하는 셸입니다.

 

 

# systemctl enable --now docker

"systemctl enable --now docker" 명령을 실행하면 Docker 서비스가 부팅 시 자동으로 활성화되고 즉시 시작됩니다.

 

▼ GPT 부가설명

더보기

▼ GPT 부가설명"systemctl enable --now docker" 명령은 systemd를 사용하는 Linux 시스템에서 Docker 서비스를 활성화하고 자동으로 시작하도록 설정하는 명령입니다.

각 부분의 역할은 다음과 같습니다:
- "systemctl"은 systemd를 사용하여 시스템 서비스를 관리하는 명령입니다.
- "enable"은 서비스를 부팅 시 자동으로 활성화하는 옵션입니다.
- "--now"는 서비스를 즉시 시작하는 옵션입니다.
- "docker"는 Docker 서비스의 이름입니다. 

이를 통해 Docker가 시스템 부팅 시에 자동으로 실행되며 사용할 수 있습니다.


# yum install -y conntrack git

▼ GPT 부가설명

더보기

"yum install -y conntrack git" 명령은 CentOS, Fedora, 또는 기타 YUM을 사용하는 Linux 배포판에서 conntrack과 git 패키지를 설치하는 명령입니다.
각 부분의 역할은 다음과 같습니다:
- "yum"은 YUM 패키지 매니저를 실행하는 명령입니다.
- "install"은 패키지를 설치하는 명령입니다.
- "-y"는 설치 과정에서 나오는 모든 프롬프트를 자동으로 "yes"로 응답하는 옵션입니다.
- "conntrack"은 네트워크 연결 추적에 사용되는 패키지입니다. 네트워크 연결 추적은 네트워크 패킷을 추적하고 연결 상태를 확인하는 데 사용됩니다.
- "git"은 버전 관리 시스템인 Git을 설치하는 패키지입니다. Git은 소스 코드 및 파일 버전 관리, 협업 작업 등에 사용됩니다.

따라서 "yum install -y conntrack git" 명령을 실행하면 conntrack과 git 패키지가 YUM을 통해 자동으로 설치되며, 설치 과정에서 나오는 프롬프트에 대해 자동으로 "yes"로 응답합니다.

 

 

# curl -Lo minikube https://storage.googleapis.com/minikube/releases/v1.23.2/minikube-linux-amd64 && chmod +x minikube

 

curl을 사용하여 Minikube 바이너리를 다운로드하고, 다운로드한 파일에 실행 가능한 권한을 부여.

> Minikube를 Linux 시스템에서 실행할 수 있게 됨.

 

▼ GPT 부가설명

더보기

"curl -Lo minikubehttps://storage.googleapis.com/minikube/releases/v1.23.2/minikube-linux-amd64&& chmod +x minikube" 명령은 Minikube 바이너리를 다운로드하고 Linux 시스템에서 실행 가능한 권한을 부여하기 위해 사용됩니다. 명령의 각 부분은 다음과 같은 역할을 수행합니다:

- "curl"은 HTTP를 포함한 다양한 프로토콜을 사용하여 데이터를 전송하는 명령행 도구입니다.
- "-Lo minikube"는 curl의 옵션을 지정합니다. "-L"은 URL이 이동한 경우 리디렉션을 따르도록 curl에 지시하며, "-o minikube"는 출력 파일 이름을 "minikube"로 지정합니다.
- " https://storage.googleapis.com/minikube/releases/v1.23.2/minikube-linux-amd64 "는 Minikube 바이너리가 호스팅된 URL입니다. curl을 사용하여 해당 URL에서 바이너리를 다운로드합니다.
- "&&"는 명령을 연결하는 논리 연산자로, 앞의 명령이 성공적으로 실행된 후에만 뒤의 명령을 실행합니다.
"chmod +x minikube"는 "minikube" 파일에 실행 가능한 권한을 부여하는 명령입니다.

따라서 "curl -Lo minikube https://storage.googleapis.com/minikube/releases/v1.23.2/minikube-linux-amd64 && chmod +x minikube" 명령을 실행하면 curl을 사용하여 Minikube 바이너리를 다운로드하고, 다운로드한 파일에 실행 가능한 권한을 부여합니다. 이를 통해 Minikube를 Linux 시스템에서 실행할 수 있게 됩니다.

curl 명령으로 미니큐브 설치파일을 다운받은 이후, ls 명령을 통해 확인해볼 수 있다. 

 

 

# mkdir -p /usr/local/bin/

혹시나 위의 경로가 없을 것을 대비해서 넣어줌. 이미 있다면 overwrite

 

 

# install minikube /usr/local/bin/

# minikube version

여기까지 진행했을때,

위에서 curl명령으로 받은 minikube 지금 install 명령으로 설치한 minikube는 다른것인가?

둘 다 설치하는 명령이 아닌가? 하는 의문이 생겼다. 

 

챗 GPT에게 물어보았더니, 아래 와 같은 답을 주었다. 

"curl -Lo minikube https://storage.googleapis.com/minikube/releases/v1.23.2/minikube-linux-amd64 && chmod +x minikube" 명령과 "install minikube /usr/local/bin/" 명령은 둘 다 Minikube 바이너리를 다운로드하고 실행 가능한 파일로 만드는 것을 목적으로 합니다.

그러나 명령어 간에는 몇 가지 차이점이 있습니다.
1. "curl -Lo minikube" 명령은 curl을 사용하여 Minikube 바이너리를 다운로드합니다. curl 명령을 사용하여 원격 URL에서 파일을 가져와 로컬 시스템에 저장합니다.
2. "chmod +x minikube" 명령은 "minikube" 파일에 실행 가능한 권한을 부여합니다. 이 명령은 "minikube" 파일을 실행 가능한 바이너리로 설정하여 해당 파일을 실행할 수 있게 합니다.
3. "install minikube /usr/local/bin/" 명령은 다운로드한 Minikube 바이너리를 "/usr/local/bin/" 경로에 설치합니다. 이 명령은 다운로드한 바이너리 파일을 지정된 경로로 이동하고 실행 가능한 권한을 부여하여 바이너리를 시스템의 전역 실행 경로에 설치합니다.

따라서 두 명령 모두 Minikube 바이너리를 다운로드하고 실행 가능한 파일로 만듭니다.
그러나 "curl -Lo minikube" 명령은 파일을 현재 디렉토리에 다운로드하고 실행 가능한 권한을 부여합니다.
반면에 "install minikube /usr/local/bin/" 명령은 파일을 "/usr/local/bin/" 경로로 이동하여 전역 실행 경로에 설치합니다.

위 답변에 따르면 우리가 어떤 프로그램을 설치할때 설치 파일을 먼저 내려받는게 curl명령으로 받은 과정이고,

그 설치 파일을 더블클릭해서 실제 컴퓨터 C드라이브와 같은 경로로 설치를 진행하는 과정이 install 과정이다. 

 

 

# minikube start --driver=none

 

가벼운 실습을 할 경우에는 미니 큐브를 설치해서 실행할 수 있다. 

미니큐브 설치하면 아래 두줄의 자격증명이 나옴

- sudo mv /root/.kube /root/.minikube $HOME
- sudo chown -R $USER $HOME/.kube $HOME/.minikube

마스터 노드의 api에 접근하기 위해 자격증명이 필요함.

따라서 위 두줄을 통해 세팅을 마무리할 수 있음. 한줄씩 복사해서 쳐주기!

 

▼ GPT 부가설명

더보기

"minikube start --driver=none" 명령은 Minikube를 실행할 때, 가상화 기술을 사용하지 않고 로컬 호스트에 직접 Kubernetes 클러스터를 시작하는 옵션입니다. 여기서 각 부분의 역할을 설명하겠습니다:

- "minikube"는 Minikube 도구를 실행하는 명령입니다.
- "start"는 Minikube 클러스터를 시작하는 명령입니다.
- "--driver=none"은 Minikube가 가상화 드라이버를 사용하지 않고 로컬 호스트에 직접 클러스터를 시작하도록 지시하는 옵션입니다. 이는 호스트 시스템의 컨테이너 런타임을 사용하지 않고 직접 클러스터를 실행하는 방식입니다. 일반적으로 가상화 드라이버를 사용하면 보다 격리된 환경에서 Kubernetes 클러스터를 실행할 수 있습니다. 그러나 가상화를 사용하지 않으면 호스트 시스템 자원을 직접 사용하므로 클러스터 성능이 좋아질 수 있습니다.

따라서 "minikube start --driver=none" 명령을 실행하면 Minikube가 가상화 기술을 사용하지 않고 로컬 호스트에 직접 Kubernetes 클러스터를 시작합니다. 이렇게 하면 가상화 드라이버를 사용하지 않고도 호스트 시스템의 리소스를 활용하여 빠르고 경량화된 클러스터를 실행할 수 있습니다.

 

 


 

▶ kubectl 설치

- kubectl은 쿠버네티스에 명령을 전달하기위한 프로그램이다.

쿠버네티스 ctl (api서버와 긴밀한 통신을 하면서 직접 오더를 날릴 수 있음) 

 

< kubectl 설치 파일 받고, 권한 설정하고 원하는 경로에 kubectl 설치하기. >
# curl -LO https://dl.k8s.io/release/v1.22.2/bin/linux/amd64/kubectl
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

 

< 자동완성기능 설치하기 >
# yum install bash-completion -y

 

 

▼ GPT 부가설명

더보기

"curl -LO https://dl.k8s.io/release/v1.22.2/bin/linux/amd64/kubectl" 명령은 curl을 사용하여 Linux 시스템에서 Kubernetes 클러스터를 제어하는 kubectl 도구의 바이너리를 다운로드합니다. 각 부분의 역할은 다음과 같습니다:

- "curl"은 데이터를 다운로드하는 명령입니다.
- "-LO"는 curl의 옵션으로, "-L"은 URL이 리디렉션을 따를 수 있도록 하는 옵션입니다. "-O"는 다운로드된 파일을 원래 이름으로 저장하는 옵션입니다.
- "https://dl.k8s.io/release/v1.22.2/bin/linux/amd64/kubectl"은 kubectl 바이너리가 호스팅된 URL입니다. curl을 사용하여 해당 URL에서 바이너리를 다운로드합니다.

"install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl" 명령은 다운로드한 kubectl 바이너리를 /usr/local/bin/kubectl 경로로 설치하는 명령입니다. 각 부분의 역할은 다음과 같습니다:

- "install"은 파일을 설치하는 명령입니다.
- "-o root -g root"는 설치된 파일의 소유자를 root로, 그룹을 root로 설정하는 옵션입니다.
- "-m 0755"는 설치된 파일의 퍼미션을 0755로 설정하는 옵션입니다. 여기서 0755는 소유자에게 읽기, 쓰기, 실행 권한을 부여하고, 그룹과 기타 사용자에게는 읽기와 실행 권한을 부여하는 권한 설정입니다.
- "kubectl"은 설치할 파일의 이름입니다.
- "/usr/local/bin/kubectl"은 설치할 경로와 파일 이름입니다.

따라서 위의 두 명령을 실행하면 kubectl 바이너리를 다운로드하고, 해당 바이너리를 root 소유자로 설정하고, /usr/local/bin/kubectl 경로에 설치합니다. 이를 통해 kubectl을 시스템 전역에서 실행할 수 있게 됩니다.

 


# source <(kubectl completion bash)
# echo "source <(kubectl completion bash)" >> ~/.bashrc
# exit

더보기

"source <(kubectl completion bash)" 명령은 kubectl의 bash 자동 완성 스크립트를 현재 셸에 적용하는 명령입니다. 각 부분의 역할은 다음과 같습니다:

- "source"는 스크립트 파일을 현재 셸에서 실행하는 명령입니다. 스크립트 파일의 내용은 현재 셸에 적용됩니다.
- "<()"는 프로세스 서브스튜디오라고도 불리며, 커맨드의 출력을 파일처럼 취급하는 Bash의 기능입니다.
- "kubectl completion bash"는 kubectl의 bash 자동 완성 스크립트를 실행하여 Bash 셸의 자동 완성 기능을 설정합니다.

따라서 "source <(kubectl completion bash)" 명령을 실행하면 kubectl의 bash 자동 완성 스크립트를 현재 셸에 적용하여, kubectl 명령어를 사용할 때 Bash 자동 완성 기능을 활용할 수 있습니다.

 



"echo "source <(kubectl completion bash)" >> ~/.bashrc" 명령은 kubectl의 bash 자동 완성 설정을 영구적으로 유지하기 위해 .bashrc 파일에 해당 설정을 추가하는 명령입니다. 각 부분의 역할은 다음과 같습니다:

- "echo"는 문자열을 출력하는 명령입니다.
- ">>"는 리다이렉션 연산자로, 표준 출력을 파일에 추가합니다.
- "~/.bashrc"는 현재 사용자의 홈 디렉토리에 위치한 .bashrc 파일을 나타냅니다. .bashrc 파일은 Bash 셸의 시작 스크립트로, 셸이 시작될 때 실행되는 명령을 포함할 수 있습니다.


따라서 "echo "source <(kubectl completion bash)" >> ~/.bashrc" 명령을 실행하면 .bashrc 파일의 끝에 "source <(kubectl completion bash)" 라인을 추가하여, 새로운 셸 세션이 시작될 때마다 kubectl의 bash 자동 완성 설정이 자동으로 적용됩니다.

 


# kubectl version

 

# kubectl get node

 

더보기

- 쿠버네티스 ctl (api서버와 긴밀한 통신을 하면서 직접 오더를 날릴 수 있음)
# curl -LO https://dl.k8s.io/release/v1.22.2/bin/linux/amd64/kubectl
# install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# yu

 


https://ssoontory.tistory.com/303

 

[ minikube ] minikube로 진행하는 쿠버네티스 실습. _쿠버네티스 cli 사용법 + yaml 파일 사용법 + 버전

미니큐브란? 미니큐브(Minikube)는 로컬 개발 환경에서 Kubernetes 클러스터를 구동할 수 있게 해주는 도구입니다. Kubernetes는 분산 컨테이너 오케스트레이션 플랫폼으로, 애플리케이션을 여러 개의

ssoontory.tistory.com