[Kubernetes] 무게감 있게 쿠버네티스 설치

2025. 5. 29. 01:09·Kubernetes
목차
  1. 개요
  2. Vagrant 설치 스크립트
  3. 쿠버네티스 설치 절차
  4. kubeadm 설치
  5. 마스터 노드 세팅
  6. 출처
반응형

개요

강의 등을 통해 제공하는 빠르게 설치하는 방법을 따라 하면 쿠버네티스를 빠르고 쉽게 설치할 수 있다.

하지만 그렇게 설치하게 되면, 설치 중 실패하는 경우 어디서 문제인지 알기가 어렵고, 설치 이해도는 낮아지게 된다.

 

또한 쿠버네티스 오브젝트들인 Pod나 Service를 공부하면서 개념이나 기능 만으로 이 기술들을 이해하는 데 한계가 있는데,

쿠버네티스 자체 구성을 조금 알고 이 개념들을 공부하는 것이 더 이해가 잘 된다.

 

쿠버네티스 구성은 쿠버네티스를 설치할 때 가장 배우기 좋은 내용이므로,

쿠버네티스를 제대로 공부하고 싶다면 설치 절차를 익혀서 쿠버네티스 구성을 꼭 이해하고 넘어가자.

 

참고로 본 글은 Virtualbox, Vagrant를 이용하여 만들어진 아래 스크립트를 기준으로 세부 내용을 설명한다.
해당 스크립트는 크게 VirtualBox로 OS를 생성하는 파트와 쿠버네티스를 설치하는 파트로 구분된다.
https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/vagrant-2.4.3/Vagrantfile

 

Vagrant 설치 스크립트

해당 스크립트에는 전체 쿠버네티스 워커 노드의 공통으로 들어갈 기본 명령과, 마스터 노드에만 들어갈 명령이 분리되어 있다.

기본적으로 공통 명령어가 먼저 실행되고, 이후 마스터 노드에서 필요한 명령어가 실행된다.

  • $master_script : 쿠버네티스 마스터 노드를 구성하는 부분.
  • $default_script : 노드 별 기본 설치 명령.

 

VirtualBox로 OS 생성

  • config.vm.box : 설치할 OS. 처음 설치할 때는 이미지를 다운로드하는데 시간이 좀 걸린다.
  • config.vm.define : VM의 이름. VirtualBox UI 상으로 봤을 때 보이는 이름이다.
  • master.vm.hostname : hostname. 원격 접속으로 해당 Linux에 들어갔을 때 나오는 이름이다.
  • master.vm.network : provate_network로 지정하면 내 PC에서만 사용할 수 있는 Host-Only Network를 만들어준다.
    • ip : 해당 리눅스에 지정한 IP가 할당된다. 이후 해당 IP로 원격 접속하거나 쿠버네티스 대시보드 등에 접속할 수 있다.
  • vb.memory : 메모리 용량 (MB). 메모리는 서로 할당된 공간을 침범하면 안 되기 때문에 VM에 해당 자원을 할당하는 형태로 구성된다.
  • vb.cpus : 최대 CPU 코어 수. CPU는 필요한 순간에 서로 나눠 쓰는 자원이므로 내 PC의 CPU와 공유하여 사용한다.
    (내 PC가 4 코어일 때 VM에 4 코어를 할당할 수 있고, 동시에 CPU를 사용하더라도 느려질 뿐 문제가 발생하지는 않는다.)

스크립트를 넣지 않아도 Vagrant가 기본적으로 NAT 네트워크를 만들어주고, 알아서 IP도 할당해 준다.

NAT는 내 VM을 외부 인터넷과 연결시켜 주는 역할을 하는데, 쿠버네티스를 설치할 때 필요한 패키지를 다운로드하는 데 NAT를 사용한다.

 

이때, 우리가 사용하는 공유기의 CIDR 범위와 Host-Only Network의 CIDR 범위가 겹쳐선 안된다.

겹치게 되면 내 공유기와 VirtualBox가 똑같은 IP를 만들 수 있게 되어 IP 충돌이 발생한다.

내 PC에 할당된 네트워크 IP는 공유기에서 할당받는다.
예를 들어, 공유기의 CIDR이 192.168.219.0/24라면 마지막 자리를 1부터 255까지 만들 수 있고,
내 PC에 192.168.219.100와 같은 IP를 할당해 줄 수 있다.

이때, 우리가 만든 Host-Only Network에서 CIDR이 192.168.56.0/24로 구성되어 있다면,
이는 192.168.56.1 ~ 192.168.56.255와 같은 범위이고, 공유기와 범위가 겹치지 않기 때문에 문제가 없다.

 

