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

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에서는 Pod를 삭제해도 Deployment가 자동으로 새 Pod를 생성합니다. 이것이 "자가 치유(Self-healing)" 기능입니다.
Kubernetes Pod 관리
Pod 목록 조회
- Operate → 파드 목록 탭
- 현재 배포된 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를 생성합니다.
Kubernetes에서 Deployment로 관리되는 Pod를 삭제하면, Deployment가 자동으로 새 Pod를 생성합니다. 이를 통해 Pod 재시작 효과를 얻을 수 있습니다.
Pending Pod 일괄 삭제
스케줄링 대기 중인 Pod가 여러 개 있는 경우:
- Pending Pod 일괄 삭제 버튼 클릭
- 확인 다이얼로그에서 승인
- 모든 Pending Pod 삭제
스케일링 (Kubernetes)
수동 스케일링
스케일 변경
- 파드 목록 탭에서 Deployment 선택
- 현재 레플리카 수 확인
- 원하는 레플리카 수 입력
- Scale 버튼 클릭
스케일 유형:
- Scale Up: 레플리카 증가 (트래픽 증가 대응)
- Scale Down: 레플리카 감소 (리소스 절약)
- Scale to Zero: 0으로 설정 (일시적 중단, 비용 절감)
Deployment 상태 확인
- Replicas: 목표 레플리카 수
- Available: 사용 가능한 Pod 수
- Updated: 최신 버전 Pod 수
HPA (Horizontal Pod Autoscaler)
HPA는 CPU나 메모리 사용량에 따라 Pod 수를 자동으로 조절하는 강력한 기능입니다. 트래픽이 증가하면 자동으로 Pod를 추가하고, 감소하면 줄입니다.
수동 스케일링은 시간이 걸리고 실수할 수 있습니다. HPA를 설정하면 24시간 자동으로 트래픽에 대응할 수 있습니다.
HPA 생성
- 파드 목록 탭의 HPA 섹션으로 이동합니다 .
- HPA 생성 버튼을 클릭합니다 .
- 아래 설정을 입력합니다 .
HPA 설정 가이드:
- 최소 레플리카 (권장: 2): 항상 유지할 최소 Pod 수입니다. 고가용성을 위해 2개 이상을 권장합니다.
- 최대 레플리카 (권장: 10): 확장 가능한 최대 Pod 수입니다. 클러스터 리소스를 고려하여 설정하세요.
- CPU 목표 (권장: 70-80%): 이 사용률을 초과하면 Pod가 추가됩니다.
- 메모리 목표 (권장: 70-80%): 메모리 기반 스케일링 기준입니다.
- 생성 버튼을 클릭합니다 .
HPA를 사용하려면 클러스터에 Metrics Server가 설치되어 있어야 합니다. 메트릭 서버 설치 가이드를 참고하세요.
HPA 동작 원리
현재 CPU 85% → 목표 70%
→ 레플리카 증가 필요
→ 자동 Scale Up
→ CPU 부하 분산
→ CPU 70% 달성
HPA 확인 및 삭제
- 현재 레플리카: 현재 Pod 수
- 목표 레플리카: HPA 계산 결과
- 현재 CPU/메모리: 실제 사용률
- 목표 CPU/메모리: 설정된 목표
HPA 삭제: 삭제 버튼 클릭 → 수동 스케일링으로 전환
Metrics Server
HPA와 리소스 모니터링을 위해 Metrics Server가 필요합니다.
Metrics Server 상태 확인
- Metrics Server 상태 섹션 확인
- 상태 아이콘:
- 초록색: 정상 동작
- 노란색: 설치 중/확인 필요
- 빨간색: 미설치/오류
Metrics Server 설치
Metrics Server가 없는 경우:
- Metrics Server 설치 버튼 클릭
- 설치 진행 (1-2분 소요)
- 상태 확인
Docker 컨테이너 관리
컨테이너 목록 조회
- Operate → 컨테이너 목록 탭
- 현재 컨테이너 목록 확인
컨테이너 정보 테이블
- 이름: 컨테이너 이름
- 이미지: 사용 중인 이미지
- 상태: running, exited, paused
- 포트: 포트 매핑 정보
- 생성 시간: 컨테이너 생성 시간
- 액션: 시작/중지/재시작/삭제
컨테이너 제어
- Start (
docker start): 중지된 컨테이너 시작 - Stop (
docker stop): 실행 중인 컨테이너 중지 - Restart (
docker restart): 컨테이너 재시작 - Remove (
docker rm): 컨테이너 삭제 (중지 필요)
제어 절차
- 제어할 컨테이너 행에서 액션 버튼 클릭
- 확인 다이얼로그 승인 (삭제의 경우)
- 작업 완료 확인
컨테이너 삭제 시 내부 데이터가 모두 사라집니다. 영구 데이터는 반드시 볼륨에 저장해야 합니다.
리소스 모니터링 (Docker Ops)
Docker Ops 탭에서 Docker 호스트 정보 확인:
- Docker 버전: 설치된 Docker 버전
- OS 정보: 호스트 운영체제
- CPU/메모리: 호스트 리소스 사용량
- 컨테이너 수: 실행 중/전체 컨테이너 수
- 이미지 수: 로컬 이미지 수
실제 사용 시나리오
실제 상황에서 어떻게 Container를 관리하는지 알아보겠습니다.
시나리오 1: 트래픽 급증 대응 (K8s)
갑자기 사용자가 몰려서 서버가 느려졌을 때의 대응 방법입니다.
- 파드 목록 탭에서 현재 상태를 확인합니다 .
- CPU/메모리 사용량이 80%를 넘으면 스케일링이 필요합니다 .
- 레플리카 수를 3 → 5로 증가시킵니다 .
- Scale 버튼을 클릭합니다 .
- 새 Pod가 생성되는 것을 확인합니다 .
- 부하가 분산되어 응답 속도가 개선됩니다 .
트래픽 급증이 예상되는 이벤트 전에 미리 스케일을 늘려두는 것이 좋습니다.
시나리오 2: HPA로 자동화하기
수동 스케일링이 번거롭다면 HPA를 설정하세요.
- 수동 스케일링이 자주 필요한 서비스를 확인합니다 .
- HPA 생성 버튼을 클릭합니다 .
- 최소 2, 최대 10, CPU 목표 70%를 설정합니다 .
- 생성을 완료합니다 .
- 이후 트래픽 변화에 따라 자동으로 스케일링됩니다 .
시나리오 3: 문제 있는 Pod 재시작
Pod가 계속 재시작되는 CrashLoopBackOff 상태를 해결하는 방법입니다.
- CrashLoopBackOff 상태의 Pod를 발견합니다 .
- 로그 보기로 문제 원인을 파악합니다 .
- 문제를 수정합니다 (설정, 코드 등)
- Pod를 삭제합니다 (Deployment가 새 Pod를 생성합니다)
- 새 Pod가 정상 Running 상태인지 확인합니다 .
시나리오 4: Docker Container 롤백
새 버전에 문제가 있어 이전 버전으로 돌아가야 할 때입니다.
- 새 버전 배포 후 문제가 발생합니다 .
- 현재 Container를 Stop합니다 .
- 이전 버전 이미지로 새 Container를 생성합니다 .
- 새 Container를 Start합니다 .
- 정상 동작을 확인합니다 .
롤백 후에는 반드시 문제의 근본 원인을 파악하고 수정하세요.
문제 해결
Kubernetes
- Pod가 Pending 지속: 리소스 부족입니다. 노드 추가 또는 리소스 요청을 감소하세요.
- Scale이 안됨: Deployment가 없습니다. Deployment 상태를 확인하세요.
- HPA가 동작 안함: Metrics Server가 없습니다. Metrics Server를 설치하세요.
Docker
- Start 실패: 포트 충돌입니다. 포트 매핑을 변경하세요.
- Remove 실패: 컨테이너가 실행 중입니다. 먼저 Stop을 실행하세요.
- 연결 안됨: 서버에 접근할 수 없습니다. SSH 연결을 확인하세요.