(2) 쿠버네티스 무게감 있게 설치하기

2025. 5. 28. 17:00·🌱 인프런/⚓ 쿠버네티스 어나더 클래스 (지상편)

⚓ 쿠버네티스 어나더 클래스 (지상편) - Spring 1, 2 을 듣고 작성하는 복습 블로그 입니다.

 

1. 강의에서 다루는 전체 환경

출처URL : https://inf.run/k7mF

CI / CD 환경 인프라 환경
  • 내 PC 에 VirtualBox 를 설치하고, VM(가상머신)을 띄운다
  • Guest OS 로 Rocky Linux 가 올라감
  • 빌드/배포 도구 : Jenkins
  • 컨테이너 빌드 : docker
  • 통상 하나만 사용
  • VM 을 띄워서 Rocky Linux
  • 이 위에 k8s 와 containerd 를 스크립트로 설치
  • dev / qa / prod 로 나눠져 있다.

 

⁉️ VM (가상머신) : 물리적인 컴퓨터 안에서 소프트웨어로 만든 가상의 컴퓨터, 하나의 컴퓨터 안에서 또 다른 컴퓨터를 실행한다고 생각하면 된다.

 

배포 흐름

  1. IntelliJ 에서 코드 개발을 완료하고 커밋 → GitHub 로 코드 통합
  2. Jenkins 빌드
    1. Jenkins 는 GitHub 에서 소스를 다운
    2. 여기에도 Gradle 이 있어서 필요한 라이브러리 다운
    3. JAR 파일 생성
    4. 컨테이너 빌드
      1. JAR 파일을 실행시킬 OpenJDK 이미지를 DockerHub 에서 가져옴
      2. 컨테이너 빌드 : 베이스 이미지 (앱을 띄우기 위한 기반이 되는 환경) 위에 JAR 파일을 올리는 것
      3. MyApp 컨테이너가 이미지로 생성
      4. 3번의 결과물을 다시 DockerHub 로 올린다
  3. 배포
    1. k8s 에 Pod 생성 명령
    2. k8s 는 Pod 내 컨테이너 이미지 주소로 DockerHub에서 컨테이너 이미지를 다운
    3. containerd 한테 이미지로 컨테이너 생성 요청

 

2. 빠르고 쉽게 설치하는 방법

출처URL : https://inf.run/k7mF

  1. VirtualBox 설치 (7.0.8)
  2. Vagrant 설치 (2.3.4)
  3. Vagrant 스크립트 실행 (→ 인프라 환경 설치 모두 끝)
  4. >> (k8s 실행 확인 작업) 접속 툴 설치
  5. 원격 접속
  6. Pod 조회 명령으로 상태 확인
  7. Dashboard 접속

 

3. 무게감 있게 설치하는 방법

내 PC 에 VirtualBox 랑 Vagrant 를 설치한 상태

Virtualbox 로 Rocky Linux 를 생성하는 코드

Vagrant.configure("2") do |config|
   
  config.vm.box = "rockylinux/8"    
  config.vm.provision :shell, privileged: true, inline: $default_script

  config.vm.define "master-node“     do |master|
      master.vm.hostname = "k8s-master"
      master.vm.network "private_network",      ip: "192.168.56.30"
      master.vm.provider :virtualbox do |vb|
          vb.memory = 4096
          vb.cpus = 4
          vb.customize ["modifyvm", :id, "--firmware", "efi"]
      end
      master.vm.provision :shell, privileged: true, inline: $master_script
  end
end

$default_script = <<-SHELL  
    # Node별 기본 설치 명령어
SHELL

$ master_script = <<-SHELL    
    # Master Node 전용 설치 명령어
SHELL
  • config.vm.box = "rockylinux/8" : Rocky Linux 를 8 버전으로 설치해라
  • config.vm.define "master-node“ : VM 에 이름을 붙여준다, VirtualBox UI 상으로 봤을 때 보이는 이름
  • master.vm.hostname = "k8s-master" : Hostname 을 지정, 원격 접속으로 Linux 에 들어갔을 때 나오는 호스트 이름
  • master.vm.network "private_network" : VirtualBox 에 내 PC에서만 사용할 수 있는 네트워크 망 (Host-Only Network)
  • ip: "192.168.56.30" : 내 리눅스에 할당할 IP
  • NAT 는 스크립트를 넣지 않아도 Vargrant 가 만들어주는 네트워크 (IP 도 알아서 할당)
    • 내 VM을 외부 인터넷이랑 연결 시켜주는 역할
    • K8s 에서 필요한 패키지들을 받는데 사용한다
  • vb.memory = 4096 , vb.cpus = 4 : 메모리는 4기가, CPU 는 4코어
    • VM 에 자원이 할당된다
  • default_script 가 실행되고 master_script 가 실행

 