만약 원격 접속이 안 되는 경우 자신의 네트워크 대역을 확인해 보고,

부득이한 경우 Host-Only Network의 CIDR을 수정하여 해결할 수 있다.

 

쿠버네티스 설치 스크립트

해당 스크립트에는 쿠버네티스 설치에 필요한 모든 명령어가 포함되어 있다.

이에 대한 자세한 내용은 아래에서 설명한다.


쿠버네티스 설치 절차

공식 문서에서는 최신 버전 설치 절차를 안내하고 있다.
실무에서 사용할 때에는 최대한 LTS 버전을 지정해서 설치하는 것을 권장한다.

 

쿠버네티스 설치는 확실히 쿠버네티스 문서를 보는 게 좋다.

내가 설치하려는 버전이 있는데, 블로그에서 다른 버전이나 최신 버전 설치 절차를 보게 되면 잘 안 되는 부분들이 생긴다.

 

이런 경우는 주로 쿠버네티스의 버전이 올라감에 따라 내부적인 변경 사항이 많아서 발생한다.

이에 대한 자세한 내용은 아래 글을 참고해 보자.

https://hojun-dev.tistory.com/entry/Kubernetes-컨테이너-한-방-정리
 

[Kubernetes] 컨테이너 한 방 정리

개요쿠버네티스는 컨테이너랑 가상화, 그리고 DevOps 속에 스며들어있다.따라서 이 세 가지를 알아야 쿠버네티스를 더 알 수 있게 되는데,이 단어들은 모두 큰 개념이라서 단순히 용어 설명으로

hojun-dev.tistory.com

따라서 쿠버네티스 문서에서 필요한 버전 별로 설치 가이드를 보면서,

궁금한 부분들이 있다면 해당 키워드로 블로그 등을 찾아보는 것이 좋다.

 

kubeadm 설치

쿠버네티스 클러스터는 설치하는 몇 가지 방법이 있는데,

여기에서는 가장 대표적인 kubeadm으로 클러스터를 설치한다.

 

아래 공식 문서를 참고해 보자.

https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

 

시작하기 전에

공식 문서를 보면 설치하기 전에 Linux에서 필요한 사전 작업들을 확인해야 한다.

  • 2GB 이상의 램
  • 2 코어 이상의 CPU
  • 워커 노드들의 네트워크 연결
  • 모든 노드들의 고유성 보장 (여러 워커 노드를 구성할 때 VM으로 워커 노드를 하나 만들고 복사해서 늘리는 경우가 있는데, 고유한 속성은 복사되지 않도록 신경 써야 한다.)
  • 컴퓨터 특정 포트 개방 (방화벽을 아예 해제하여 모든 포트 개방)
  • 스왑 비활성화

 

컨테이너 런타임 설치

다음으로는 컨테이너 런타임을 설치해야 한다.

아래 공식 문서를 참고해 보자.

https://kubernetes.io/ko/docs/setup/production-environment/container-runtimes/

 

컨테이너 런타임을 설치하기 전에 아래와 같은 작업들이 필요하다.

  • iptables 세팅
    • Linux의 네트워크에서 Pod Network로 연결될 수 있도록 설정.
  • cgroup 드라이버 맞춰주기 (systemd or cgroupfs)
    • 쿠버네티스와 쿠버네티스 런타임의 cgroup 드라이버가 동일해야 한다.
    • 쿠버네티스와 containerd의 기본값은 cgroupfs이므로, containerd를 설치한다면 신경 쓰지 않아도 된다.

 

그리고 이제 컨테이너 런타임으로 containerd를 설치해 보자.

공식 문서에서 containerd 시작하기 링크를 누르면 아래와 같은 문서를 확인할 수 있다.

https://github.com/containerd/containerd/blob/main/docs/getting-started.md

 

여기에 Option 1과 2가 있는데, Option 1은 일일이 설정해 줘야 할 게 많아 Option 2를 확인하자.

우리는 Rocky Linux를 사용하므로 CentOS 링크를 클릭하면 아래와 같은 문서를 확인할 수 있다.

https://docs.docker.com/engine/install/centos/

 

문서의 아래로 내려가면 Repository 셋업 절차와 도커 엔진 패키지 설치 방법이 있는데,

절차에 맞춰서 Repository를 셋업 해준 다음,

도커 엔진에서는 containerd.io 하나만 설치하면 된다.

이렇게 설치하면 runC나 그 하위 종속성으로 필요한 패키지 등 모두 한 번에 설치할 수 있다.

 

