0468

인프라

[k9s] 쿠버네티스 구조 한 번에 이해하기 (Pod, Node, Deployment 정리)

| 서론

안녕하세요, 팡일입니다.

이전 포스팅에서는 Docker를 기반으로 컨테이너를 실행하고, 하나의 애플리케이션을 독립된 환경에서 동작시키는 방법에 대해 살펴보았습니다. 하지만 실제 서비스 환경에서는 단일 컨테이너를 실행하는 수준을 넘어, 수십 개 이상의 서비스가 동시에 동작하고 이를 안정적으로 운영해야 하는 상황이 자주 발생합니다.

이처럼 컨테이너가 많아지고, 서버가 여러 대로 확장되기 시작하면 단순한 실행만으로는 관리가 어려워지게 됩니다. 어떤 서버에 배치할지, 장애가 발생했을 때 어떻게 복구할지, 트래픽이 증가하면 어떻게 확장할지까지 고려해야 하기 때문입니다.

이번 포스팅에서는 이러한 문제를 해결하기 위해 등장한 Kubernetes의 개념과 구조를 살펴보고, 이를 보다 직관적으로 다룰 수 있게 해주는 K9s 도구를 함께 정리해보려고 합니다. 이 글을 통해 쿠버네티스를 “이론적인 개념”이 아니라, 실제로 어떻게 바라보고 다루는지에 대한 감각을 잡는 것을 목표로 합니다.

| 쿠버네티스란?

쿠버네티스(Kubernetes)는 Docker와 같은 컨테이너 기반 애플리케이션을 자동으로 배포하고, 확장하고, 운영까지 관리해주는 오픈소스 플랫폼입니다.

단순히 컨테이너를 실행하는 것을 넘어서, 여러 서버(클러스터)에서 수많은 컨테이너를 안정적으로 운영하기 위한 도구라고 보면 됩니다.

쉽게 말해, 아래와 같이 이해할 수 있습니다.

  • Docker → “컨테이너를 실행하는 도구”

  • Kubernetes → “컨테이너를 대규모로 관리하는 시스템”

1) 핵심 특징 및 기능

쿠버네티스의 핵심은 “자동화”입니다. 사람이 일일이 관리하지 않아도 시스템이 알아서 처리해줍니다.

  • 컨테이너 오케스트레이션 : 수백, 수천 개의 컨테이너를 클러스터 단위로 자동화하여 관리

  • 자동화된 셀프 힐링 : 실패한 컨테이너를 재시작하고, 노드가 죽으면 컨테이너를 재배치하며, 정상적인 컨테이너만 서비스에 연결

  • 자동 스케일링 : 트래픽 양에 다라, 컨테이너 개수를 자동으로 늘리거나 줄여, 리소스를 효율적으로 사용

  • 자동 롤아웃/롤백 : 서비스 중단 없이 애플리케이션의 버전을 업데이트하거나, 문제 발생 시 이전 버전으로 자동 롤백

2) 구조 및 구성 요소

쿠버네티스는 하나의 서버가 아니라, 여러 서버가 모인 클러스터 구조로 동작합니다.

  • 마스터 노드(Control Plane) : 클러스터의 상태를 관리하고, 명령을 내리는 두뇌 역할 (API 서버, 스케줄러, 컨트롤러 매니저, etcd로 구성)

  • 워커 노드 (Worker Node) : 실제 컨테이너가 실행되는 서버 (Kubelet, Kube-proxy로 구성)

  • 파드(Pod) : 쿠버네티으싀 가장 작은 배포 단위로, 하나 이상의 컨테이너를 포함

  • 도커와 같은 컨테니어화된 애플리케이션의 배포, 확장, 관리를 자동화하는 오픈소스 컨테이너 오케스트레이션 플랫폼이다.

| k9s란?

터미널(CLI) 환경에서 쿠버네티스 클러스터를 쉽고 효율적으로 관리/모니터링할 수 있게 해주는 터미널 UI 도구입니다.

