안녕하세요? 정리하는 개발자 워니즈입니다. 이번시간에는 쿠버네티스 클러스터 구축을해주는 툴인 kubespray에 대해서 알아보는 시간을 갖도록 하겠습니다. 이전 포스팅을 보면, 직접 마스터 노드/워커 노드에 접속을 해서 수동 설치를 진행하고 마지막에는 join을 해주는 개념으로 클러스터를 구축했었습니다. 하지만, kubespray를 통해서 한번에 진행하는 방식을 도입하고 그부분에 대해서 정리를 진행하고자 합니다.
필자는 초기 클러스터를 구축할 당시에 kubeadm 을 통해서 클러스터를 구축해보았습니다. kubeadm을 통해서 구축하는 내용은 쿠버네티스 공식 블로그에 순서대로 잘 정리가 되어있습니다.
kubeadm을 사용하여 클러스터 만들기
쿠버네티스를 구성하는 내용은 공식 블로그에는 3가지를 통해서 정리가 되어있습니다.
kubeadm을 통한 클러스터 구축
kops를 통한 클러스터 구축
kubespray를 통한 클러스터 구축
위의 내용중에서 이번 포스팅은 kubespray를 통한 클러스터 구축에 대해서 정리를 하고자 합니다.
1. kubespray란 무엇인가요?
kubespray 는 쿠버네티스를 쉽게 설치하는 자동화 도구 입니다. github을 클론받게 되면, ansible yaml파일들이 정리가 되어있습니다. Ansible의 playbook과 inventory설정을 통해서 kubernetes 클러스터를 설정하게 됩니다.
kubespray는 Ansible Playbook, Inventory, Provisioning Tool과 일반적인 운영체제, 쿠버네티스 클러스터의 설정 관리 작업에 대한 도메인 지식의 결합으로 만들어졌습니다.
kubespray는 다음과 같은 기능을 제공합니다.
고가용성을 지닌 클러스터의 생성
대부분의 리눅스 배포판 지원
지속적인 통합(CI) 테스트
2. Kubespray 사전 작업
kubespray를 활용하여 클러스터 구축을 하기 위해서는 다음과 같은 환경이 구성되어있어야 합니다.
2-1. 서버 구성
kubespray 서버 : kubespray를 실행할 서버
kubernetes master 서버 : kubernetes 마스터 서버
kubernetes worker 서버 : kuberentes 워커 서버
2-2. 사전 준비
kubespray서버에 접속한 뒤, 다음을 설치 합니다.
kubespray를 사용하기 위해서는 다음의 요구사항이 필요합니다.
kubespray 서버를 통해서 스프레이를 뿌려주게 되면(?) master, worker간에 클러스터 구축이 완료되고, 마스터 서버를 통해서 클러스터가 정상적으로 생성이 되었는지 확인할 수 있습니다.
kube[root@dev-k8s-master001-kubespray-dev:~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
dev-k8s-master001-kubespray-dev Ready master 2d17h v1.18.8
dev-k8s-worker001-kubespray-dev Ready 2d17h v1.18.8
dev-k8s-worker002-kubespray-dev Ready 2d17h v1.18.8
dev-k8s-worker003-kubespray-dev Ready 2d17h v1.18.8
5. 마치며…
클러스터 생성을 도와주는 툴인 kubespray를 사용하는 방법에 대해서 정리를 해보았습니다. 정확하게 말하면 ansible 을 통한 클러스터 구축이라고 해도 상관이 없을 듯 합니다. ansible yaml 파일들이 각각 작성이 되어있고, 아마 내부적으로는 kubeadm을 설치하고 각 worker로 접속해서 join하는 작업이 명시되어 있지 않을까 하는 생각이 듭니다. 다음시간에는 kubespray의 yaml 파일들을 분석해보는 포스팅을 작성해 보도록 하겠습니다.