DevOps/K8S

[Kubernetes] 우분투 환경에서 클러스터 구성하기(2) - kubeadm, kubelet, kubectl

IT록흐 2023. 9. 22. 21:34
반응형

 

 

[Kubernetes] 우분투 환경에서 클러스터 구성하기(1) - 컨테이너D 설치하기

[Kubernetes] Google Cloud에서 VM인스턴스 만들기 [Kubernetes] GKE 클러스터에서 톰캣 컨테이너 배포 및 외부접속하기 [Kubernetes] 클러스터 구성하기(1) - GKE 클러스터 구글에서 제공하는 쿠버네티스 엔진(Goo

lordofkangs.tistory.com

 

 

지난 포스팅에서 우분투 환경에 컨테이너 런타임(컨테이너d)을 구성해보았다. 쿠버네티스 클러스터가 동작하려면 쿠버네티스의 핵심 프로그램이 구성되어야 한다.  이번 포스팅에서는 kubeadm, kubelet, kubectl을 구성해보겠다.

 

 

kubeadm, kubelet, kubectl 이란?

 

kubeadm은 쿠버네티스 클러스터 환경을 구축하는 패키지이다.

 

kubeadm이 구축한 환경에서 kubelet과 kubectl이 동작한다. 쿠버네티스 클러스터 환경은 마스터 노드(컨트롤 플레인)와 워커노드로 구성된다. 지난 포스팅에서 우분투 환경의 가상머신 3대에 컨테이너 런타임 환경을 구성했지만 아직 어떤 노드가 마스터 노드인지 정하지 않았다. 마스터 노드가 될 VM머신에 kubeadm init 명령어를 실행하면 마스터 노드가 되기 위한 초기화 작업이 일어난다. 워커 노드가 될 VM머신에는 kubeadm join 명령어를 수행하여 마스터 노드가 주축이 된 클러스터에 join 한다. 

 

kubeadm으로 클러스터 환경이 구성되면 kubelet과 kubectl로 컨테이너를 관리한다.

 

kubectl은 마스터 노드와의 통신이 가능한 인터페이스를 제공하는 패키지이다. kubectl은 마스터노드의 RestAPI에게 명령을 전달 할 수 있다. kubelet은 워커노드의 컨테이너를 관리하는 패키지이다. 마스터 노드에서 명령이 내려오면 워커노드의 kubelet이 동작하여 컨테이너를 관리한다. 

 

 

 

 

 

위 그림 같이, 로컬 개발 머신에서 개발자가 컨테이너 생성 명령(kubectl 명령)을 내리면 마스터노드의 Rest API Server에 도착한다. Rest API Server는 명령을 수행할 적절한 워커노드를 찾고 워커노드의 kublet에 명령을 보낸다. 명령을 전달받은 kubelet은 명령에 따라 컨테이너 생성 작업에 들어간다. 

 

그러므로 실제로 컨테이너 관련 작업을 수행하는 프로그램이 kubelet인 것이다. 이처럼 kubeadm, kubectl, kubelet은 쿠버네티스 클러스터를 구성하는 프로그램이라 할 수 있다. 

 

 

 

kubeadm, kubelet, kubectl 설치하기

 

지난 포스팅에서 컨테이너 런타임 환경을 구성하였으니 이어서 kubeadm, kubelet, kubectl 설치를 진행해보겠다.

 

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl

 

패키지를 최신화 하고 필요한 툴을 설치한다. 

 

apt-transport-https : https 프로토콜로 패키지 다운로드 가능한 APT 확장 패키지

ca-certificates : CA 인증서 설치 패키지

curl : 웹리소스를 가져오는 패키지

 

curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg

 

쿠버네티스 리포지토리에 접근 가능하도록 쿠버네티스 공개키를 curl 명령어로 가져와 파이프라인 오른쪽 명령으로 넘긴다. 넘겨받은 공개키를 gpg 명령의 -dearmor 옵션으로 바이너리 파일로 만들고 -o 옵션으로 /etc/apt/keyrings/kubernetes-archive-keyring.gpg에 저장한다. 

 

echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

 

apt-get update 시, 쿠버네티스 로포지토리에 접근하여 패키지를 로컬에 다운로드 받을 수 있도록 apt가 스캔하는 sources.list.d에 공개키 및 리포지토리 정보를 저장한다.

 

sudo apt-get update

 

update를 진행하면 아래와 같이 kubeadm, kubectl, kubelet이 설치되었음을 확인할 수 있다. 

 

 

 

sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

 

install 명령으로 kubelet, kubeadm, kubectl 패키지를 시스템에 설치한다.

그리고 apt-makr hold 명령으로 패키지가 더이상 업그레이드 되지 않도록 hold해놓는다. 

 

쿠버네티스는 안정성이 중요하므로 통제되지 않은 upgrade가 진행되면 안 된다. 그러므로 sudo apt-get upgrade 명령에도 업그레이드가 진행되지 않도록 hold해놓는다. 다시 업그레이드를 하고 싶다면 sudo apt-mark unhold kubelet kubeadm kubectl 명령으로 보류 상태를 해지한 후 진행한다. 

 

kubeadm version

 

 

kubeadm 버전정보가 잘 뜨면 정상적으로 설치가 완료되었음을 의미한다.  이것으로 kubeadm, kubelet, kubectl 설치가 완료되었다. 다음 포스팅에서는 kubeadm을 이용하여 마스터노드와 워커노드를 구성하고 서로 연결하여 클러스터를 구성해보겠다. 

 

 

 


 

 

참고자료

 

데브옵스(DevOps)를 위한 쿠버네티스 마스터 - 인프런 | 강의

컨테이너 기반 오픈 소스 가상화 프로젝트인 "쿠버네티스"를 이용한 컨테이너 환경의 분산 시스템을 탄력적으로 실행하기 위한 프레임 워크를 활용하는 방법을 입문부터 활용까지 다룹니다., [

www.inflearn.com

 

Installing kubeadm

This page shows how to install the kubeadm toolbox. For information on how to create a cluster with kubeadm once you have performed this installation process, see the Creating a cluster with kubeadm page. Before you begin A compatible Linux host. The Kuber

kubernetes.io

 

반응형