본문으로 건너뛰기

Container 관리

서비스가 배포되면 Pod와 Container를 직접 관리해야 할 때가 있습니다. 문제가 발생한 Pod를 재시작하거나, 트래픽 증가에 대응하여 스케일을 조정하는 등의 작업이 필요합니다.

운영 탭 - 파드 목록

왜 Container 관리가 중요할까요?

Container는 애플리케이션이 실행되는 "집"입니다. 집에 문제가 생기면 거주자(애플리케이션)도 영향을 받습니다. Container를 잘 관리하면 서비스 안정성을 높일 수 있습니다.

기능 개요

Kubernetes와 Docker/Podman에서 사용할 수 있는 기능이 다릅니다. 아래 표를 참고하세요.

  • 목록 조회: Kubernetes에서는 Pod 목록, Docker/Podman에서는 Container 목록을 확인합니다.
  • 상태 확인: Kubernetes는 Running/Pending/Failed 등, Docker/Podman은 running/exited/paused 등으로 표시됩니다.
  • 삭제: Kubernetes에서는 Pod를 삭제하면 Deployment가 자동으로 재생성합니다. Docker/Podman에서는 Container를 직접 삭제합니다.
  • 재시작: Kubernetes에서는 Pod 삭제로 재시작 효과를 얻습니다. Docker/Podman에서는 Restart 명령을 사용합니다.
  • 시작/중지: Kubernetes에서는 Deployment로 관리하므로 N/A입니다. Docker/Podman에서는 Start/Stop 명령을 사용합니다.
  • 스케일링: Kubernetes에서는 Deployment 레플리카를 조절합니다. Docker/Podman에서는 지원하지 않습니다.
  • 자동 스케일링: Kubernetes에서는 HPA(Horizontal Pod Autoscaler)를 사용합니다. Docker/Podman에서는 지원하지 않습니다.
Kubernetes의 특별한 점

Kubernetes에서는 Pod를 삭제해도 Deployment가 자동으로 새 Pod를 생성합니다. 이것이 "자가 치유(Self-healing)" 기능입니다.


Kubernetes Pod 관리

Pod 목록 조회

  1. Operate파드 목록
  2. 현재 배포된 Pod 목록 확인

Pod 정보 테이블

  • 상태: Running, Pending, Failed 등
  • Pod 이름: Deployment-XXXXX-XXXXX 형식
  • 생성 시간: Pod 생성 시간
  • 재시작 횟수: 컨테이너 재시작 횟수
  • CPU/메모리: 리소스 사용량 (Metrics Server 필요)
  • 액션: 로그, 삭제 등

Pod 상태 이해

  • Running: 정상 실행 중입니다.
  • Pending: 스케줄링 대기 상태입니다. 일반적으로 리소스 부족이나 이미지 풀링 중일 때 발생합니다.
  • Failed: 실행이 실패했습니다. 앱 오류나 리소스 문제가 원인일 수 있습니다.
  • CrashLoopBackOff: 반복적으로 실패하고 있습니다. 앱 시작 실패가 원인입니다.
  • ImagePullBackOff: 이미지 풀이 실패했습니다. 이미지 경로나 인증 오류를 확인하세요.
  • Terminating: 종료 중입니다. 삭제가 진행되고 있습니다.

Pod 액션

  • 로그 보기: 해당 Pod 로그 조회입니다. Logs 탭으로 이동합니다.
  • 상세 정보: Pod describe 정보입니다. 이벤트, 리소스를 확인합니다.
  • 삭제: Pod를 삭제합니다. Deployment가 새 Pod를 생성합니다.
Pod 삭제는 재시작과 같습니다

Kubernetes에서 Deployment로 관리되는 Pod를 삭제하면, Deployment가 자동으로 새 Pod를 생성합니다. 이를 통해 Pod 재시작 효과를 얻을 수 있습니다.

Pending Pod 일괄 삭제

