회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
AWS 이용 중이라면 최대 700만 원 지원받으세요
태블릿PC에서 주로 쓰이던 arm64 아키텍처가 애플의 M1 노트북에 적용되며, arm64 기반 노트북 시장이 가파르게 성장하기 시작했습니다.
회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!
확인
태블릿PC에서 주로 쓰이던 arm64 아키텍처가 애플의 M1 노트북에 적용되며, arm64 기반 노트북 시장이 가파르게 성장하기 시작했습니다.
일반 노트북 시장뿐만 아니라 각 클라우드 사에서도 독자적으로 개발한 arm64 기반 컴퓨팅 인스턴스를 출시하고 있습니다. 성공적인 전환을 통해 효과적으로 TCO(총소유비용)를 절감한 사례들 역시 속속 나오고 있습니다.
이러한 흐름에 발맞춰 쿠버네티스 컨트롤 플레인 노드의 구성 요소 또한 arm64 기반을 지원하는 추세입니다. 다양한 컨테이너 이미지 역시 x86-64(amd64)와 함께 arm64를 지원하고 있습니다.
따라서 나만의 arm64 기반 쿠버네티스 클러스터를 만들어 보며 이러한 변화에 대비할 수 있는 시간을 가져보도록 하겠습니다.
arm64 기반 쿠버네티스 클러스터를 만드는 과정은 다음과 같이 진행됩니다.
- arm64 기반 쿠버네티스 클러스터를 배포하기 위한 소프트웨어 설치하기
- 설치한 소프트웨어로 쿠버네티스 클러스터 구성하기
- 터미널 프로그램으로 구성된 쿠버네티스 클러스터를 확인하고, 간단한 애플리케이션 배포하기
이처럼 간단한 3단계로도 실제 arm64 기반 쿠버네티스 클러스터를 구성할 수 있습니다. 시작해 볼까요?
손쉽게 설치할 수 있도록 이미 구성이 완료된 깃허브 소스를 클론해서 로컬에 내려받습니다.
먼저 내려받은 소스 디렉터리 가운데 ch2/2.4로 이동합시다. 해당 디렉터리에는 arm64 기반 배포를 위한 소프트웨어, 터미널 프로그램 그리고 관련 내용들이 있습니다.
설치해야 하는 소프트웨어는 다음 3가지입니다. 순서대로 설치 과정을 짚어보겠습니다.
- VM웨어 퓨전 (VMware Fusion)
- 베이그런트 (Vagrant)
- 타비 (Tabby)
VM웨어 퓨전(VMware Fusion) 설치+
VM웨어 퓨전을 설치하려면 brew install을 그대로 쓸 수도 있습니다. 그러나 호환성 유지를 위해 준비된 rb를 이용해 고정된 v13.5.2 버전의 VM웨어 퓨전을 설치하겠습니다.
설치가 끝난 후에는 반드시 VM웨어 퓨전을 시작하고 개인 사용자 라이센스를 동의해 주셔야 합니다.
VM웨어 퓨전 |
그다음은 유틸리티 설치입니다. 우리는 vagrant-vmware-utility v1.0.22를 설치합니다. 해당 유틸리티는 곧이어 설치할 베이그런트에서 VM웨어에 필요한 기능을 요청할 때 사용합니다.
이렇게 설치한 VM웨어 유틸리티를 서비스 형태로 시작하려면 launchctl을 거쳐 로드해야 합니다. 그러나 문제가 생겼을 때는, 이를 계속 다시 실행해야 할 수도 있습니다. 또한 네트워크 문제인 경우 netstat 명령으로 이를 점검해야 할 수도 있습니다.
따라서 이를 손쉽게 하기 위해 작성한 스크립트 2가지(copy_launchctl-all-vmware-utility.sh, copy_netstat-anvp.sh)를 실행하겠습니다. /usr/local/bin 밑에 명령어 형태로 만들어 두겠습니다.
해당 스크립트로 생성한 명령은 아래와 같습니다.
그다음, vmware-utility를 서비스로 로드하겠습니다. 베이그런트와 정상적으로 소통하기 위함입니다.
쿠버네티스 클러스터가 호스트 시스템과 통신할 인터페이스도 추가해야 합니다. 우리는 vf_net_create_vnet2.sh를 실행할 겁니다. 이 스크립트는 VM웨어의 vmnet7 인터페이스를 생성해 호스트와 192.168.1.0 네트워크로 통신할 수 있게 해줍니다.
진행 도중에 일부 인터페이스에서 실패할 수 있는데요. vmnet7을 생성하고 설정을 적용하는 것이 주목적이므로 vmnet7만 문제없다면 괜찮습니다.
베이그런트(Vagrant) 설치+
베이그런트(Vagrant) 역시 고정 버전을 설치합니다. 지정된 rb를 활용해 v2.4.1의 베이그런트를 설치합니다.
베이그런트가 VM웨어와 정상적으로 통신하려면 vmware-utility 뿐만 아니라 별도 플러그인이 필요합니다. 우리는 vagrant-vmware-desktop 플러그인을 설치하겠습니다. 이 플러그인은 베이그런트 버전에 따라 설치되기 때문에, 따로 이를 고정해 줄 필요는 없습니다.
타비(Tabby) 설치+
마지막으로 쿠버네티스 클러스터 배포 이후, 접속을 도와주는 터미널 프로그램 타비를 설치합니다. 타비 역시 원활한 호환을 위해 rb를 이용해 v1.0.207을 설치합니다.
설치를 마쳤나요? 접속 정보를 미리 입력해 둔 파일(config.yaml)을 복사해 적용하며 따로 입력하는 번거로움을 줄이겠습니다.
이제 쿠버네티스 클러스터를 구성할 차례입니다. 이 과정을 개략적으로 그리면 다음과 같습니다.
가장 먼저 베이그런트에서 VM웨어 퓨전으로 요청할 내용들을 담은 k8s-adv 디렉터리로 이동하겠습니다. 해당 디렉터리의 구성은 다음과 같습니다.
쿠버네티스 클러스터 구성은 vagrant up 명령으로 시작합니다.
이때 VM웨어 퓨전의 제약으로 화면에 구성을 시작하는 가상 머신이 계속 팝업될 겁니다. 이 부분을 따로 건드릴 필요도, 여기로 접속할 필요도 없습니다. VM웨어 퓨전 상에 구성된 가상 머신을 확인하려고 설정한 옵션 때문에 이렇게 동작할 뿐입니다. vagrant up 모든 과정이 완료되면 아래와 같은 코드를 볼 수 있습니다.
배포한 쿠버네티스 클러스터 노드에 접속하려면, 이를 위해 설치한 터미널 프로그램 타비를 실행하면 됩니다. 타비를 처음 실행하면 아래처럼 프로필을 선택할 수 있습니다. 우리는 cp-k8s를 선택할 겁니다.
cp-k8s를 선택한 다음에는 호스트 키 확인을 요청해야 합니다. 허용 후 키 저장을 누르고 계속 진행합니다.
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 컨테이너를 디플로이먼트로 배포하고, 이렇게 배포한 디플로이먼트를 로드밸런서로 노출합니다.
배포한 디플로이먼트 형태의 파드와 로드밸런서 서비스도 확인합시다.
정말 마지막 단계입니다. 웹 브라우저를 띄우고 로드밸런서 IP인 192.168.1.11을 입력해 봅시다. 아래와 유사한 결과가 나오셨나요?
아무 문제 없나요? 이제 여러분도 arm64 환경에서 동작하는 쿠버네티스 클러스터를 구축한 것입니다!
지금까지 베이그런트와 VM웨어 퓨전을 활용해 매우 손쉽게 arm64 기반 쿠버네티스 클러스터를 구축해 보았습니다. 글에서는 미리 작성한 Vagrantfile과 여기에서 호출한 내용으로 손쉽게 구현했는데요. 이때 사용한 스크립트 파일을 더 면밀하게 이해한다면, 쿠버네티스를 깊이 있게 학습할 때 큰 도움이 될 것입니다.
시간 여유가 있을 때, (없어도 낼 수 있으면 좋겠지만요) 이렇게 호출한 스크립트와 주석을 보고 쿠버네티스를 깊이 이해해 보는 것은 어떨까요?
영상 실습 보러가기 https://www.youtube.com/watch?v=v7EJ4BHNNMk
작가
조훈(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의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.