요즘IT
위시켓
새로 나온
인기요즘 작가들컬렉션
물어봐
새로 나온
인기
요즘 작가들
컬렉션
물어봐
개발
AI
IT서비스
기획
디자인
비즈니스
프로덕트
커리어
트렌드
스타트업
서비스 전체보기
위시켓요즘IT
고객 문의
02-6925-4867
10:00-18:00주말·공휴일 제외
[email protected]
요즘IT
요즘IT 소개작가 지원
기타 문의
콘텐츠 제안하기광고 상품 보기
요즘IT 슬랙봇크롬 확장 프로그램
이용약관
개인정보 처리방침
청소년보호정책
㈜위시켓
대표이사 : 박우범
서울특별시 강남구 테헤란로 211 3층 ㈜위시켓
사업자등록번호 : 209-81-57303
통신판매업신고 : 제2018-서울강남-02337 호
직업정보제공사업 신고번호 : J1200020180019
제호 : 요즘IT
발행인 : 박우범
편집인 : 노희선
청소년보호책임자 : 박우범
인터넷신문등록번호 : 서울,아54129
등록일 : 2022년 01월 23일
발행일 : 2021년 01월 10일
© 2013 Wishket Corp.
로그인
요즘IT 소개
콘텐츠 제안하기
광고 상품 보기
개발

새로 산 맥북으로 “더 쉽게” 쿠버네티스 클러스터 구성하기

조훈(Hoon Jo)
10분
4시간 전
220
에디터가 직접 고른 실무 인사이트 매주 목요일에 만나요.
newsletter_profile0명 뉴스레터 구독 중

지난 글 새로 산 맥북으로 쿠버네티스 클러스터 구성하기에서는, 베이그런트(Vagrant)와 VM웨어 퓨전(VMware Fusion)을 활용해 클러스터를 구성한 바 있습니다. 다만 이 방식은 설치 전에 사전 준비가 필요하고, 실제 사용하기에도 여러 불편함이 있었습니다. 특히 VM웨어 퓨전은 라이선스 문제도 있고, 공식 파일을 내려받으려면 회원 가입을 해야 한다는 문제도 있었습니다.

 

베이그런트와 VM웨어 퓨전을 활용한 쿠버네티스 클러스터 구성 <출처: 작가>

 

이런 상황에서 x86-64 환경만 지원하던 버추얼박스(VirtualBox)가 최근 arm64 기반 맥북을 제대로 지원하기 시작했습니다. (정확히 말하자면, 오랜 기간 arm64 지원을 준비해 온 버추얼박스가 이제서야 실현한 것입니다.) 덕분에 현재는 VM웨어 퓨전 대신 버추얼박스로 쿠버네티스 클러스터를 구성할 수 있게 되었습니다.

 

베이그런트와 버추얼박스를 활용한 쿠버네티스 클러스터 구성 <출처: 작가>

 

이를 통해 기존의 불편함이 대부분 해소되었으며, 윈도와 맥OS 기반 환경 모두 동일한 코드로 배포와 실행을 할 수 있어졌습니다.

 

따라서 이번 글에서는 버추얼박스가 arm64를 지원하기까지의 과정을 살펴본 다음, 이를 활용한 쿠버네티스 클러스터 구성 방법을 소개하겠습니다. 구성 방법부터 확인하고 싶은 경우, 아래로 글을 내려 바로 볼 수도 있습니다.

 

버추얼박스의 arm64 지원 시도들 

버추얼박스는 원래 x86-64 기반 가상화 기술로, VT-x/AMD-V와 같은 하드웨어 가상화 기술을 기반으로 두고 있습니다. 이 때문에 arm 또는 arm64로의 이전이 쉽지 않았습니다. 실제로 개발팀은 x86-64만을 지원할 것이라고 꾸준히 얘기해 왔습니다.

 

2021년 x86, AMD64/Intel64 전용 하이퍼바이저라고 말한 답변 <출처: Stack Exchange>

 

그러나 이러한 다짐은, 새로운 애플 기기의 등장으로 달라집니다. 2020년 11월 출시된 애플 실리콘 맥 M1의 폭발적인 인기가 식지 않았고, 2022년 6월 공개된 후속작 M2도 시장 장악력을 늘렸기 때문입니다.

 