YAML 파일을 직접 작성하거나, 복잡한 kubectl 명령어 없이 키보드 단축키만으로 파드, 네임스페이스, 노드 등 리소스를 실시간으로 조회, 필터링, 관리할 수 있어 운영 생산성을 크게 높여줍니다.

1) 쿠버네티스 구조를 k9s 기준으로 이해하기

쿠버네티스를 처음 접하면 개념이 많아서 어렵게 느껴지는데,

k9s 기준으로 보면 “화면에 보이는 것 중심”으로 훨씬 직관적으로 이해할 수 있습니다.

즉, “이 리소스가 실제로 무엇을 의미하는지”를 k9s 화면과 연결해서 이해하는 것이 핵심입니다.

(1) Pod

: 실제 실행되는 컨테이너로써, 쿠버네티스에서 가장 기본이 되는 단위이며, 우리가 만든 애플리케이션은 결국 Pod 형태로 실행됩니다.

  • k9s에서 기본 화면이 pod 리스트이다.

  • 현재 실행중인 앱, 상태(Running / CrashLoopBackOff 등), 재시작 횟수, 리소스 사용량 등을 확인할 수 있다.

(2) Namespace

: 프로젝트 또는 환경을 구분하는 단위 (dev, prod 등)이며, 쿠버네티스는 하나의 클러스터 안에서 여러 서비스가 함께 돌기 때문에, 이를 구분하기 위한 논리적인 공간이 필요합니다.

  • k9s에서 :ns를 입력하여 네임스페이스를 변경한다.

  • “지금 어디 환경 보고 있지?”를 확인하는 개념이다.

(3) Node

: 실제 컨테이너가 실행되는 서버 머신이며, Pod는 결국 Node 위에서 실행됩니다. 즉, Node는 물리 서버 또는 클라우드 VM이라고 보면 됩니다.

  • k9s에서 :node를 입력하여 서버 상태를 확인한다.

  • CPU / 메모리 사용량과 노드 상태 (Ready / NotReady), 어떤 Pod가 올라가 있는지 등을 확인할 수 있다.

(4) Deployment

: pod를 관리하는 리소스 (자동으로 늘리고 줄임)이며, Pod를 직접 관리하지 않고, Deployment를 통해 관리합니다.

  • k9s에서 :deploy를 입력하여 배포 상태를 확인한다.

| K9s 실행 및 기본 옵션

K9s는 kubectl을 보다 직관적으로 사용할 수 있게 해주는 터미널 UI 도구입니다.

명령어를 하나씩 입력하지 않아도, 화면 기반으로 쿠버네티스 리소스를 확인하고 조작할 수 있는 것이 가장 큰 장점입니다.

1) 기본 실행

code
k9s
  • 현재 kubeconfig의 기본 context + default namespace 기준으로 실행됨

터미널에서 k9s를 실행하면, 현재 kubeconfig에 설정된 기본 context와 default namespace 기준으로 클러스터 상태를 확인할 수 있습니다.

처음 실행 시에는 별도의 설정 없이도 바로 쿠버네티스 리소스를 UI 형태로 확인할 수 있어, kubectl보다 훨씬 직관적으로 상태를 파악할 수 있습니다.

2) 주요 실행 옵션

code
# 특정 namespace에서 시작
k9s -n mycoolns

# 특정 리소스(pod 등) 화면으로 바로 진입
k9s -c pod

# 특정 context(클러스터)로 실행
k9s --context coolCtx

# 읽기 전용 모드 (삭제/수정 불가)
k9s --readonly

K9s는 다양한 옵션을 통해 시작 시점부터 원하는 환경으로 진입할 수 있습니다.

특히 여러 클러스터나 namespace를 사용하는 환경에서는 매번 이동하지 않고 바로 원하는 위치에서 시작할 수 있어 효율적입니다.

또한 --readonly 옵션은 운영 환경에서 실수로 리소스를 삭제하는 것을 방지하는 데 매우 유용합니다.