쿠버네티스 설치 (모든 node)

[1] rocky linux 기본 설정 : 패키지 업데이트, 타임존 설정

[2] kubeadm 설치 전 사전작업 : 방화벽 해제, 스왑 비활성화

[3] 컨테이너 런타임 설치

  1. 컨테이너 런타임 설치 전 사전작업 : iptables 세팅
    (→ Linux OS 에 할당된 네트워크가 쿠버네티스의 Pod Network 로 연결될 수 있도록 iptables 를 연결해주는 설정)
  2. 컨테이너 런타임 (containerd 설치)
    1. containerd 패키지 설치 (option2)
      1. docker engine 설치 : repo 설정, containerd 설치
  3. 컨테이너 런타임 : cri 활성화

[4] kubeadm 설치 : repo 설정, SELinux 설정, kubelet / kubeadm / kubectl 패키지 설정

 

 

Master node 세팅

[5] kubeadm 으로 클러스터 생성

  1. 클러스터 초기화
  2. kubectl 사용 설정
  3. CNI Plugin 설정 (calico)
    CNI : 컨테이너들 간의 통신을 관리하는 부분에 대한 쿠버네티스와 네트워크간의 인터페이스
  4. Master 에 Pod 를 생성할 수 있도록 설정
    일반적으로 Master 에 유저가 만든 Pod 는 올리지 않지만, 우리는 Master 만 있기 때문에 App1 이랑 2가 별다른 설정을 안해도 Pod 를 생성할 수 있도록 설정

[6] 쿠버네티스 편의 기능 설치

  1. kubectl 자동완성 기능
    kubectl d 까지만 치고 tab 을 누르면 d 로 시작되는 키워드가 조회되고 자동완성 되도록
  2. Dashboard 설치
    1. Kubernetes Dashboard를 설치하면 서비스가 생성되며, 외부 접근을 위해 NodePort(예: 30000번 포트)가 할당된다.
    2. 이로 인해 리눅스 서버에는 30000번 포트가 열리게 되고, 해당 포트를 통해 대시보드에 접속할 수 있다.
    3. 사용자가 30000번 포트로 접속하면, 트래픽은 리눅스의 iptables를 거쳐 Calico 네트워크망으로 들어가며, 그 안에서 Dashboard Pod의 IP를 찾아 전달된다.
    4. iptables 설정을 보면 30000번 포트가 Dashboard Pod의 IP(Cluster IP)로 매핑되어 있는 것을 확인할 수 있다.
  3. Metrics server 설치 metric 정보를 조회하고, 대시보드에서 CPU 랑 메모리 정보를 확인가능

'🌱 인프런 > ⚓ 쿠버네티스 어나더 클래스 (지상편)' 카테고리의 다른 글

(5) Probe 이해하기  (1) 2025.06.02
(4) Object 그려보며 이해하기  (0) 2025.05.30
(3) 실무에서 느껴 본 쿠버네티스가 정말 편한 이유  (0) 2025.05.29
[미션1] 쿠버네티스 설치 구간별 상태 확인  (1) 2025.05.28
(1) 컨테이너 한방 정리 - Linux, Container, Container Orchestration, Kernel, kubelet  (0) 2025.05.27
'🌱 인프런/⚓ 쿠버네티스 어나더 클래스 (지상편)' 카테고리의 다른 글
  • (4) Object 그려보며 이해하기
  • (3) 실무에서 느껴 본 쿠버네티스가 정말 편한 이유
  • [미션1] 쿠버네티스 설치 구간별 상태 확인
  • (1) 컨테이너 한방 정리 - Linux, Container, Container Orchestration, Kernel, kubelet
말린
말린
  • 말린
    개발새발
    말린
  • 전체
    오늘
    어제
    • 분류 전체보기 (58)
      • 👩🏻‍💻 알고리즘 (17)
        • 백준 (17)
      • ✒️ 글또 10기 (6)
      • 🗃️ 데이터베이스 (5)
      • ☕️ 자바 (1)
      • 🌱 인프런 (28)
        • ⚓ 쿠버네티스 어나더 클래스 (지상편) (22)
        • ☕️ 김영한의 실전 자바 - 중급 1편 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
말린
(2) 쿠버네티스 무게감 있게 설치하기
상단으로

티스토리툴바