파드 및 서비스 디버깅
kubectl 명령어와 기타 도구를 활용하여 비정상적으로 작동하는 파드와 연결 문제를 효과적으로 디버깅하세요.
파드 및 서비스 디버깅은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
디버깅이 중요한 이유
쿠버네티스에서 애플리케이션이 예상대로 작동하지 않을 때 디버깅은 강력한 해결 수단이 됩니다! 무엇이 잘못되었는지 이해하고 해결 방법을 찾는 데 도움이 됩니다.
문제가 있음을 나타내는 일반적인 징후는 다음과 같습니다.
- 파드가 'Pending' 또는 'CrashLoopBackOff' 상태에서 멈춤
- 서비스에 연결할 수 없음
- 애플리케이션이 예상대로 응답하지 않음
이러한 문제를 진단하는 데 필요한 도구를 배워 보겠습니다.
kubectl 디버깅 도구 모음
쿠버네티스는 클러스터를 검사하고 문제를 해결할 수 있도록 강력한 명령줄 도구를 제공합니다. 대표적인 도구가 kubectl입니다.
이번에 살펴볼 주요 명령은 다음과 같습니다.
kubectl describe: 리소스의 자세한 정보를 확인합니다.kubectl logs: 컨테이너 출력을 확인합니다.kubectl exec: 컨테이너 내부에서 명령을 실행합니다.kubectl port-forward: 로컬에서 서비스에 접근합니다.
이 명령을 능숙하게 사용하면 쿠버네티스 디버깅 전문가가 될 수 있습니다!
kubectl describe로 깊이 살펴보기
kubectl describe 명령은 모든 쿠버네티스 리소스, 특히 파드에 관한 자세한 정보를 확인할 때 가장 먼저 사용하는 명령입니다.
이 명령은 이벤트, 상태, IP 주소, 볼륨, 컨테이너 세부 정보 등 다양한 데이터를 제공합니다. 단서를 찾으려면 하단의 'Events'를 확인하세요!
kubectl describe pod my-nginx-pod클러스터 이벤트 이해
이벤트는 파드나 다른 리소스에서 무슨 일이 발생했는지 이해하는 데 중요합니다. 이벤트를 통해 생성, 스케줄링, 오류 등의 과정을 확인할 수 있습니다.
describe를 사용하면 특정 리소스의 이벤트를 확인할 수 있고, kubectl get events를 사용하면 클러스터 전체의 이벤트를 확인할 수 있습니다.
kubectl get events --sort-by='.lastTimestamp'컨테이너 로그 해석
애플리케이션은 일반적으로 표준 출력 및 오류 스트림에 중요한 메시지, 오류, 디버깅 정보를 출력합니다. kubectl logs를 사용하면 이러한 내용을 확인할 수 있습니다.
파드가 비정상 종료되고 있다면 로그를 확인해 왜 실패하는지 파악하는 것이 중요합니다. 로그를 실시간으로 따라가며 확인할 수도 있습니다.
kubectl logs my-app-pod -f컨테이너에서 명령 실행
때로는 로그를 보는 것만으로 충분하지 않습니다. 서버에 SSH로 접속하는 것처럼 실행 중인 컨테이너 내부에서 명령을 실행해 문제를 진단해야 할 수도 있습니다.
kubectl exec를 사용하면 컨테이너 내부에서 직접 명령을 실행하거나 bash 또는 sh와 같은 셸을 열 수 있습니다.
kubectl exec -it my-app-pod -- /bin/bash포트 전달로 로컬 접근
서비스에 연결할 수 없다고 생각되거나 외부에 노출하지 않고 로컬에서 테스트하려는 경우 kubectl port-forward를 사용하면 됩니다.
이 명령은 로컬 컴퓨터에서 클러스터의 파드 또는 서비스까지 보안 터널을 만들어 localhost를 통해 접근할 수 있도록 합니다.
kubectl port-forward service/my-web-service 8080:80서비스 문제 진단
서비스를 통해 애플리케이션에 접근할 수 없다면 다음 두 가지를 확인하세요.
- 서비스 셀렉터: 파드의 레이블과 올바르게 일치하나요?
- 엔드포인트: 서비스에 활성 엔드포인트(즉, 실행 중인 파드)가 있나요?
kubectl get svc와 kubectl get ep를 사용해 이를 검사하세요.
kubectl get svc my-web-service
kubectl get ep my-web-service일반적인 문제 해결
자주 발생하는 파드 문제 두 가지를 살펴보겠습니다.
CrashLoopBackOff: 컨테이너가 반복해서 시작되었다가 비정상 종료되는 상태입니다. 오류를 확인하려면kubectl logs를 사용하세요.ImagePullBackOff: 쿠버네티스가 컨테이너 이미지를 가져오지 못하는 상태입니다. 이미지 이름, 태그, 레지스트리 접근 권한을 확인하세요.
kubectl describe pod의 'Events' 섹션에서 최초 원인을 확인할 수 있는 경우가 많습니다.
디버깅 도전!
data-processor-xyz라는 이름의 파드가 CrashLoopBackOff 상태인 것을 발견했습니다. 파드가 충돌하는 이유를 조사해야 합니다.
즉각적인 원인을 진단하기 위해 다음 중 어떤 두 명령을 먼저 실행해야 할까요?
복습: 디버깅 숙련
잘하셨습니다! 주요 kubectl 명령을 사용해 파드와 서비스를 디버깅하는 방법을 배웠습니다.
- 자세한 리소스 정보와 이벤트는
kubectl describe로 확인합니다. - 컨테이너 내부에서 무슨 일이 일어나는지는
kubectl logs로 확인합니다. - 대화형 문제 해결에는
kubectl exec를 사용합니다. - 로컬 서비스 접근에는
kubectl port-forward를 사용합니다.
이러한 도구는 쿠버네티스 애플리케이션을 원활하게 실행하는 데 필수적입니다. 계속 연습해 보세요!
자주 묻는 질문
“파드 및 서비스 디버깅” 강의는 무료인가요?
네 — “파드 및 서비스 디버깅” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
“파드 및 서비스 디버깅”에서 뭘 배우나요?
kubectl 명령어와 기타 도구를 활용하여 비정상적으로 작동하는 파드와 연결 문제를 효과적으로 디버깅하세요. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“파드 및 서비스 디버깅” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 일반적인 문제 진단
- 파드 및 서비스 디버깅
- 프로덕션 모범 사례 및 팁
- 리소스 할당량과 Limit 범위