본문 바로가기

Docker & Kubenetes

Kubernetes 트러블 슈팅의 기본 프로세스

Kubernetes Troubleshooting의 기본 프로세스를 알아보겠습니다.

일반적인 작업 순서는 다음과 같습니다.

Apply > Get > Describe > Logs > Get Event

1. YAML 파일을 이용하여 오브젝트를 생성(apply)하고 생성한 오브젝트 리스트를 get 명령으로 확인
2. 파드가 정상적으로 생성되지 않으면 describe 명령으로 상세한 설정 정보를 확인
3. 애플리케이션 관련 에러는 logs 명령으로 확인하고 클러스터 관련 메시지는 get event 명령으로 확인

예시

이미지 버전을 잘못 기재하여 발생한 에러를 예시로 트러블 슈팅을 진행해 보겠습니다.

apiVersion: v1
kind: pod
metadata:
	name: test-nginx
spec:
	container:
	- name: test-nginx
      image: nginx:1.19.19 #존재하지 않는 이미지 버전

해당 파일로 생성(apply)하게 되면 Pod의 Status가 ImagePullBackOff 로 나타나며 에러를 발생합니다.

에러가 발생하면 describe 명령으로 상세 정보를 확인합니다.

k describe pod test-nginx

명령으로 확인하면 nginx:1.19.19 not found 정보를 출력하며,  nginx:1.19.19 버전의 이미지를 찾을 수 없다는 뜻 입니다.

apiVersion: v1
kind: pod
metadata:
	name: test-nginx
spec:
	container:
	- name: test-nginx
      image: nginx:1.19 #존재하는 이미지 버전

파일의 내용을 존재하는 버전의 이미지로 변경해주고 기존의 Pod는 삭제 후 다시 apply 하면 Running으로 정상 실행 됩니다.

애플리케이션의 로그 확인은 k logs [Option] [Pod Name] 으로 확인 가능하며 -f 옵션으로 실시간 로그를 확인할 수 있습니다.

클러스터 이벤트는 k get event 명령으로 확인 가능하며 k get 명령어는 특정 네임스페이스의 경과만 출력하기 때문에 각 네임스페이스별 이벤트는 -n 옵션으로 네임스페이스 이름을 지정하거나 -A 옵션으로 전체 네임스페이스 옵션을 지정해서 확인해야 합니다. 

 

출처 : 24단계 실습으로 정복하는 쿠버네티스