Slicon M1 Mac에서 쿠버네티스 환경 구축하기 (feat. lima+minikube)

Slicon M1 Mac에서 쿠버네티스 환경 구축하기 (feat. lima+minikube)
Photo by Maximilian Weisbecker / Unsplash

지난 글 에서는 Lima 를 활용하여 docker 개발환경을 구축해 보았고 이번에는 lima 를 minikube의 드라이버로 설정하여 쿠버네티스 개발환경을 구축해보기로 했다.

1. Lima 구동

limactl start
export DOCKER_HOST=unix://$HOME/docker.sock
docker ps

2. minikube 설치

brew install minikube
# docker 드라이버에 containerd를 컨테이너 런타임으로 사용하여 kube 환경구축
minikube start --driver=docker --container-runtime=containerd

3. minikube 실행 시, VM 메모리 부족 대응

VM 메모리 부족에러가 발생하는 경우 아래 두가지 방법 중 하나를 선택해서 실행한다.

1) 컨테이너 사이즈 설정 변경

minikube config set memory 2048

2) VM 메모리 재설정

VM 메모리를 재설정하기 위해 아래 내용을 ~/.lima/default/lima.yaml 에 추가 또는수정 후 VM 을 재시작 해준다.

# CPUs: if you see performance issues, try limiting cpus to 1.
# Default: 4
cpus: 4

# Memory size
# Default: "4GiB"
memory: "8GiB"

# Disk size
# Default: "100GiB"
disk: "100GiB"

4. minikube 구동 확인

5. minikube dashboard 설치 및 확인

# 애드온 설치 확인
minikube addons list
# 대쉬보드 설치
minikube addons enable dashboard
# 대쉬보드 실행
minikube dashboard

6. minikube 기본 명령어

Basic Commands:
  start          로컬 쿠버네티스 클러스터를 시작합니다
  status         로컬 쿠버네티스 클러스터의 상태를 가져옵니다
  stop           실행 중인 로컬 쿠버네티스 클러스터를 중지합니다
  delete         로컬 쿠버네티스 클러스터를 삭제합니다
  dashboard      minikube 클러스터 내의 쿠버네티스 대시보드에 접근합니다
  pause          쿠버네티스를 잠시 멈춥니다
  unpause        잠시 멈췄던 쿠버네티스를 재개합니다

Images Commands:
  docker-env     Configure environment to use minikube's Docker daemon
  podman-env     Configure environment to use minikube's Podman service
  cache          minikube에 로컬 이미지를 추가하거나 삭제, 푸시합니다
  image          Manage images

Configuration and Management Commands:
  addons         Enable or disable a minikube addon
  config         Modify persistent configuration values
  profile        Get or list the current profiles (clusters)
  update-context Update kubeconfig in case of an IP or port change

Networking and Connectivity Commands:
  service        서비스에 연결된 URL을 반환합니다
  tunnel         Connect to LoadBalancer services

Advanced Commands:
  mount          특정 디렉토리를 minikube 에 마운트합니다
  ssh            (디버깅을 위해) minikube 환경에 접속합니다
  kubectl        클러스터 버전에 맞는 kubectl 바이너리를 실행합니다
  node           노드를 추가하거나 삭제, 나열합니다
  cp             Copy the specified file into minikube

Troubleshooting Commands:
  ssh-key        Retrieve the ssh identity key path of the specified node
  ssh-host       Retrieve the ssh host key of the specified node
  ip             지정된 노드의 IP 주소를 가져옵니다
  logs           로컬 쿠버네티스 클러스터를 디버그하기 위해 로그를 반환합니다
  update-check   현재 그리고 최신 버전을 출력합니다
  version        minikube 의 버전을 출력합니다
  options        Show a list of global command-line options (applies to all commands).