M1과 M2가 인기를 얻으며 커뮤니티를 중심으로 나온 꾸준한 요구에 따라, 버추얼박스 개발팀은 버추얼박스를 지원할 여러 시도를 이어갔습니다. 그런 와중, 2022년 개발자 프리뷰(Developer Preview) 버전을 공개하며 이제 지원을 할 수 있다고 발표했습니다.

 

2022년, 된다는 말과 다르게, 동작하지 않은 버전 <출처: 버추얼박스>

 

초기 프리뷰 버전은 버그와 해결되지 않은 문제가 넘쳐났지만, 시간이 지나도 해결될 기미는 보이지 않았습니다. 개발 속도 자체도 진척이 없었습니다. 결국 프리뷰 버전 다운로드 링크마저 사라지며, arm 기반 맥에서 버추얼박스를 사용하는 일은 사람들의 기억에서 잊히는 듯 했습니다.

 

2023년, 개발자 프리뷰 버전을 다운로드 받는 곳이 사라진 모습. 다운로드 링크 <출처: 버추얼박스>

 

그렇게 사실 저도 거의 포기하고 VM웨어 퓨전을 사용하기로 했습니다. 때마침 라이선스 정책이 개인 사용자에게 유리하게 바뀌었기 때문입니다.

 

그러다 갑자기 버추얼박스는 2024년 9월, 버전 v7.1부터 arm을 공식 지원한다고 발표했습니다.

 

<출처: 버추얼박스>

 

이를 확인하기 위해 최신 버전인 v7.1.10을 실제로 검증해 본 결과, 버그도 거의 없었고, 성능과 사용 편의성 모두 좋은 수준이었습니다. 따라서 이제는 다소 제약이 많았던 VM웨어 퓨전 대신, 버추얼박스를 사용하는 것을 적극 추천합니다.

 

버추얼박스로 arm64 기반의 쿠버네티스 클러스터 구성하기 

그럼 본격적으로 버추얼박스로 arm64 기반 쿠버네티스 클러스터를 구축하는 과정을 알아보겠습니다. 크게 세 단계로 진행됩니다.

 

  1. arm64 기반의 쿠버네티스 클러스터 배포를 위한 소프트웨어 설치
  2. 설치한 소프트웨어를 활용한 클러스터 구성
  3. 구성한 터미널 프로그램으로 클러스터를 확인하고, 간단한 애플리케이션을 배포

 

이제 이 3단계에 따라 arm64 환경에서 쿠버네티스 클러스터를 실제로 구성하고, 동작 여부를 확인하겠습니다.

 

배포할 쿠버네티스 클러스터 v1.33의 로고 <출처: 쿠버네티스>

 

1. arm64 기반의 쿠버네티스 클러스터 배포를 위한 소프트웨어 설치

먼저, 손쉬운 설치를 위해 이미 구성이 완료된 깃헙 소스를 로컬 환경에 클론(clone)합니다.

 

 

클론한 소스 디렉터리 중 ch2/2.4로 이동하겠습니다. 이곳에는 arm64 배포용 소프트웨어, 터미널 프로그램, 그리고 관련 설정 파일들이 준비되어 있습니다.

 

우선 설치해야 할 소프트웨어는 다음 세 가지입니다.

 

  • 버추얼박스(VirtualBox)
  • 베이그런트(Vagrant)
  • 타비(Tabby)

 

 

버추얼박스(VirtualBox) 설치

버추얼박스는 brew install 명령어로도 설치할 수 있지만, 호환성 유지를 위해 미리 준비된 .rb 파일을 사용해 고정 버전(v7.1.10)의 버추얼박스를 설치합니다. VM웨어 퓨전과 달리, 추가 구성은 필요하지 않습니다.

 

 

베이그런트(Vagrant) 설치

베이그런트 역시 고정 버전 설치를 위해 .rb 파일을 사용해 v2.4.7을 설치합니다.

 

마찬가지로 VM웨어 퓨전을 사용할 때는 베이그런트 플러그인을 추가로 설치해야 했지만, 버추얼박스 환경에서는 플러그인이 필요하지 않으므로 바로 다음 단계로 넘어가겠습니다.

 

 

타비(Tabby) 설치와 접속 정보 추가 

마지막으로, 쿠버네티스 클러스터를 배포한 다음 접속을 돕는 터미널 프로그램 타비(Tabby)를 설치합니다. 역시 .rb 파일을 이용해 v1.0.207을 설치합니다.

 

 

