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

| CI / CD 환경 | 인프라 환경 |
|
|
⁉️ VM (가상머신) : 물리적인 컴퓨터 안에서 소프트웨어로 만든 가상의 컴퓨터, 하나의 컴퓨터 안에서 또 다른 컴퓨터를 실행한다고 생각하면 된다.
배포 흐름
- IntelliJ 에서 코드 개발을 완료하고 커밋 → GitHub 로 코드 통합
- Jenkins 빌드
- Jenkins 는 GitHub 에서 소스를 다운
- 여기에도 Gradle 이 있어서 필요한 라이브러리 다운
- JAR 파일 생성
- 컨테이너 빌드
- JAR 파일을 실행시킬 OpenJDK 이미지를 DockerHub 에서 가져옴
- 컨테이너 빌드 : 베이스 이미지 (앱을 띄우기 위한 기반이 되는 환경) 위에 JAR 파일을 올리는 것
- MyApp 컨테이너가 이미지로 생성
- 3번의 결과물을 다시 DockerHub 로 올린다
- 배포
- k8s 에 Pod 생성 명령
- k8s 는 Pod 내 컨테이너 이미지 주소로 DockerHub에서 컨테이너 이미지를 다운
- containerd 한테 이미지로 컨테이너 생성 요청
2. 빠르고 쉽게 설치하는 방법

- VirtualBox 설치 (7.0.8)
- Vagrant 설치 (2.3.4)
- Vagrant 스크립트 실행 (→ 인프라 환경 설치 모두 끝)
- >> (k8s 실행 확인 작업) 접속 툴 설치
- 원격 접속
- Pod 조회 명령으로 상태 확인
- 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] 컨테이너 런타임 설치
- 컨테이너 런타임 설치 전 사전작업 : iptables 세팅
(→ Linux OS 에 할당된 네트워크가 쿠버네티스의 Pod Network 로 연결될 수 있도록 iptables 를 연결해주는 설정) - 컨테이너 런타임 (containerd 설치)
- containerd 패키지 설치 (option2)
- docker engine 설치 : repo 설정, containerd 설치
- containerd 패키지 설치 (option2)
- 컨테이너 런타임 : cri 활성화
[4] kubeadm 설치 : repo 설정, SELinux 설정, kubelet / kubeadm / kubectl 패키지 설정
Master node 세팅
[5] kubeadm 으로 클러스터 생성
- 클러스터 초기화
- kubectl 사용 설정
- CNI Plugin 설정 (calico)
CNI : 컨테이너들 간의 통신을 관리하는 부분에 대한 쿠버네티스와 네트워크간의 인터페이스 - Master 에 Pod 를 생성할 수 있도록 설정
일반적으로 Master 에 유저가 만든 Pod 는 올리지 않지만, 우리는 Master 만 있기 때문에 App1 이랑 2가 별다른 설정을 안해도 Pod 를 생성할 수 있도록 설정
[6] 쿠버네티스 편의 기능 설치
- kubectl 자동완성 기능
kubectl d 까지만 치고 tab 을 누르면 d 로 시작되는 키워드가 조회되고 자동완성 되도록 - Dashboard 설치
- Kubernetes Dashboard를 설치하면 서비스가 생성되며, 외부 접근을 위해 NodePort(예: 30000번 포트)가 할당된다.
- 이로 인해 리눅스 서버에는 30000번 포트가 열리게 되고, 해당 포트를 통해 대시보드에 접속할 수 있다.
- 사용자가 30000번 포트로 접속하면, 트래픽은 리눅스의 iptables를 거쳐 Calico 네트워크망으로 들어가며, 그 안에서 Dashboard Pod의 IP를 찾아 전달된다.
- iptables 설정을 보면 30000번 포트가 Dashboard Pod의 IP(Cluster IP)로 매핑되어 있는 것을 확인할 수 있다.
- 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 |