잡다한 시리즈/K8S

Apple Silicon 위에서 minikube 실행시키기

GGOBOOGI 2024. 10. 14. 22:22
반응형

이전에 오라클 DB를 M1에서 어떻게든 사용하려고 용쓰다가 설치한 docker desktop을 이용해서, k8s minikube를 실행할 수 있음을 알게 되어 그 방법을 공유한다.

 

이 포스팅의 결말은 애플 실리콘칩 위에서 minikube start 명령어를 통해 자동으로 docker 내에 k8s 클러스터를 구성해서, 로컬에서 kubectl get pods 와 같은 명령어를 마음껏  실행할 수 있는 환경을 얻게 된다.


1. Docker Desktop 설치하기

라떼 취준할때까지만 해도 M1 나온지 얼마 안됐을 시기라 공식 애플 실리콘칩 지원 프로그램이 별로 없었는데, 이제는 도커도 있네..

Docker 공식 사이트에 들어가면 메인에 있는 Download Docker Desktop에 마우스 호버를 하면, 애플 실리콘칩 타겟의 어플을 받을 수 있다.

dmg 파일을 내려줄거라 그냥 쉽게쉽게 설치가 가능하다.

 

오라클이 선택되어 있지만 실행중인 minikube 컨테이너를 봐주세요

그럼 이렇게 아주 손쉽게,,, 도커 대시보드를 만날 수 있다.

 

안에 컨테이너들은 이미 나는 이걸 깐지 시간이 지났다는 것을 보여준다. 만약 설치 과정중에 오류가 있다면 댓글로 함께 고민해보아요.

 

2. kubectl 설치하기

자 이제 도커가 준비되었으니 냅다 minikube를 띄우면 될까? 안된다. 그 이유는 minikube만 깔려있으면 뭘 할 수가 없기 때문이다.

 

minikube는 내 로컬 pc에서 k8s를 하나 이상의 노드로 띄울 수 있게 지원하여 로컬에서 여러가지 deploy를 실험해 볼 수 있다. 고로 얘 자체는 k8s를 로컬에서 미니미니하게 실행시켜주는 그 이상도 그 이하도 아니다.

그럼 결국엔 본질적으로 k8s를 사용하는 것이고, pod를 띄우건 죽이건 어쨋든 뭔가를 하려면 k8s의 control plane에게 시켜야 가능하다. 근데 그 control plane에게 일을 시키는 것은 k8s API를 통해서 가능하단 말이지. 그래서 우리는 kubectl이라는 command-line-tool 을 통해 적당한 명령어만 입력하면 알아서 k8s API를 이용하여 control plane으로 우리의 요구를 실행시켜주도록 할 것이다.

 

이 또한 쿠버네티스 공식 docs에 macOS 사용자를 위한 설치법이 친절히 나와있다. 나는 binary 파일 자체를 다운받는걸 선호해서 링크를 걸긴 했는데, homebrew를 사용하는게 편하다면 동일 페이지에서 스크롤 다운해서 방법을 찾아볼 수 있다.

 

다만 주의할 점은 꼭 Apple Sillicon의 명령어들을 실행할것!

 

 

 

설치가 다 됐다면 본문 내 있는 것 처럼 kubectl 명령을 하나 실행시켜보면 된다. 아래의 캡쳐저럼 문제없이 버전들이 출력된다면 잘 설치된 것이다.

어라 이제 kubectl 명령어가 되는 것 같다. 근데 이제 'kubectl get pods' 라는 언제나 우리의 마음을 진정시켜주는 커맨드를 냅다 날려보면? 아래와 같이 오류가 날 것이다. 왜일까?

 

정답은 간단하다. 우리가 방금 설치한 kubectl은 k8s API를 통해 control plane과 소통할 수 있게 해 주는 것인데, 현재 k8s 클러스터가 실행중이지 않기 때문에 API 서버도 존재하지 않는다. kubectl은 일을 하려고 일을 던질 상대를 찾지만 게 아무도 없는거지.

그러므로 우리는 minikube의 설치와 실행을 통해 k8s 클러스터를 실행시켜줘야 한다.

3. minikube 설치하기

얘도 역시나 친절한 minikube 공식 docs를 참고하면 된다.

단, 시스템 최소 필요조건이 있는데 마지막 조건을 빼고는 다 괜찮을 것이다. 마지막 조건도 우리는 이미 docker를 설치하고 왔기 때문에, 별 문제가 없다. 바아로 밑에 installation에서 arm-64 버전으로 딱 curl 해와서 딱 설치하면 된다.

 

그리고 minikube start 명령어를 통해 두근두근 k8s 클러스터를 실행시켜보면 된다! 별 일이 없다면 minikube가 알아서 docker를 물고 올라올 것이기 때문에, 따로 설정할 필요는 없다. 예전에는 컨테이너나 VM 종류에 따라서 드라이버를 명시해줬어야 했다는 것 같은데, 일단 지금 기준으로는 그렇지 않다.

그리고 만약 Exiting due to DRV_NOT_HEALTHY: Found driver(s) but none were healthy 와 같은 에러가 뜬다면, 도커 버전업을 한번 해보는 것이 좋다. 나의 경우는 버전업으로 해결되었고, 이 github 이슈를 통해 버전업을 해야겠다고 느꼈다. 또 안되는게 있다면.. 같이 고민해보아요?

 

minikube start를 하면 얘가 docker 위에다가 minikube 컨테이너를 띄워주는데, 이 컨테이너 이미지에는 쿠버네티스가 포함되어 있다. 또한 local 환경에서 컨테이너의 k8s로 명령이 오고갈 수 있도록 CNI도 자동 구성해주는 것으로 보였다.

 

이제 그 다음으로 할 일은? 신나게 로컬 터미널을 이용해서 k8s 자원 띄워보면 된다. 끝!

 

반응형