이렇게 패키지를 통해 설치한 경우 CRI 플러그인이 기본적으로 비활성화되어 있는데, 이는 꼭 활성화해줘야 한다.

(해당 내용은 위의 컨테이너 런타임 공식 문서에서 확인할 수 있다.)

 

쿠버네티스 패키지 설치

다시 kubeadm 공식문서로 돌아가서, 하단으로 내려가면 쿠버네티스 패키지 설치 명령어를 확인할 수 있다.

 

여기까지 모든 노드에 해줘야 하는 쿠버네티스 설치 절차가 끝났다.


마스터 노드 세팅

여기서부터는 마스터 노드의 추가적인 세팅 절차이다.

 

kubeadm으로 쿠버네티스 클러스터 생성

kubeadm으로 쿠버네티스 클러스터를 생성하는 공식 문서는 아래를 참고해 보자.

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

 

대략적인 절차는 아래와 같다.

  1. 클러스터 초기화 (Pod Network 세팅)
    • CIDR을 지정해서 Pod Network 대역을 새로 지정할 수 있다.
  2. kubectl 사용 설정
    • 쿠버네티스 설치가 끝나면 쿠버네티스에 접속할 수 있는 인증서가 만들어지는데,
      이 인증서를 kubectl이 사용할 수 있게 설정하는 절차.
    • 이를 통해 kubectl로 kube-apiserver에 API를 요청하며 CLI 통신이 가능해진다.
  3. CNI Plugin 설치 (calico)
    • CNI(Container Network Interface) : 쿠버네티스와 네트워크 간의 인터페이스로 컨테이너들 간의 통신을 관리한다.
  4. 마스터 노드에서 Pod를 생성할 수 있도록 설정
    • kubeadm에서 생성되는 컴포넌트들은 Pod들이 마스터 노드에 올라가도 되도록 하는 설정이 있다.
    • 일반적으로 마스터 노드에 유저가 만든 Pod는 올리지 않는 게 정석이나, 현재는 마스터 노드만 만들 예정이므로 설정해 준다.

 

쿠버네티스 편의 기능 설치

여기에서는 아래와 같은 편의 기능들을 설치한다.

  • kubectl 자동완성 기능 : tab을 눌러서 관련 있는 키워드 조회 및 자동완성
  • Dashboard 설치 : Pod들의 상태 확인 대시보드
  • Metrics Server 설치 : 컨테이너 런타임에 의해 관리되는 컨테이너의 CPU 및 Memory의 Metric 정보를 조회하여 대시보드에 표시

출처

https://inf.run/Ncohz
 

쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2 강의 | 일프로 - 인프런

일프로 | ⚓쿠버네티스(Kuberentes, Containerd, Docker Hub, Helm, Jenkins, Kustomize, ArgoCD) 🙇‍♀️아직 망설이시나요? 🙋‍♂️저만 믿고 따라오세요! 이론과 실습으로 당신의 실력을 ⭐어나더 레벨로 만

www.inflearn.com

반응형

'Kubernetes' 카테고리의 다른 글

[Kubernetes] Application 기능으로 이해하는 ConfigMap, Secret  (2) 2025.06.04
[Kubernetes] Application 기능으로 이해하는 Probe  (0) 2025.06.02
[Kubernetes] Object 그려보며 이해하기  (0) 2025.05.31
[Kubernetes] 실무에서 쿠버네티스가 정말 편한 이유  (0) 2025.05.30
[Kubernetes] 컨테이너 한 방 정리  (1) 2025.05.27
  1. 개요
  2. Vagrant 설치 스크립트
  3. 쿠버네티스 설치 절차
  4. kubeadm 설치
  5. 마스터 노드 세팅
  6. 출처
'Kubernetes' 카테고리의 다른 글
  • [Kubernetes] Application 기능으로 이해하는 Probe
  • [Kubernetes] Object 그려보며 이해하기
  • [Kubernetes] 실무에서 쿠버네티스가 정말 편한 이유
  • [Kubernetes] 컨테이너 한 방 정리
hojun-dev
hojun-dev
개발과 함께하는 일상을 그리는 블로그입니다.
  • hojun-dev
    개발 일상
    hojun-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (69)
      • Java & Spring (15)
      • Kubernetes (17)
      • Javascript (2)
      • Linux (2)
      • Setting (16)
      • Work (4)
      • 일상 (10)
      • 항해플러스 (3)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
hojun-dev
[Kubernetes] 무게감 있게 쿠버네티스 설치
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.