Kubernetes

2026. 5. 17. 22:00·Infra

안녕하세요.

이번 글에서는 컨테이너 오케스트레이션 플랫폼인 쿠버네티스(Kubernetes, K8s)에 대해 알아보겠습니다.

현대 서버 환경에서는 수많은 애플리케이션을 빠르게 배포하고 안정적으로 운영해야 합니다.

특히 Docker 같은 컨테이너 기술이 대중화되면서, 여러 컨테이너를 효율적으로 관리하는 기술의 중요성이 커졌습니다.

쿠버네티스는 이러한 컨테이너 환경을 자동으로 운영·관리하기 위해 등장한 플랫폼이며, 현재 클라우드와 DevOps 환경의 핵심 기술로 자리잡고 있습니다.

 

 

Kubernetes의 개념

쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션을 자동으로 배포(Deployment), 확장(Scaling), 운영(Management)하기 위한 오픈소스 컨테이너 오케스트레이션 플랫폼입니다.

원래는 Google 내부 시스템인 Borg에서 발전한 기술을 기반으로 만들어졌으며, 현재는 CNCF(Cloud Native Computing Foundation)에서 관리하고 있습니다.

또한 Kubernetes는 그리스어로 "조타수(Pilot)" 또는 "항해사"를 의미하며, 줄여서 K8s라고도 부릅니다.

쿠버네티스는 단순히 컨테이너를 실행하는 수준을 넘어, 대규모 서버 환경에서 컨테이너를 안정적으로 운영할 수 있도록 다양한 자동화 기능을 제공합니다.

Kubernetes의 필요성

컨테이너 기술이 등장하면서 애플리케이션 배포는 매우 편리해졌지만, 컨테이너 수가 많아질수록 관리가 어려워집니다.

예를 들어 다음과 같은 문제가 발생할 수 있습니다.

문제 설명
컨테이너 수 증가 수백~수천 개의 컨테이너를 수동으로 관리하기 어렵습니다.
장애 대응 특정 컨테이너가 종료되었을 때 자동 복구가 필요합니다.
트래픽 증가 사용량 증가 시 자동 확장이 필요합니다.
배포 관리 무중단 배포(Rolling Update)가 필요합니다.
서버 자원 관리 여러 서버에 컨테이너를 효율적으로 분산해야 합니다.

쿠버네티스는 이러한 문제를 자동화하여 안정적인 서비스 운영을 가능하게 합니다.

 

 

Container의 개념

쿠버네티스를 이해하려면 먼저 컨테이너(Container) 개념을 알아야 합니다.

컨테이너는 애플리케이션과 실행 환경을 하나의 패키지로 묶어 어디서든 동일하게 실행할 수 있도록 만든 기술입니다.

기존 가상머신(VM)은 운영체제(OS) 전체를 포함하지만, 컨테이너는 호스트 OS의 커널을 공유하기 때문에 훨씬 가볍고 빠르게 실행됩니다. 대표적인 컨테이너 기술로는 Docker가 있습니다.

이전 글을 참고해주세요.

 

Docker

안녕하세요.오늘은 개발 환경에서 자주 사용되는 Docker(도커)에 대해 공부해보겠습니다. Docker 의 개념Docker는 컨테이너 기반의 가상화 소프트웨어로 애플리케이션 개발 및 구축, 배포, 실행을 위

study-library.tistory.com

 

 

 

Kubernetes의 구조

쿠버네티스는 크게 Control Plane과 Worker Node 구조로 이루어집니다.

구성 요소 설명
Control Plane 클러스터 전체를 관리하는 영역
Worker Node 실제 컨테이너가 실행되는 서버

 

 

Control Plane 구성 요소

Control Plane은 쿠버네티스의 두뇌 역할을 수행합니다.

구성 요소 설명
API Server 쿠버네티스의 모든 요청을 처리하는 진입점
etcd 클러스터 상태 정보를 저장하는 분산 Key-Value 저장소
Scheduler 어떤 노드에 Pod를 배치할지 결정
Controller Manager 클러스터 상태를 지속적으로 관리

 

 

Worker Node 구성 요소

Worker Node는 실제 애플리케이션이 실행되는 영역입니다.

구성 요소 설명
Kubelet 노드에서 Pod 상태를 관리
Kube Proxy 네트워크 및 트래픽 라우팅 처리
Container Runtime 컨테이너 실행 엔진 (containerd, CRI-O 등)
Pod 컨테이너를 실행하는 가장 작은 단위

참고: 과거에는 Docker가 컨테이너 런타임으로 직접 사용되었지만, 쿠버네티스 1.24 버전부터 Docker 직접 지원이 제거되어 현재는 containerd나 CRI-O가 주로 사용됩니다.

 

 

Kubernetes의 핵심 개념

