이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 3단계를 실습해 보도록 한다.
2021.04.01 - [분류 전체보기] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #3
튜토리얼 모듈 3는 kubectl 을 이용하여 Kubernetes 어플리케이션의 trubleshooting을 하는 방법에 대한 것이다.
1. kubectl get 실행
$ kubectl get pods
Kubectl은 쿠버네티스 클러스터를 제어하기 위한 커맨드 라인 도구이다.
Kubectl 명령어는 다음과 같은 구조로 입력 가능하다.
$ kubectl [command] [TYPE] [NAME] [flags]
kubectl 구문에 대한 설명은 다음과 같다.
- [command]: 하나 이상의 리소스에서 수행하려는 동작 지정
- [TYPE]: 리소스 타입 지정
- [NAME]: 리소스의 이름 지정(대소문자 구분), 이름을 생략하여 실행하면 모든 리소스에 대한 세부 사항이 표시됨
- [flags]: Optional 파라메터로써 -s 또는 --server 플래그를 사용하여 쿠버네티스 API 서버의 주소와 포트를 지정할 수 있음
즉 get 에 pods 라는 타입을 지정하고 [NAME]을 생략하여 모든 리소스에 대한 세부사항을 확인한 것이다.
2. kubectl describe pods 실행
$ kubectl describe pods
kubectl describe pods를 실행하면 pod 컨테이너에 대한 세부정보가 출력된다.
3. Kubectl proxy 실행
$ echo -e "\n\n\n\e[92mStarting Proxy. After starting it will not output a response. Please click the first Terminal Tab\n";
kubectl proxy
Proxy는 쿠버네티스 서비스 네트워킹을 담당한다.
Proxy를 시작하고 있는데 응답을 주지 않을 테니까 첫 번째 터미널로 돌아가라는 내용을 출력하고 proxy를 실행한다.
이전 튜토리얼에서 설명한 내용이기 때문에 간단하게 넘어가도록 한다.
4. pod 이름 얻기
$ export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
echo Name of the Pod: $POD_NAME
다음 명령어는 pod의 정보를 이용하여 POD_NAME을 만드든 후에 만들어진 이름을 확인하는 기능을 실행한다.
5. CURL 명령어를 이용하여 Host 연결
$ curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/proxy/
CURL 명령어를 이용하여 4번 과정에서 정의한 POD_NAME을 이용해 해당 Pod의 API를 호출한 것이다.
6. pod 로그 확인하기
$ kubectl logs $POD_NAME
log 명령어를 실행하면 해당 pod에서 출력한 로그들을 모두 확인할 수 있다.
7. Pod 환경 조회 하기
$ kubectl exec $POD_NAME env
exec 는 pod 안에서 명령어를 실행하는 명령어다.
env 의 결과로 pod의 환경설정을 확인할 수 있다.
8. Pod의 bash session 열기
$ kubectl exec -ti $POD_NAME bash
다음과 같이 bash를 실행할 수 있다.
ls 를 이용하여 컨테이너 디렉토리를 확인하면 server.js 라는 파일이 들어있는것을 확인할 수 있다.
$ cat server.js
8번에서 확인한 server.js 파일을 cat명령어를 통해 확인하면 다음과 같은 NodeJS 웹서버 소스코드를 확인할 수 있다.
(NodeJS 코드를 만나서 너무 반가운 순간..)
6번에서 확인한 log들이 이 코드가 실행되면서 남긴 내용이었던 것이다.
10. curl localhost:8080 실행
$ curl localhost:8080
localhost:8080에 대한 응답이 로그로 출력된다.
11. exit (마지막)
$ exit
마지막으로 exit 명령어를 실행하면 pod에서 쿠버네티스 클러스터로 돌아온다.
이번 포스팅에 실습한 내용은 kubectl을 이용하여 pod정보를 확인하고, pod shell안에 있는 애플리케이션에 접근까지 해보는 것이었다.
이제 조금씩 쿠버네티스가 익숙해지고, 어떻게 사용해야할지에 대한 감이 잡힌다.
(튜토리얼을 굉장히 편하게 잘 만든것같다...)
다음 포스팅에서는 4번째 튜토리얼인 "Service를 사용하여 앱을 expose 하는 방법" 에 대해서 진행 내용을 정리해 보려고 한다.
참고자료
[1] kubernetes.io | Kubernetes Tutorial | 링크
'클라우드 컴퓨팅 & NoSQL > Kubernetes' 카테고리의 다른 글
쿠버네티스(Kubernetes) 공식 튜토리얼 #6 (0) | 2021.04.04 |
---|---|
쿠버네티스(Kubernetes) 공식 튜토리얼 #5 (0) | 2021.04.03 |
쿠버네티스(Kubernetes) 공식 튜토리얼 #3 (0) | 2021.04.01 |
쿠버네티스( Kubernetes) 공식 튜토리얼 #2 (0) | 2021.04.01 |
쿠버네티스( Kubernetes) 공식 튜토리얼 #1 (0) | 2021.03.31 |