3) 옵션 정리

옵션

설명

-n

특정 namespace에서 시작

-c

특정 리소스 화면으로 시작 (pod, svc 등)

--context

특정 클러스터 선택

--readonly

안전 모드 (운영 환경에서 중요)

이 옵션들은 단순 편의 기능이 아니라, 실무에서 dev / staging / prod 환경을 구분해서 작업할 때 매우 중요한 역할을 합니다.

| K9s 내부 조작 방법

K9s는 단순 조회 도구가 아니라, 키보드만으로 쿠버네티스를 빠르게 탐색하고 디버깅할 수 있는 도구입니다.

처음에는 단축키가 낯설 수 있지만, 몇 개만 익혀도 kubectl보다 훨씬 빠르게 문제를 찾고 대응할 수 있습니다.

1) 기본 단축키

기능

?

도움말

:

커맨드 모드

/

필터

l

로그

d

상세

s

shell 접속

  • K9s는 마우스 없이 키보드만으로 모든 작업을 수행할 수 있도록 설계되어 있다.

  • 이 단축키들을 익히면 kubectl보다 훨씬 빠르게 리소스를 탐색하고 문제를 확인할 수 있다.

2) 커맨드 모드 (:)

code
:pod
:deploy
:svc
:ns
  • 특정 리소스 화면으로 이동

  • :를 입력하면 커맨드 모드로 진입하며, kubectl의 get 명령어처럼 리소스를 빠르게 전환할 수 있다.

  • 즉, 여러 리소스를 이동하며 확인할 때 매우 효율적인 방식이다.

3) alias 확인

code
:alias
# 또는
Ctrl + A
  • kubectl 축약어 확인

  • kubectl에서 사용하는 축약어(po, svc, deploy 등)를 확인할 수 있다.

  • 이를 통해 CLI와 K9s 간의 개념을 연결해서 이해할 수 있다.

4) 필터

code
/keyword
  • 현재 리스트에서 필터링

  • 리소스가 많아질수록 특정 pod를 찾는 것이 어려워지는데, 필터 기능을 통해 이름 기반으로 빠르게 원하는 리소스를 찾을 수 있다.

5) 네임스페이스 이동

code
:ns
  • namespace 선택 가능

  • 쿠버네티스는 namespace 단위로 리소스를 구분하기 때문에, 특정 서비스 환경(dev, prod 등)을 확인하려면 namespace 이동이 필수적이다.

6) 빠른 네임스페이스 전환

  • 0 → 전체(all)

  • 1 → default

  • 이 단축키는 빠르게 전체 리소스를 보거나 기본 namespace로 돌아갈 때 유용하다.

  • 특히 문제 발생 시 전체 상황을 확인할 때 0은 매우 자주 사용된다.

| 결론

이번 포스팅에서는 Kubernetes의 기본 개념과 구조, 그리고 이를 보다 효율적으로 다루기 위한 K9s의 활용 방법까지 함께 살펴보았습니다.

Kubernetes는 단순히 컨테이너를 실행하는 도구가 아니라, 서비스의 배포, 확장, 복구를 자동으로 관리해주는 플랫폼이며, K9s는 이러한 복잡한 구조를 보다 직관적으로 이해하고 빠르게 탐색할 수 있도록 도와주는 도구입니다. 특히 Pod, Deployment, Node와 같은 개념을 K9s 화면과 연결해서 이해하면, 쿠버네티스의 동작 방식이 훨씬 명확하게 보이기 시작합니다.

처음에는 용어와 구조가 많아 어렵게 느껴질 수 있지만, 실제로 리소스를 조회하고, 로그를 확인하고, 상태를 직접 확인해보는 과정을 반복하다 보면 자연스럽게 익숙해질 수 있습니다.

다음 단계에서는 Kubernetes 위에 실제 서비스를 배포하고, 외부에서 접근할 수 있도록 구성하는 흐름까지 이어서 다뤄보면 좋을 것 같습니다.