개념 설명
Pod 컨테이너 실행 단위
Node 컨테이너가 실행되는 서버
Cluster 여러 Node를 묶은 환경
Deployment Pod 배포 및 업데이트 관리
Service Pod 접근을 위한 네트워크 추상화
Namespace 클러스터 내부 논리적 공간 분리
ConfigMap 설정 정보 저장
Secret 비밀번호·토큰 등 민감 정보 저장

 

 

Pod의 개념

Pod는 쿠버네티스에서 컨테이너를 실행하는 가장 작은 단위입니다.

하나의 Pod에는 일반적으로 하나의 컨테이너가 실행되지만, 필요에 따라 여러 컨테이너를 함께 포함할 수도 있습니다.

Pod 내부 컨테이너들은 네트워크와 저장소를 공유합니다.

즉, 쿠버네티스는 개별 컨테이너가 아니라 Pod 단위로 애플리케이션을 관리합니다.

 

 

Service의 개념

Pod를 이야기할 때 함께 알아야 할 개념이 Service입니다.

Pod는 언제든 종료되고 새로 생성될 수 있으며, 그때마다 IP가 바뀝니다. 즉, Pod의 IP를 직접 호출하는 방식은 위험합니다.

Service는 이런 문제를 해결하기 위한 안정적인 진입점입니다. "이 라벨을 가진 Pod들에게 트래픽을 보내라"는 규칙을 정의하면, 뒤에 있는 Pod이 죽었다 살아나며 IP가 바뀌어도 호출하는 쪽은 영향을 받지 않습니다.

타입 설명
ClusterIP 클러스터 내부에서만 접근 가능 (기본값)
NodePort 모든 노드의 특정 포트로 외부에서 접근 가능
LoadBalancer 클라우드 환경에서 외부 로드 밸런서를 자동 연결

 

 

Kubernetes 동작 방식

사용자 → API Server → etcd 저장 → Controller 감지 → Scheduler가 노드 선택 → kubelet이 Pod 실행 → 상태 보고
  1. 사용자가 kubectl 등으로 배포 요청을 보냅니다.
  2. API Server가 요청을 검증하고, "원하는 상태"를 etcd에 저장합니다.
  3. Controller가 etcd의 변경을 감지하여 필요한 리소스를 생성합니다.
  4. Scheduler가 새로 생긴 Pod을 어느 Worker Node에 배치할지 결정합니다.
  5. 선택된 노드의 kubelet이 Container Runtime을 통해 실제 컨테이너를 실행합니다.
  6. kubelet이 실행 결과를 API Server에 보고하고, etcd가 갱신됩니다.

 

 

선언적 운영과 컨트롤 루프

위 흐름에서 한 가지 중요한 사실이 있습니다. 어떤 컴포넌트도 명령을 받아 "즉시" 실행하지 않는다는 점입니다.

쿠버네티스는 선언적(Declarative) 운영 방식을 따릅니다.

사용자는 "이렇게 해라"가 아니라 "이런 상태이길 원한다"를 선언하고, 시스템은 그 상태에 도달하기 위해 스스로 움직입니다.

이를 가능하게 하는 메커니즘이 컨트롤 루프(Control Loop) 입니다.

각 Controller는 끊임없이 "원하는 상태(desired state)"와 "현재 상태(current state)"를 비교하며 그 차이를 메웁니다.

Pod 하나가 죽으면 누가 시키지 않아도 새 Pod이 만들어지는 이유가 바로 이것입니다.

쿠버네티스의 자가 복구, 자동 확장, 무중단 배포 같은 기능들은 모두 이 선언적 사고방식 위에서 동작합니다.

 

 

Kubernetes의 주요 기능

기능 설명
자동 배포 컨테이너를 자동으로 배포합니다.
자동 복구(Self Healing) 장애가 발생한 컨테이너를 자동 재시작합니다.
오토 스케일링 트래픽 증가 시 컨테이너 수를 자동 확장합니다.
로드 밸런싱 여러 컨테이너로 트래픽을 분산합니다.
서비스 디스커버리 컨테이너 간 통신을 자동으로 연결합니다.
롤링 업데이트 무중단 배포를 지원합니다.
자원 관리 CPU·메모리 자원을 효율적으로 관리합니다.

 

 

Kubernetes의 장점

장점 설명
자동화 배포·복구·확장을 자동 처리
높은 가용성 장애 발생 시 자동 복구 가능
확장성 대규모 서비스 운영 가능
클라우드 친화적 AWS·GCP·Azure와 뛰어난 호환성
효율적인 자원 관리 서버 자원을 효율적으로 활용
DevOps 친화적 CI/CD 환경 구축에 유리

 

 

Kubernetes의 단점

단점 설명
높은 학습 난이도 개념과 구성 요소가 많아 처음에는 어렵습니다.
복잡한 운영 클러스터 관리가 쉽지 않습니다.
초기 구축 비용 소규모 서비스에는 과할 수 있습니다.
디버깅 어려움 분산 환경이라 문제 추적이 복잡할 수 있습니다.

 

 

