지난번 글에서 뭔가 설치를 해보긴 했는데,
실질적으로 할 수 있는게 없어서
좀 더 찾아봤더니 베이그런트를 이용하면
Kubernetes 환경이 조성되어 있는?
설치를 쉽게 할 수 있다는 걸 알게 되어 찾아서 한번 해봤다.
먼저 베이그런트(Vagrant)에 대해서 짧게 설명하면,
사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요할 때 시스템을 사용할 수 있는 상태로 만들어 줍니다.(프로비저닝) |
이라고 한다. 내용만 보면 도커 같은 SW이지 않을까 싶다.
나는 rocky8에서 설치를 해봤다.
그럼 시작해 보겠다.
1. Vagrant 설치.
https://developer.hashicorp.com/vagrant/downloads
Install | Vagrant | HashiCorp Developer
Explore Vagrant product documentation, tutorials, and examples.
developer.hashicorp.com
해당 사이트 들어가서 OS에 맞게 설치하면 된다. 여기까진 딱히 설명할 건 없을 것 같다.
2. 가상환경 툴 설치(VirtualBox, VM Ware, HyperV)
Vagrant를 사용하기 위해선 가상 머신이 필요한데,
실제로 밑에서 설명하겠지만 Vagrant를 실행하면 가상머신에 해당 환경이 설치된다.
일단 나는 VirualBox 이용해서 진행해봤다.(나중에 찾아보니 KVM도 되는 것 같다..)
https://www.virtualbox.org/wiki/Downloads
Downloads – Oracle VM VirtualBox
Download VirtualBox Here you will find links to VirtualBox binaries and its source code. VirtualBox binaries By downloading, you agree to the terms and conditions of the respective license. If you're looking for the latest VirtualBox 6.1 packages, see Virt
www.virtualbox.org
해당 사이트에서 최신 버전을 다운 받아서 설치했다.
여기서 주의할 점이 하나 있는데,
Vagrant에는 지원되는 가상 머신의 버전이 정해져 있다.
그러니 자신이 설치한 Vagrant의 버전에서 지원되는 VirtualBox를 설치해야 한다.
나는 Vagrant 2.3.7에 VirtualBox 7.0.x대 버전을 사용했다.
여기까지 설치한 후 테스트할 경로를 하나 만든다.
이후 해당 경로로 이동한 후,
vagrant init |
해당 명령을 입력하면 Vagrantfile 이라는 파일이 해당 경로에 하나 생성된다.
Vagrantfile은 내가 어떤 환경을 가져다 설치하고, 어떤 IP 대역을 사용할 건지 등에 대한 셋팅 정보를 가지고 있는 파일이다.
자세한 설명은 글 쓰면서 밑에서 정리하도록 하겠다.
여기서 당장 알아야할 정보는
config.vm.box = "내가 사용할 이미지" |
해당 부분이다. 여기서 내가 사용할 이미지는 이미 누군가가 만들어 둔 이미지로
https://app.vagrantup.com/boxes/search
해당 사이트에서 원하는 이미지를 클릭하면
이런식으로 어떤 값을 넣어야 하는지 확인할 수 있다.
여기까지 했다면 이제 프로비저닝을 진행할건데,
vagrant up |
명령을 치면 진행된다.
내 경우에 위의 명령을 실행하고 나니
error info No usable default provider could be found for your system. Vagrant relies on interactions with 3rd party systems, known as "providers", to provide Vagrant with resources to run development environments. Examples are VirtualBox, VMware, Hyper-V. The easiest solution to this message is to install VirtualBox, which is available for free on all major platforms. If you believe you already have a provider available, make sure it is properly installed and configured. You can see more details about why a particular provider isn't working by forcing usage with vagrant up --provider=PROVIDER, which should give you a more specific error message for that particular provider. |
위와 같은 에러가 떠서 해결한다고 고생했다.
먼저 에러 내용만 보면, 나는 분명 VirtualBox를 설치했음에도 불과하고,
Vagrant를 실행할 제공자(VirtualBox, VMware, Hyper-V)가 없다는 에러가 뜬다.
그래서 여러모로 찾아봤고,
해결 방안은 2가지였다.
첫번째는 위에서 언급했었는데, Vagrant에서 지원되는 가상머신을 설치해야 된다는 점이다. 위의 경우는 그냥 지우고 버전만 맞게 설치해주면 금방 해결된다. 하지만 나의 경우에는 두번째 상황이었다. |
두번째는 Secure Boot mode를 사용하는 경우였다. 위의 에러에서 보면 "vagrant up --provider=PROVIDER, which should give you a more specific" 해당 문장이 있는데, vagrant up --provider=virtualbox 이런식으로 실행할 provider를 지정할 수 있고, 이렇게 실행하면 좀 더 자세한 에러 사항을 확인할 수 있었다. vboxdrv.sh: Stopping VirtualBox services. vboxdrv.sh: Starting VirtualBox services. vboxdrv.sh: You must sign these kernel modules before using VirtualBox: vboxdrv vboxnetflt vboxnetadp vboxpci See the documenatation for your Linux distribution.. vboxdrv.sh: Building VirtualBox kernel modules. vboxdrv.sh: failed: modprobe vboxdrv failed. Please use 'dmesg' to find out why. There were problems setting up VirtualBox. To re-start the set-up process, run /sbin/vboxconfig as root. If your system is using EFI Secure Boot you may need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system's documentation for more information. 이 에러 내용에서 문제의 원인은 2가지 정도로 보였는데, 하나는 vboxdrv가 설치되지 않는 문제, 다른 하나는 using EFI Secure Boot 였다. 그리고 vboxdrv가 설치되지 않는 문제에 대해 찾아보니 결국 문제의 원인은 using EFI Secure Boot 였었다. Secure mode에서는 특정 파일들이 설치가 안되는 걸로 보인다. 해결 방법은 아래와 같다. 먼저 mokutil 설치(mok에 관련된 내용은 나중에 정리 한번 하겠다.) dnf install mokutil mokutil --disable-validation 실행하면 비밀번호 입력으로 바뀔거고, 비밀번호 입력 후에 재부팅을 해준다. 그러면 mok관련된 세팅창으로 부팅이 되고 해당 창에서 비밀번호를 물어볼건데, 비밀번호 중에 3번째 비밀번호 캐릭터는 무엇인가? 이런식으로 물어보기 때문에 유의해야 한다. 그러면 secure mode를 끄는 화면이 있을거고, 거기서 끈 상태로 부팅하면 된다.(이건 화면 캡처를 할 수가 없어서..) 여기까지 하고 나서 /sbin/vboxconfig 커맨드 입력하면 vboxdrv가 설치될거고, 설치 이후에 다시 vagrant up 하면 정상 실행될거다. 만약에 이렇게 했는데도 안되면 sudo mkdir -p /var/lib/shim-signed/mok sudo openssl req -nodes -new -x509 -newkey rsa:2048 -outform DER -addext "extendedKeyUsage=codeSigning" -keyout /var/lib/shim-signed/mok/MOK.priv -out /var/lib/shim-signed/mok/MOK.der sudo mokutil --import /var/lib/shim-signed/mok/MOK.der sudo reboot 위의 방법으로도 한번 해보길 바란다. 재부팅하면 똑같이 mok 관련 부팅이 될거다. |
여기까지 문제 없이 vagrant up이 실행됐다면,
이제 다음 단계로 넘어가 kubernetes가 설치된 환경을 vagrant를 이용해 설치해보겠다.
3. kubernetes 설치 및 테스트 환경 구축
여기부터는 저도 해당 글을 참고하여 진행했습니다.(https://velog.io/@moey920/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EC%9D%B8%ED%94%84%EB%9D%BC-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%952)
일단 vagrant 스크립트 파일과 실습에 사용할 코드가 있는 파일 다운로드.
https://github.com/sysnet4admin/_Book_k8sInfra
해당 파일을 압축해제 한 후 해당 경로로 이동
Vagrantfile을 본인의 사용 환경에 맞게 수정해줘야 한다.
수정하기 위해서는 Vagrantfile에 대해 자세히 알아야하니 해당 파일에 대한 설명부터 하겠다.
내가 아는선에서 설명하면 이정도다.
worker node는 내용이 같기 때문에 올리지 않았다.
그리고 나머지 쉘스크립트들은 따로 설명하진 않겠다.(config.sh, install_pkg.sh, master_node.sh, work_nodes.sh)
나 같은 경우 IP가 안맞아서 수정했는데, 해당 스크립트들 안에 보면 IP들이 있어서 다 수정해줘야 한다.
이런 에러가 났었다.
The IP address configured for the host-only network is not within the allowed ranges. Please update the address used to be within the allowed ranges and run the command again. Address: 192.168.1.10 Ranges: 192.168.56.0/21 Valid ranges can be modified in the /etc/vbox/networks.conf file. For more information including valid format see: https://www.virtualbox.org/manual/ch06.html#network_hostonly |
그래서 192.168.1.10을 192.168.56.10 으로 다 바꿔줬다.
이제 설치 진행,
vagrant up |
설치하는데 꽤 오래 걸린다. 설치가 잘끝났는지 확인해보려면,
virtualBox 실행했을때,
위와 같이 4개의 노드가 생성되고, 마스터1개 워크노드3개가 생성되어 있으면 된다.
이제 ssh로 접속해서 kubernetes 잘 구성됐나 확인해보자.
vagrant ssh "노드명" kubectl get nodes |
해당 명령을 실행했을 때,
위와 같이 나오면 정상 설치 된거다.
여기까지 했다면,
이제 kubernetes 설치와 환경 구성이 끝난거다.
이제 진짜로 사용해보자!
다음글에 쓰겠다..
'Cluster > 쿠버네티스(k8s)' 카테고리의 다른 글
Pod 추가 기능 (0) | 2023.09.27 |
---|---|
kubernetes(k8s) 기본 사용법 배우기 (2) | 2023.09.26 |
kubernetes 이해하고 사용해보기2 (2) | 2023.09.25 |
kubernetes 이해하고 사용해보기 (0) | 2023.09.25 |
DevOps(Development + Operations) (0) | 2023.09.20 |