2023. 6. 23. 17:25ㆍ기술 창고/Kubernetes
kubernetes 를 로컬 환경에서 구현하고 세팅 및 설치하는 과정은 생각보다 많이 어렵다고 알고있습니다.
저 또한 주로 사용하는 노트북 사양에서 하려고 하니 가상 머신에 대한 필요 메모리 양이 생각보다 많아서 노트북으로는 진행하지 못하고 결국에는 회사 데스크탑 컴퓨터를 사용할 수 밖에 없었습니다.
이 어려운 초기 세팅 과정을 정리해보려고 합니다.
Hyper V 사용 허용
시작 버튼에 오른쪽 마우스 클릭하고 앱 및 기능을 선택해줍니다.
앱 및 기능에서 프로그램 및 기능을 눌러줍니다.
프로그램 및 기능에서 Windows 기능 켜기/끄기를 선택해줍니다.
Hyper-V 항목을 찾아서 체크하여 사용 허용을 해줍니다.
Hyper-V 는 kubernetes를 사용할 때 가상 머신 스위치라고 하는 가상의 실행 환경을 뜻한다고 보면 됩니다.
가상 서버에 컨테이너를 실행시키려고 하기 때문에 필수로 사용 허용을 해주어야 하는 셈입니다.
docker-machine 이 가상 머신인데 이 docker-machine 을 Hyper-V 에 연결하여 가상의 환경에서 시스템을 운영할 수 있도록 하는 것입니다.
허용을 완료했으면 컴퓨터를 다시 시작해야할 수도 있습니다.
다시 시작해주도록 합니다.
다시 시작 후 Hyper 라고 검색했을 때 Hyper-V 관리자가 나오는 것을 확인할 수 있습니다.
Hyper-V 관리자에 들어가면 자기 자신의 컴퓨터가 생성된 것을 확인할 수 있습니다.
선택해줍니다.
오른쪽 작업 항목에서 가상 스위치 관리자를 눌러줍니다.
새 가상 네트워크 스위치를 만들어줍니다.
외부 가상 스위치 유형을 선택하고 가상 스위치 만들기를 눌러줍니다.
이름을 정하고 외부 네트워크를 연결할 네트워크 어댑터를 설정해줍니다.
여기서 아마 첫 번째 문제에 봉착하게 될 것입니다.
주로 외부 가상 스위치가 만들어지지 않는다거나 어댑터 설정은 했는데 이후 shell 에서 docker machine 과 연동할 때 무한 로딩이 발생한다거나 하는 이슈가 많이 발생합니다.
저의 경우에 위의 이슈들이 노트북 환경에서 한번에 발생되어 데스크탑 환경에서 진행하였더니 무사히 진행되었습니다.
설정이 무사히 완료되었다면 큰 산 하나를 넘은 것과 다름이 없습니다.
docker-machine, kubectl, minikube 설치
저는 window 환경에서 진행하고 있기 때문에 실행 shell은 git bash를 이용해서 설치해주었습니다.
if [[ ! -d "$HOME/bin" ]]; then mkdir -p "$HOME/bin"; fi && \
curl -L https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" && \
chmod +x "$HOME/bin/docker-machine.exe"
git bash에 위 명령어를 입력하여 docker-machine 을 설치해줍니다.
docker-machine create --driver hyperv default
git bash에 create 명령어를 입력하여 docker-machine을 hyperv 드라이버를 사용하여 생성하게 만들어줍니다.
이름은 default라고 지어주었으나 아무런 이름이나 상관없습니다.
아마 다음 큰 산이 이 부분일 것입니다.
1. 외부 가상 머신 스위치가 제대로 설정되지 않았다면 연결이 실패
2. 생성 진행 도중 waiting host 단계에서 무한 로딩 발생
3. 생성 후 실행될 때 바로 exit 상태로 전환
4. 메모리 부족으로 인한 실행 실패
주로 이 네 가지 이슈가 많이 발생하곤 합니다.
# "외부 가상 머신 스위치가 제대로 설정되지 않았다면 연결이 실패"의 경우
- hyper v 관리자에서 외부 가상 스위치를 설정할 때 네트워크 어댑터를 변경해봅니다.
# "생성 진행 도중 waiting host 단계에서 무한 로딩 발생"의 경우
- 이 또한 외부 가상 머신 스위치가 제대로 설정되지 않았을 경우에 주로 발생되는 이슈로서 네트워크 어댑터를 변경해봅니다.
# "생성 후 실행될 때 바로 exit 상태로 전환"의 경우
- 명확한 해결법은 모르겠으나 저의 경우 컴퓨터를 껏다 키고나서 관리자 모드로 git bash를 실행하고 다시 명령어를 실행해주었더니 해결되었습니다.
# "메모리 부족으로 인한 실행 실패"의 경우
- 말 그대로 가상 머신을 구동하기 위한 메모리가 부족하여 발생된 이슈입니다.
현재 실행되고 있는 작업들 중 큰 메모리를 차지하는 작업을 종료시키거나 VM 관련 작업이 주로 메모리 용량을 많이 잡아먹는데 .wslconfig 파일을 만들어 용량을 줄이도록 해주거나 hyper V 관리자에 실패 생성된 가상 컴퓨터에 오른쪽 마우스를 클릭하여 나오는 설정을 누르고 네트워크 부분에서 사용 동적 메모리를 수동으로 늘려주거나 해야합니다.
docker-machine 이 정상적으로 생성되고 난 이후에 docker-machine ls 명령어를 입력했을 때 위와 같이 hyperv 드라이버, STATE : Running, URL : tcp ip주소, DOCKER 버전, ERRORS 내용 없음이 나오면 정상적으로 완료된 것입니다.
hyper-v 관리자에서도 default 이름을 가진 가상 컴퓨터가 생성된 것을 확인할 수 있습니다.
https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/
kubectl 설치 사이트에 가서 kubectl을 설치해줍니다.
이 때 설치한 kubectl을 C드라이브에 새로운 폴더를 만들어 넣어주겠습니다.
저의 경우에는 kube라는 새로운 폴더를 만들고 kubectl을 넣어주었습니다.
https://minikube.sigs.k8s.io/docs/start/
minikube 설치 사이트에 가서 the release page 에 들어가서 minikube_windows_amd65 바이너리 파일을 다운받고 이름을 편의성을 위해 minikube로 변경해줍니다.
latest release 를 눌러 minikube installer도 다운받고 설치해줍니다.
설치한 minikube 바이너리 파일과 minikube installer 를 kubectl이 존재하는 C드라이브 kube 폴더에 넣어줍니다.
그리고 폴더의 보기 항목 -> 옵션 -> 보기 탭 -> 알려진 파일 형식의 파일 확장명 숨기기를 체크 해제 해주고 적용해줍니다.
이제 환경 변수를 추가하여 minikube 와 kubectl 에 접근할 수 있도록 설정해주겠습니다.
시작 버튼에 오른쪽 마우스 클릭 -> 설정을 눌러줍니다.
고급 시스템 설정을 눌러줍니다.
고급 탭에 환경 변수를 눌러줍니다.
Path 환경 변수가 없다면 새로 만들어주고 있다면 편집을 눌러줍니다.
편집을 눌러 C드라이브에 있는 kube 폴더 경로를 잡아줍니다.
이제 kubectl 과 minikube에 접근이 가능한 상태가 되었습니다.
git bash 에 kubectl, minikube 를 입력했을 때 위와 같이 나온다면, 정상적으로 경로도 잡히고 설치도 정상적으로 되었다는 뜻입니다.
minikube start --vm-driver="hyperv" --hyperv-virtual-switch="{만든 외부 가상 머신 스위치 명}" 명령어를 입력하여 minikube를 실행해줍니다.
실행되는데 어느정도 시간이 걸립니다.
앞선 모든 준비 단계가 무사히 수행되었다면 정상적으로 실행이 완료될 것입니다.
hyper v 관리자에 minikube 가 정상적으로 실행되고 있음을 확인할 수 있습니다.
이 때 minikube 실행 시 필요한 메모리가 생각보다 꽤 크기 때문에 메모리 용량이 부족하다면 들려주셔야 합니다.
저처럼 노트북 환경으로 처음 시도하게 되면 아마 이 부분에서 막히게 되실 겁니다.
실행이 완료되고 kubectl version 을 입력했을 때 위와 같이 내용이 나온다면 무사히 실행이 된 것입니다.
이로서 kubernetes 로컬 세팅 과정이 완료되었습니다.
'기술 창고 > Kubernetes' 카테고리의 다른 글
[Kubernetes] Pod 생성 및 실행 (0) | 2023.06.26 |
---|---|
[Kubernetes] Pods (파드) (0) | 2023.06.26 |
[Kubernetes] docker 와 minikube container 실행 (0) | 2023.06.26 |
[Kubernetes] docker 와 minikube 초기 세팅 (0) | 2023.06.26 |
[Kubernetes] 쿠버네티스란? (0) | 2023.06.21 |