Kubernetes와 Docker의 관계

많은 사람들이 Docker와 Kubernetes를 같은 개념으로 생각하지만 역할이 다릅니다.

구분 Docker Kubernetes
역할 컨테이너 생성 및 실행 컨테이너 운영 및 관리
목적 애플리케이션 패키징 대규모 컨테이너 오케스트레이션
관리 범위 단일 컨테이너 중심 클러스터 전체 관리

즉, Docker가 컨테이너를 만드는 기술이라면, Kubernetes는 그 컨테이너들을 대규모로 운영하는 플랫폼이라고 볼 수 있습니다.

 

 

Kubernetes가 많이 사용되는 분야

분야 설명
클라우드 플랫폼 AWS EKS, GCP GKE, Azure AKS
DevOps 환경 CI/CD 자동화
마이크로서비스 서비스 단위 독립 배포
대규모 웹 서비스 자동 확장 및 장애 복구
AI·데이터 플랫폼 GPU 및 대규모 연산 관리

현재 대부분의 클라우드 네이티브(Cloud Native) 환경이 쿠버네티스를 중심으로 구성되고 있습니다.

 

 

Kubernetes와 Cloud Native

쿠버네티스는 클라우드 네이티브(Cloud Native) 환경의 핵심 기술입니다.

클라우드 네이티브란 클라우드 환경에 최적화된 방식으로 애플리케이션을 개발·운영하는 구조를 의미합니다.

대표적으로 다음 기술들과 함께 사용됩니다.

  • Docker
  • Kubernetes
  • Prometheus
  • Grafana
  • Istio
  • ArgoCD

이러한 기술들은 MSA(Microservice Architecture)와 DevOps 문화의 핵심 기반이 되고 있습니다.

 

 

마무리 정리

이번 글에서는 쿠버네티스(Kubernetes)의 개념과 구조, 주요 기능에 대해 알아보았습니다.

쿠버네티스는 단순한 컨테이너 관리 도구를 넘어 현대 클라우드 인프라의 핵심 플랫폼으로 자리잡고 있습니다.

특히 자동 배포, 자동 복구, 오토 스케일링 같은 기능 덕분에 대규모 서비스 운영에 매우 강력한 장점을 제공합니다.

이러한 기능들은 모두 선언적 운영과 컨트롤 루프라는 핵심 철학 위에서 동작한다는 점을 기억해 두면, 앞으로 쿠버네티스의 다른 개념들도 훨씬 자연스럽게 이해할 수 있을 것입니다.

현재 대부분의 클라우드 서비스와 DevOps 환경이 쿠버네티스를 기반으로 동작하고 있기 때문에, 백엔드 개발자와 인프라 엔지니어라면 반드시 이해해야 하는 핵심 기술 중 하나입니다.

 

읽어주셔서 감사합니다.

 

 

참고

  • https://kubernetes.io/ko/docs/concepts/overview/
  • https://whatap.io/ko/blog/what-is-kubernetes-k8s-guide
  • https://www.nvidia.com/ko-kr/glossary/kubernetes/
  • https://www.redhat.com/ko/topics/containers/what-is-kubernetes
  • https://www.codestates.com/blog/content/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4
  • https://www.nutanix.com/ko/info/what-is-kubernetes
  • https://www.samsungsds.com/kr/insights/220222_kubernetes1.html
  • https://www.elancer.co.kr/blog/detail/835
저작자표시 비영리 변경금지 (새창열림)

'Infra' 카테고리의 다른 글

SAN(Storage Area Network)  (0) 2026.05.20
NAS(Network Attached Storage)  (0) 2026.05.19
UNIX  (0) 2026.05.16
Linux  (0) 2026.05.14
Docker  (0) 2025.07.03
'Infra' 카테고리의 다른 글
  • SAN(Storage Area Network)
  • NAS(Network Attached Storage)
  • UNIX
  • Linux
으노로
으노로
  • 으노로
    study-library
    으노로
  • 전체
    오늘
    어제
    • 분류 전체보기 (42) N
      • Language (16)
        • JAVA (15)
        • JavaScript (1)
      • Framework (4) N
        • Spring (4) N
      • Web (4)
      • Infra (6)
      • Algorithm (10)
        • Programmers (10)
      • Database (2)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    프로그래머스
    OS
    inmemorydb
    programmers
    java
    스프링부트
    자바
    transactional
    비동기 통신 방식
    문자열정렬하기(2)
    분수의덧셈
    스프링
    문자열 정렬하기
    spring boot
    알고리즘
    spring
    트렌잭션
    코딩테스트
    @transactional
    eclipse
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
으노로
Kubernetes
상단으로

티스토리툴바