사내 프로젝트를 진행하며 Minikube를 사용하게 되었다. 즐겨쓰던 Docker Desktop이 부분 유료화가 되면서 회사 맥북에 설치된 도커 데스크탑을 Docker로 대체하기로 했다. (2022년 2월 1일 부로 대기업 사용자는 유료)
Minikube를 사용하려면 Docker가 필요고, 맥에서 Docker를 사용하려면 리눅스 가상환경이 필요하다. 가상환경은 virtualBox 대신 hyperkit를 사용하려 한다. 참고로, 도커 데스크탑은 자체적으로 hyperkit를 포함하고 있어서 hyperkit를 설치하지 않아도 minikube를 사용 가능했었다.
아래의 과정은 reference의 페이지를 보고 따라한 기록이다.
가상환경 위에 Linux Docker 환경을 구성하려면 Docker CLI, Kubernetes-cli, Minikube+dockerd, Hypderkit를 설치해주어야 한다.
삭제하려니 not installed 되었다고 하네..? 일단 응용프로그램으로 가서 Docker App을 삭제해준다.
$ brew uninstall docker
Error: Cask 'docker' is not installed.
설치중인 로그가 주루룩 나오더니 권한이 없다는 에러가 발생한다.
$ brew install hyperkit
Error: Permission denied @ apply2files - /usr/local/lib/docker/cli-plugins
구글링을 해보니 모하비 업그레이드 이후에 발생한 이슈라며, /usr/local 폴더의 접근 권한을 초기화하라고 한다.
초기화 이후 brew reinstall을 통해 패키지들을 재설치해었다.
Big Sur v11.6인 내 맥북에서는 이 방법으로 해결이 되었다.
This issue appeared after upgrading macOS to Mojave 10.14.X onwards.
Therefore, you need to reset the permissions in /usr/local:
$ sudo chown -R $(whoami):admin /usr/local/* \
&& sudo chmod -R g+rwx /usr/local/*
$ brew list --formula | xargs brew reinstall
Docker를 설치해주는데 이 때 --cast 옵션은 절대 사용하면 안된다. 왜냐면 Docker Desktop이 다시 설치되기 때문.
$ brew install docker
설치 후에 docker cli를 사용해 현황을 볼 수 있다. 아직은 Docker deamon이 설치되지 않아서 에러가 발생한다.
$ docker info
Client:
Context: default
Debug Mode: false
Server:
ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
errors pretty printing info
쿠버네티스 클러스터를 제어하기 위한 커맨드도구인 kubectl를 설치한다. 이 단계는 아무 문제없이 잘 설치된다.
$ brew install kubectl
이미 hyperkit가 설치되어 있으니 쿠버네티스 클러스터를 띄울 수 있다. minikube를 설치 후에 여러 pods를 띄울 성능을 위해 CPU와 memory limits을 설정해준다.
$ brew install minikube
$ minikube config set cpus 6
$ minikube config set memory 12g
설치가 되면 쿠버네티스 클러스터를 실행시켜보자. --kubernetes-version은 특정 쿠버네티스 버전을 지정하는 옵션인데 입력하지 않으면 가장 최신 버전으로 사용할 수 있다. --driver 옵션으로 hyperkit를 지정한다.
❯ minikube start --kubernetes-version=v1.19.14 --driver=hyperkit --container-runtime=docker
😄 Darwin 11.6 의 minikube v1.25.2
🙈 Exiting due to K8S_DOWNGRADE_UNSUPPORTED: Unable to safely downgrade existing Kubernetes v1.23.3 cluster to v1.19.14
💡 권장:
1) Recreate the cluster with Kubernetes 1.19.14, by running:
minikube delete
minikube start --kubernetes-version=v1.19.14
2) Create a second cluster with Kubernetes 1.19.14, by running:
minikube start -p minikube2 --kubernetes-version=v1.19.14
3) Use the existing cluster at version Kubernetes 1.23.3, by running:
minikube start --kubernetes-version=v1.23.3
kubectl을 사용하여 cluster 상태를 확인해보자
$ minikube kubectl get nodes
> kubectl.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
> kubectl: 50.65 MiB / 50.65 MiB [-----------] 100.00% 164.83 KiB p/s 5m15s
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane,master 17d v1.23.3
이제 쿠버네티스 클러스터도 띄웠고 docker daemon도 돌아가고 있다. docker info 명령어를 통해 상태를 한 번 확인해보자. 이제 docker를 정상적으로 사용할 수 있다.
$ docker info
Client:
Context: default
Debug Mode: false
Server:
Containers: 34
Running: 28
Paused: 0
Stopped: 6
Images: 16
Server Version: 20.10.12
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
...
Reference : Goodbye Docker Desktop, Hello Minikube!