스케줄링 대기 중인 Pod가 여러 개 있는 경우:

  1. Pending Pod 일괄 삭제 버튼 클릭
  2. 확인 다이얼로그에서 승인
  3. 모든 Pending Pod 삭제

스케일링 (Kubernetes)

수동 스케일링

스케일 변경

  1. 파드 목록 탭에서 Deployment 선택
  2. 현재 레플리카 수 확인
  3. 원하는 레플리카 수 입력
  4. Scale 버튼 클릭

스케일 유형:

  • Scale Up: 레플리카 증가 (트래픽 증가 대응)
  • Scale Down: 레플리카 감소 (리소스 절약)
  • Scale to Zero: 0으로 설정 (일시적 중단, 비용 절감)

Deployment 상태 확인

  • Replicas: 목표 레플리카 수
  • Available: 사용 가능한 Pod 수
  • Updated: 최신 버전 Pod 수

HPA (Horizontal Pod Autoscaler)

HPA는 CPU나 메모리 사용량에 따라 Pod 수를 자동으로 조절하는 강력한 기능입니다. 트래픽이 증가하면 자동으로 Pod를 추가하고, 감소하면 줄입니다.

왜 HPA를 사용해야 할까요?

수동 스케일링은 시간이 걸리고 실수할 수 있습니다. HPA를 설정하면 24시간 자동으로 트래픽에 대응할 수 있습니다.

HPA 생성

  1. 파드 목록 탭의 HPA 섹션으로 이동합니다 .
  2. HPA 생성 버튼을 클릭합니다 .
  3. 아래 설정을 입력합니다 .

HPA 설정 가이드:

  • 최소 레플리카 (권장: 2): 항상 유지할 최소 Pod 수입니다. 고가용성을 위해 2개 이상을 권장합니다.
  • 최대 레플리카 (권장: 10): 확장 가능한 최대 Pod 수입니다. 클러스터 리소스를 고려하여 설정하세요.
  • CPU 목표 (권장: 70-80%): 이 사용률을 초과하면 Pod가 추가됩니다.
  • 메모리 목표 (권장: 70-80%): 메모리 기반 스케일링 기준입니다.
  1. 생성 버튼을 클릭합니다 .
Metrics Server 필요

HPA를 사용하려면 클러스터에 Metrics Server가 설치되어 있어야 합니다. 메트릭 서버 설치 가이드를 참고하세요.

HPA 동작 원리

현재 CPU 85% → 목표 70%
→ 레플리카 증가 필요
→ 자동 Scale Up
→ CPU 부하 분산
→ CPU 70% 달성

HPA 확인 및 삭제

  • 현재 레플리카: 현재 Pod 수
  • 목표 레플리카: HPA 계산 결과
  • 현재 CPU/메모리: 실제 사용률
  • 목표 CPU/메모리: 설정된 목표

HPA 삭제: 삭제 버튼 클릭 → 수동 스케일링으로 전환

Metrics Server

Metrics Server 필요

HPA와 리소스 모니터링을 위해 Metrics Server가 필요합니다.

Metrics Server 상태 확인

  1. Metrics Server 상태 섹션 확인
  2. 상태 아이콘:
    • 초록색: 정상 동작
    • 노란색: 설치 중/확인 필요
    • 빨간색: 미설치/오류

Metrics Server 설치

Metrics Server가 없는 경우:

  1. Metrics Server 설치 버튼 클릭
  2. 설치 진행 (1-2분 소요)
  3. 상태 확인

Docker 컨테이너 관리

컨테이너 목록 조회

  1. Operate컨테이너 목록
  2. 현재 컨테이너 목록 확인

컨테이너 정보 테이블

  • 이름: 컨테이너 이름
  • 이미지: 사용 중인 이미지
  • 상태: running, exited, paused
  • 포트: 포트 매핑 정보
  • 생성 시간: 컨테이너 생성 시간
  • 액션: 시작/중지/재시작/삭제