설치 후에는 접속 정보를 미리 입력해 둔 파일(config.yaml)을 복사해 따로 입력하는 번거로움을 줄입니다.

 

 

2. 설치한 소프트웨어를 활용한 클러스터 구성

이제 앞서 설치한 소프트웨어를 활용해 쿠버네티스(Kubernetes) 클러스터를 구성할 차례입니다. 과정을 간단히 그리면 다음과 같습니다.

 

베이그런트, 버추얼박스 그리고 타비의 관계 <출처: 작가>

 

먼저 베이그런트에서 버추얼박스로 요청할 내용을 담은 B/B.001/U 디렉터리로 이동합니다. 기존에는 2.4 디렉터리에서도 설치할 수 있었지만, 해당 버전은 쿠버네티스 v1.30을 설치하므로, 최신 v1.33 버전을 사용하기 위해서는 B/B.001/U로 이동해야 합니다.

 

해당 디렉터리의 구성은 다음과 같습니다.

 

 

디렉터리로 이동하고, vagrant up 명령어를 실행해 클러스터 구성을 시작합니다. 참고로, 이때는 VM웨어 퓨전과 다르게 구성 화면이 계속 팝업되지 않습니다.

 

 

위의 코드처럼, vagrant up 모든 과정이 완료된 것을 확인하면, 간단히 구성이 끝납니다.

 

3. 구성한 터미널 프로그램으로 클러스터를 확인하고, 간단한 애플리케이션을 배포

배포를 마친 쿠버네티스 클러스터의 노드에 접속하기 위해, 터미널 프로그램 타비(Tabby)를 실행합니다.

 

타비를 실행하면, 다음과 같이 프로필 선택 화면이 나타납니다. 이 중 cp-k8s를 선택합니다.

 

<출처: 작가>

 

cp-k8s를 선택하면 호스트 키 확인 메시지가 나타납니다. 여기서는 ‘허용 후 키 저장’을 선택하고 진행합니다.

(만약 암호를 물어본다면, vagrant를 입력합니다.)

 

<출처: 작가>

 

cp-k8s에 접속한 다음, k get nodes, 그리고 k get po -A 명령어를 입력해 배포가 정상적으로 이뤄졌는지 확인합니다.

 

 

또한, 로드밸런서 생성을 지원하는 MetalLB의 IP Pool 동작 여부도 확인합니다. k get ipaddresspools.metallb.io -A 명령어를 입력하고, 아래와 같은 응답이 나오는지 확인합니다.

 

다만, 이 내용은 접속과 함께 바로 나타나지는 않습니다. cp-k8s 배포가 끝나고 약 10분이 지난 다음 동작하도록 설계되어 있으니, 조금 더 기다려 볼 수 있습니다.

 

 

이제 arm64 환경에서 클러스터가 정상 동작하는지 검증하기 위해, sysnet4admin/chk-info 컨테이너를 디플로이먼트(Deployment)로 배포합니다. 배포된 디플로이먼트는 로드밸런서 서비스로 노출시킵니다.

 

 

배포가 완료되면, 파드(Pod)와 서비스 상태를 확인합니다.

 

 

마지막으로, 웹 브라우저를 열고, 부여된 로드밸런서 IP(예: 192.168.1.11)를 입력합니다. 아래와 같은 화면이 나오면 성공입니다.

 

<출처: 작가>

 

이제 여러분도 arm64 환경에서 동작하는 쿠버네티스 클러스터를 가지게 되었습니다. 축하드립니다.

 

 

추가로 시도해 볼만한 작업: 헤드램프 설치 

이렇게 구축한 나만의 쿠버네티스 클러스터 환경에서, 쿠버네티스를 더 손쉽게 사용할 목적으로 만들어지는 헤드램프(Headlamp)라는 프로젝트를 설치해 보겠습니다.

 

헤드램프 메인테이너 Joaquim Rocha와 필자 <출처: 작가>

 

실습할 수 있는 클러스터를 이미 구성했으므로, 헤드램프를 설치해 현재 클러스터 상태를 확인해 보겠습니다. 헤드램프를 설치하려면, B/B.011로 이동해야 합니다. 이어 brew install 명령어로 헤드램프 버전 0.31.1을 설치합니다.

 

 

