반응형

* 쿠버네티스 공식 문서에서 튜토리얼 진행하며 한국어로 번역하여 정리한 내용입니다.

* https://kubernetes.io/ko/docs/tutorials/ 에서 Katacoda를 사용하여 브라우저 상 터미널로 동일한 내용을 실습해 볼 수 있습니다.

목표 : kubectl get, describe, logs, exec 명령어를 사용하여 쿠버네티스 애플리케이션 트러블슈팅하는 방법 배우기

- Step 1 : Check application configuration

이전 시나리오에서 배포했던 애플리케이션이 실행 중인지 확인하세요.

kubectl get 명령어를 사용하여 존재하는 포드를 보세요.

$ kubectl get pods

 

다음으로, 포드 안에 컨테이너와 해당 컨테이너에 빌드된 이미지가 무엇인지 보기 위해서, describe pods 명령어를 실행하세요.

$ kubectl describe pods

IP 주소, 사용된 포트, 포드의 라이프사이클과 관련된 이벤트 목록과 같은 포드의 컨테이너에 대한 세부사항을 볼 수 있습니다.

descirbe 명령어의 출력은 광범위하며, 아직 설명하지 않았던 몇 가지 개념들을 다룹니다.

하지만, 그것들은 이 튜토리얼이 끝나면 익숙해질 것입니다.

Note: describe 명령어는 대부분의 쿠버네티스 기본 요소(node, pods, deployments)에 대한 세부적인 정보들을 얻기 위해서 사용될 수 있습니다. 이 출력은 가독성이 좋도록 설계되었습니다.

- Step 2 : Show the app in the terminal

포드는 격리된 프라이빗 네트워크에서 실행 중인 것을 상기해보세요.

그래서 그것들을 디버깅하고 상호 작용할 수 있도록 프록시 액세스가 필요합니다.

이것을 하기 위해서, 두번째 터미널에서 프록시를 실행하기 위해 kubectl proxy 명령어를 사용할 것입니다.

$ kubectl proxy

이제 다시, 포드 이름을 얻고, 프록시를 통해 해당 포드를 직접 쿼리합니다.

포드 이름은 POD_NAME 환경 변수에 저장합니다.

$ export POD_NAME=$(kubectl get pods -o go-template \
    --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
$ echo Name of the Pod: $POD_NAME

애플리케이션의 출력을 보기 위해서 curl 요청을 실행합니다.

$ curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/proxy/

url은 포드의 API에 대한 경로입니다.

- Step 3 : View the container logs

애플리케이션이 일반적으로 STDOUT으로 보내는 것은, 포드 내에 컨테이너의 로그가 됩니다.

kubectl logs 명령어를 사용하여 이러한 로그들을 검색할 수 있습니다.

$ kubectl logs $POD_NAME

Note: 포드 내에 하나의 컨테이너만 있기 때문에, 컨테이너의 이름을 지정할 필요가 없습니다.

- Step 4 : Execution command on the container

포드가 올라오고 실행되면, 컨테이너에서 즉시 명령을 실행할 수 있습니다.

이를 위해, exec 명령어를 사용하고, 파라미터로 포드의 이름을 사용합니다.

환경 변수 목록을 보겠습니다.

$ kubectl exec $POD_NAME -- env

다시 말하지만, 포드는 오직 하나의 컨테이너만 가졌기 때문에, 컨테이너 자체의 이름이 생략될 수 있습니다.

다음으로 포드 컨테이너 내에 bash session을 시작해보겠습니다.

$ kubectl exec -ti $POD_NAME -- bash
root@kubernetes-bootcamp-fb5c67579-t5zn8:/#

우리는 지금, NodeJS 애플리케이션을 실행한 컨테이너에 콘솔이 열렸습니다.

앱의 소스코드는 server.js 파일에 있습니다.

root@kubernetes-bootcamp-fb5c67579-t5zn8:/# cat server.js

curl 명령어를 실행하여 애플리케이션이 구동 중인지 확인할 수 있습니다.

root@kubernetes-bootcamp-fb5c67579-t5zn8:/# curl localhost:8080

Note : 여기서는 NodeJS 포드 안에서 명령이 실행되었기 때문에 localhost가 사용되었습니다.

만약 localhost:8080에 연결할 수 없다면, kubectl exec 명령을 실행했는지, 포드 내에서 명령을 실행하고 있는지 확인하세요.

컨테이너 연결을 닫기 위해서 exit를 입력하세요.

root@kubernetes-bootcamp-fb5c67579-t5zn8:/# exit
exit

 

출처 : https://kubernetes.io/ko/docs/tutorials/kubernetes-basics/explore/explore-interactive/ 

 

반응형

+ Recent posts