쿠버네티스(k8s) 스터디 - Windows에 minikube 설치 및 설정하기

3 minute read


쿠버네티스 환경 구성을 만약 minikube로 할 경우를 위해 가이드 작성

minikube is local Kubernetes, focusing on making it easy to learn and develop for Kubernetes. All you need is Docker (or similarly compatible) container or a Virtual Machine environment, and Kubernetes is a single command away: minikube start

즉, 가벼운 쿠버네티스 구현체이며 로컬 머신에 VM을 만들고 하나의 노드로 구성된 간단한 클러스터를 생성하는 것이 특징이다. Minikube를 사용하면 로컬에서 간단하게 쿠버네티스 클러스터를 구현할 수 있다. Minikube는 리눅스, 맥, 그리고 윈도우 시스템에서 구동이 가능하다.

필요 사양은 아래와 같다고 한다.

  • 2 CPUs or more
  • 2GB of free memory
  • 20GB of free disk space
  • Internet connection
  • Container or virtual machine manager, such as: Docker, QEMU, Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, or VMware Fusion/Workstation

minikube를 사용하는 목적

  • 쿠버네티스를 처음 입문하고 로컬 환경에서 손쉽게 쿠버네티스 명령어들을 실습하기 위해서 사용
  • Minikube는 가벼운 쿠버네티스 구현체이므로 로컬 환경에서 학습용으로 사용하기 적합
  • Minikube CLI는 클러스터에 대해 시작, 중지, 상태 조회 및 삭제 등의 기본적인 부트 스트래핑 기능을 제공

실습환경 : Windows 11 Pro, AMD Ryzen5 5600G, 16GB RAM, GTX 3060ti

1. VirtualBox 설치

Requirements

VirtualBox 5.2 or higher

2. minikube 설치

  1. PowerShell 또는 GitBash를 관리자 권한으로 실행
  2. To install the latest minikube stable release on x86-64 Windows using .exe download:

    Download and run the installer for the latest release.

    Or if using PowerShell, use this command:

     New-Item -Path 'c:\' -Name 'minikube' -ItemType Directory -Force
     Invoke-WebRequest -OutFile 'c:\minikube\minikube.exe' -Uri 'https://github.com/kubernetes/minikube/releases/latest/download/minikube-windows-amd64.exe' -UseBasicParsing
    
  3. Add the minikube.exe binary to your PATH(시스템 설정, 환경 변수에서 직접 추가해도 되고, 아래 명령어를 사용해도 됨).Make sure to run PowerShell as Administrator.

     $oldPath = [Environment]::GetEnvironmentVariable('Path', [EnvironmentVariableTarget]::Machine)
     if ($oldPath.Split(';') -inotcontains 'C:\minikube'){
       [Environment]::SetEnvironmentVariable('Path', $('{0};C:\minikube' -f $oldPath), [EnvironmentVariableTarget]::Machine)
     }
    

3. Cluster 시작

관리자 권한으로 실행한 터미널(PowerShell or others)에서

minikube start

만약 실패한다면, 드라이버 페이지에서 세팅하는 방법을 찾아서 직접 실행하기.

예를 들어, virtual box를 이용할 경우,

minikube start --driver=virtualbox --no-vtx-check --image-repository=auto

–no-vtx-check 옵션

! StartHost failed, but will try again: creating host: create: precreate: This computer is running Hyper-V. VirtualBox won't boot a 64bits VM when Hyper-V is activated. Either use Hyper-V as a driver, or disable the Hyper-V hypervisor. (To skip this check, use --virtualbox-no-vtx-check)

minikube start 명령어 실행 후, 위와 같은 fail error msg가 뜰 수 있다. BIOS에서도 설정했으나 위와 같은 에러가 계속 뜰 경우, ‘–no-vtx-check’ 옵션을 써야지 빌드가 됨.

Trouble shooting

  • 만약 minikube start 명령어 이후, 제대로 설치되지 않는다면, 아래를 차례대로 진행 후, 재설치 시도할 것

    1. minikube stop
    2. minikube delete
    3. minikube profile list
  • 최후의 수단은, minikube 폴더를 깔끔하게 지우는 것이다.

    1. 사용자 디렉토리에서 .minikube 디렉토리를 모두 지우자.
    2. 만약 Git Bash 이용중이라면,
        cd /c/Users/{유저명}
        rm -rf .minikube
      

설치 확인

$ minikube profile list
|----------|------------|---------|----------------|------|---------|---------|-------|----------------|--------------------|
| Profile  | VM Driver  | Runtime |       IP       | Port | Version | Status  | Nodes | Active Profile | Active Kubecontext |
|----------|------------|---------|----------------|------|---------|---------|-------|----------------|--------------------|
| minikube | virtualbox | docker  | 192.168.59.105 | 8443 | v1.30.0 | Running |     1 | *              | *                  |
|----------|------------|---------|----------------|------|---------|---------|-------|----------------|--------------------|

자주 사용하는 minikube 명령어 모음

$ minikube stop -p minibox
$ minikube start -p minibox
$ minikube stop
$ minikube start

$ minikube version
$ minikube node list

minikube 192.168.59.100

$ minikube node list -p minibox

minibox   192.168.59.101
minibox-m02   192.168.59.102
minibox-m03   192.168.59.103

$ minikube ip

192.168.59.100

$ minikube -p minibox ip

192.168.59.101

$ minikube -p minibox ip -n minibox-m02

192.168.59.102

$ minikube delete

🔥  Deleting "minikube" in virtualbox ...
💀  Removed all traces of the "minikube" cluster.

$ minikube delete -p minibox

🔥  Deleting "minibox" in virtualbox ...
🔥  Deleting "minibox-m02" in virtualbox ...
🔥  Deleting "minibox-m03" in virtualbox ...
💀  Removed all traces of the "minibox" cluster.

$ minikube start -n 숫자

1개의 master와 (숫자-1)개의 worker 노드를 생성함.
ex) -n 3이면, 1개의 마스터와 2개의 worker 노드가 생성됨.

minikube 에서 kubectl 명령어를 못 찾을 경우

대신 다음과 같이 minikube 명령 뒤에 kubectl – 를 추가해서 kubectl 명령을 사용해야 합니다.

$ minikube kubectl -- <kubectl commands>

즉 kubectl config get-clusters 를 실행하려면 다음처럼 입력하면 됩니다.

$ minikube kubectl -- config get-clusters

NAME
minikube

이렇게 사용하는 건 너무 불편하므로 alias 를 활용해서 minikube 환경에서도 kubectl 명령을 사용할 수 있습니다.

다음 명령어를 shell 초기화 파일(~/.bashrc, ~/.zshrc) 에 추가해 줍니다.

alias kubectl="minikube kubectl --"

설정이 끝났으면 반영하기 위해 다시 로그인하거나 설정 파일을 다시 읽기 위해 다음 명령을 실행합니다.

$ source ~/.bashrc

또는 링크를 생성하는 ln 명령어를 활용해도 됩니다.

$ sudo ln -sf $(which minikube) /usr/local/bin/kubectl

WINDOWS

다음 함수를 powershell 초기화 파일에 추가해 줍니다.

function kubectl { minikube kubectl -- $args }

확인 방법

설정이 잘 됐는지 확인하려면 직접 kubectl 명령을 실행해서 정상 동작 여부를 보면 됩니다.

$ kubectl get pods

NAME                   READY   STATUS    RESTARTS   AGE
mariadb-1641174600-0   1/1     Running   0          51m

Leave a comment