K8s-Cloudwave: 쿠버네티스 기초

추상화란?

  • 복잡한 것은 감춤
  • 필요한 기능만 오픈
  • 인터페이스를 표준화

인프라에서의 추상화

영역 추상화 기술 의미
네트워크 SDN 네트워크를 소프트웨어로 제어
스토리지 SDS 스토리지를 소프트웨어로 관리
서버 VM 물리 서버를 논리적으로 분리
애플리케이션 Container / Kubernetes 실행 환경 자체를 추상화

 


컨테이너란?

  • 커널을 공유
  • 리소스(CPU, Memory, Disk 등)를 격리
  • 리소스 어떻게 격리? Namespace로 분리

컨테이너 적용 효과

  • 인프라/서비스 관점에서 운영 및 관리 향상

도커 이미지 & 레이어 구조

이미지 & 컨테이너

  • 이미지: Read-Only 레이어들의 집합
  • 컨테이너: 이미지 + Read-Write 레이어 1개
  • 컨테이너가 죽으면 RW 레이어는 삭제됨

이미지 레이어

  • 명령어 1줄 = 레이어 1개
  • 각 레이어는 해시(hash) 값을 가짐
  • 명령어 수정 → 해시 변경 → 새로운 레이어 생성

해시(Hash)

  • 1:1 함수
  • 역함수 없음
  • 변경 추적 가능 (면접 단골 질문 포인트)

Union / Overlay File System

  • 여러 레이어를 하나처럼 보여줌
  • 같은 경로에 파일이 있으면 위 레이어가 우선
  • 도커의 핵심 기술

웹 IDE 개발환경 구성도

 

My Windows: 우리가 쓰는 개인 PC, 연습용 서버를 PC 안에 만든 것

Docker: 가짜 서버를 만들어주는 프로그램

IDE: 코딩하는 작업실 (웹으로 접속하는 VS Code)

Default Network: 도커 설치하면 자동으로 생기는 기본 네트워크

Kubernetes(worker01, worker02 관리자)

  • 웹 서버를 여러 개 띄움
  • 고장 나면 자동으로 다시 켬
  • 트래픽을 골고루 나눠서 보냄

worker01/worker02: 각각이 노드이다 (쿠버네티스에 올라간 서버)

Kind Network: 쿠버네티스의 노드끼리 통신하기 위한 도커 전용 네트워크

nginx-pod (노란 박스): 웹사이트를 보여주는 프로그램 (웹서버)

ClusterIP: 모든 트래픽이 하나의 주소로 접속되고 내부에서 알아서 트래픽을 분배하는 역할

kube-proxy: ClusterIP 트래픽 분산 담당

CNI: CNI는 쿠버네티스에서 “Pod 네트워크를 실제로 만들어주는 플러그인 규칙”

 

왜 CNI가 필요할까?

쿠버네티스의 요구사항:

  • 모든 Pod는 고유한 IP
  • 모든 Pod는 NAT 없이 서로 직접 통신
  • 노드가 달라도 Pod ↔ Pod 통신 가능

- Docker 네트워크만으로는 이걸 보장 못 함

그래서 쿠버네티스는:“네트워크는 내가 정의만 할게, 구현은 CNI 플러그인이 해”

 

CNI는 노드 안에서 ↓를 수행:

  • Pod 생성 시
    • veth pair 생성
    • 한쪽은 Pod
    • 한쪽은 노드의 cni0 브리지에 연결
  • Pod IP 할당 (10.110.x.x)
  • 노드 간 Pod 통신 경로 설정
  • 필요 시 터널링 설정

외부 → 내부 흐름

  1. 내 PC에서 요청
  2. Docker 네트워크로 들어감
  3. Kubernetes가 어느 서버로 보낼지 결정
  4. nginx가 웹페이지 응답

'K8s' 카테고리의 다른 글

K8s_Cloudwave: ConfigMap & Secret  (0) 2026.01.12
k8s_cloudwave: 볼륨  (1) 2026.01.09
K8s_Cloudwave: K8s 기본 리소스  (0) 2026.01.09
K8s_Cloudwave: Terraform 활용 EKS 생성  (0) 2026.01.09
K8s-Cloudwave: 로컬 K8s 생성  (0) 2026.01.08