헤드램프를 실행하기 전에는, 로컬 환경의 쿠버네티스 클러스터 정보를 가져와야 합니다. flatted_kubeconfig.sh 스크립트에 권한을 부여하고 실행하겠습니다.

 

 

헤드램프를 실행하고, 표시되는 화면에서 kubernetes-admin@kubernetes를 클릭합니다.

 

<출처: 작가>

 

만약 “앱이 손상되어 열 수 없다”는 메시지가 뜨는 경우, sudo xattr -rd com.apple.quarantine /Applications/Headlamp.app 명령어로 실행 권한 문제를 해결합니다.

 

현재 상태를 확인하려면, 아래 화면에서 왼쪽 Map 메뉴를 누릅니다.

 

<출처: 작가>

 

이동으로 나타나는 화면에서 DaemonSet을 누릅니다.

 

<출처: 작가>

 

마지막으로 GUI에서 현재 배포된 DaemonSet의 구성을 확인합니다.

 

<출처: 작가>

 

 

마치며

이번 글에서는 베이그런트(Vagrant)와 버추얼박스(VirtualBox)를 활용해 arm64 기반의 쿠버네티스 클러스터를 손쉽게 구축해 보았습니다. 이렇게 구성한 전용 클러스터 환경에서 필요한 애플리케이션을 배포하고, 발생하는 다양한 문제를 직접 해결하는 과정은 실무 역량을 키우는 데 큰 도움을 줍니다.

 

구성한 쿠버네티스 클러스터를 기반으로 목적에 맞는 다양한 실습을 진행해 볼 수 있습니다. 목적에 맞게 자유롭게 사용하며 쿠버네티스 실력 향상에 도움이 되기를 바랍니다.


작가

조훈(CNCF 앰버서더)

시스템/네트워크 IT 벤더의 경험 이후, 메가존 GCP 클라우드 팀에서 쿠버네티스와 연관된 모든 프로젝트에 대한 Tech Advisor 및 Container Architecture Design을 제공하고 있다. 페이스북 ‘IT 인프라 엔지니어 그룹’의 운영진을 맡고 있으며, 오픈 소스 컨트리뷰터로도 활동한다. 지식 공유를 위해 인프런/유데미에서 앤서블 및 쿠버네티스에 관한 강의를 하기도 한다. 책 <컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커> 등 3권을 썼다. CNCF(Cloud Native Computing Foundation) 앰버서더로서 쿠버네티스 생태계가 더 활발하게 퍼질 수 있도록 기여하고 있다.

 

심근우

LG유플러스 CTO부문에서 대고객 비즈니스 시스템의 DevOps를 담당하는 UcubeDAX팀의 팀장으로 일하고 있다. 퍼블릭 클라우드와 프라이빗 클라우드에 걸친 쿠버네티스 클러스터를 안정적으로 운영하기 위해 노력하고 있으며, 특히 주니어 DevOps 엔지니어들의 육성에 큰 관심을 가지고 있다.

 

문성주 

체커(CHEQUER) 사의 DevOps Engineer로서 쿠버네티스의 멀티 클러스터 관리 방법론과 쿠버네티스 구현체(CAPI, OCI)에 대한 명세와 컨테이너 리소스 격리 방법에 대한 연구를 병행하고 있다. 이런 연구 활동을 기반으로 쿠버네티스 볼륨 테스트 파트에 컨트리뷰션했다. 본업은 쿠버네티스 오퍼레이터와 같은 CRD(커스텀 리소스)를 개발해 현업에서 쿠버네티스를 좀 더 편리하게 사용할 수 있도록 돕는 일이다. 또한, 페이스북 그룹 ‘코딩이랑 무관합니다만'과 ‘IT 인프라 엔지니어 그룹'의 운영진을 맡고 있다.

 

이성민

미국 넷플릭스(Netflix) 사의 Data Platform Infrastructure 팀에서 사내 플랫폼 팀들과 데이터 사용자들을 어우르기 위한 가상화 및 도구들을 개발하는 일들을 하고 있다. 과거 컨테이너와 쿠버네티스에 큰 관심을 두고 ingress-nginx를 비롯한 오픈 소스에 참여했으며, 현재는 데이터 분야에 일하게 되면서 stateful 한 서비스들이 컨테이너화에서 겪는 어려움을 보다 근본적으로 해결하기 위한 많은 노력을 하고 있다.

 

©️요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.