컨테이너 제어

  • Start (docker start): 중지된 컨테이너 시작
  • Stop (docker stop): 실행 중인 컨테이너 중지
  • Restart (docker restart): 컨테이너 재시작
  • Remove (docker rm): 컨테이너 삭제 (중지 필요)

제어 절차

  1. 제어할 컨테이너 행에서 액션 버튼 클릭
  2. 확인 다이얼로그 승인 (삭제의 경우)
  3. 작업 완료 확인
컨테이너 삭제 주의

컨테이너 삭제 시 내부 데이터가 모두 사라집니다. 영구 데이터는 반드시 볼륨에 저장해야 합니다.

리소스 모니터링 (Docker Ops)

Docker Ops 탭에서 Docker 호스트 정보 확인:

  • Docker 버전: 설치된 Docker 버전
  • OS 정보: 호스트 운영체제
  • CPU/메모리: 호스트 리소스 사용량
  • 컨테이너 수: 실행 중/전체 컨테이너 수
  • 이미지 수: 로컬 이미지 수

실제 사용 시나리오

실제 상황에서 어떻게 Container를 관리하는지 알아보겠습니다.

시나리오 1: 트래픽 급증 대응 (K8s)

갑자기 사용자가 몰려서 서버가 느려졌을 때의 대응 방법입니다.

  1. 파드 목록 탭에서 현재 상태를 확인합니다 .
  2. CPU/메모리 사용량이 80%를 넘으면 스케일링이 필요합니다 .
  3. 레플리카 수를 3 → 5로 증가시킵니다 .
  4. Scale 버튼을 클릭합니다 .
  5. 새 Pod가 생성되는 것을 확인합니다 .
  6. 부하가 분산되어 응답 속도가 개선됩니다 .
미리 대비하세요

트래픽 급증이 예상되는 이벤트 전에 미리 스케일을 늘려두는 것이 좋습니다.

시나리오 2: HPA로 자동화하기

수동 스케일링이 번거롭다면 HPA를 설정하세요.

  1. 수동 스케일링이 자주 필요한 서비스를 확인합니다 .
  2. HPA 생성 버튼을 클릭합니다 .
  3. 최소 2, 최대 10, CPU 목표 70%를 설정합니다 .
  4. 생성을 완료합니다 .
  5. 이후 트래픽 변화에 따라 자동으로 스케일링됩니다 .

시나리오 3: 문제 있는 Pod 재시작

Pod가 계속 재시작되는 CrashLoopBackOff 상태를 해결하는 방법입니다.

  1. CrashLoopBackOff 상태의 Pod를 발견합니다 .
  2. 로그 보기로 문제 원인을 파악합니다 .
  3. 문제를 수정합니다 (설정, 코드 등)
  4. Pod를 삭제합니다 (Deployment가 새 Pod를 생성합니다)
  5. 새 Pod가 정상 Running 상태인지 확인합니다 .

시나리오 4: Docker Container 롤백

새 버전에 문제가 있어 이전 버전으로 돌아가야 할 때입니다.

  1. 새 버전 배포 후 문제가 발생합니다 .
  2. 현재 Container를 Stop합니다 .
  3. 이전 버전 이미지로 새 Container를 생성합니다 .
  4. 새 Container를 Start합니다 .
  5. 정상 동작을 확인합니다 .
롤백은 임시 조치입니다

롤백 후에는 반드시 문제의 근본 원인을 파악하고 수정하세요.


문제 해결

Kubernetes

  • Pod가 Pending 지속: 리소스 부족입니다. 노드 추가 또는 리소스 요청을 감소하세요.
  • Scale이 안됨: Deployment가 없습니다. Deployment 상태를 확인하세요.
  • HPA가 동작 안함: Metrics Server가 없습니다. Metrics Server를 설치하세요.

Docker

  • Start 실패: 포트 충돌입니다. 포트 매핑을 변경하세요.
  • Remove 실패: 컨테이너가 실행 중입니다. 먼저 Stop을 실행하세요.
  • 연결 안됨: 서버에 접근할 수 없습니다. SSH 연결을 확인하세요.

관련 가이드