최근 개인적으로 이직을 하고 연말, 연초다 보니 포스팅이 소홀해졌는데, 새해 새마음으로 다시 포스팅을 시작하려고 합니다, 새해에 사내 스터디로 쿠버네티스를 공부하기로 했는데, 관련 내용을 공부하며, 같이 블로그에 정리를 해보고자 합니다. 학습할 때 참고한 책은 쿠버네티스 입문 입니다.
이번 포스팅은 조대협의 블로그 :: 쿠버네티스 #2 - 개념 이해 부분도 함께 참고 하였습니다.
kubectl 명령어
쿠버네티스는 kubectl 이라는 CLI 명령어를 통해서 쿠버네티스 및 클러스터 관리, 디버그 및 트러블 슈팅들을 할 수 있습니다. 자세한 내용을 알고 싶으면 kubectl 치트 시트를 참고하세요
kubectl 명령어
는 기본적으로 아래와 같은 형태로 커맨드 라인에 입력하여 사용할 수 있습니다.
$ kubectl [command] [type] [name] [flags]
command
: 자원에 실행하려는 동작create
: 생성get
: 정보 가져오기describe
: 자세한 상태 정보delete
: 삭제
type
: 자원 타입pod
: Podservice
: 서비스
name
: 자원 이름flag
: 옵션
kubectl 기본 사용법
간단히 에코 서버(=클라이언트가 전송해주는 데이터를 그대로 되돌려 전송하는 서버)를 동작시키는 kubectl를 다뤄보도록 하겠습니다.
먼저 아래 명령어를 통해서 echoserver
라는 pod를 하나 생성하겠습니다.
$ kubectl run echoserver --generator=run-pod/v1 --image="k8s.gcr.io/echoserver:1.10" --port=8080
각각의 내용은 좀 더 자세히 다루겠지만 간단히 설명하면 run 명령어
는 클러스터에 특정 이미지를 가지고 pod를 생성하는 명령어 입니다.
$ kubectl run [생성할 POD 이름] --generator=[Repolication Controller 지정] --image=[사용할 이미지] --port=[포트정보]
k8s.gcr.io는 구글의 Container Registry에서 가져오겠다는 의미입니다. –generator : Replication Controller를 지정한다고 하는데 좀 더 알아보고 다음 포스팅에 다시 말씀 드리도록 하겠습니다.
아래 명령어를 통해서 만들어진 echoserver
pod의 서비스를 생성하도록 하겠습니다.
$ kubectl expose pod echoserver --type=NodePort
아래 명령어를 입력하면 pod 들의 정보를 볼 수 있습니다.
$ kubectl get pods
각각의 내용은
NAME
: Pod 이름READY
: 0/1(생성되었지만 사용 준비 X) / 1/1(생성되었지만 사용 준비 O)STATUS
: Running (실행) / Terminating / ContainerCreatingRESTARTS
: 재시작 횟수AGE
: 생성 후 지난 시간
현재 만들어진 서비스 정보들을 확인할 수 있습니다.
$ kubectl get services
각각의 내용은
NAME
: 서비스 이름TYPE
: 서비스 타입Cluster IP
: 서비스에 클러스터 IP (내부 IP)를 할당합니다.Load Balancer
: 외부 IP를 가진 로드밸런서를 할당합니다.Node Port
: 클러스터 IP 뿐만 아니라 노드의 IP 및 포트를 통해서 접근을 할 수 있습니다.External Name
: 외부 서비스를 쿠버네티스 내부에서 호출하고자 할 때 사용할 수 있습니다.
CLUSTER-IP
: 클러스터 안에서 사용하는 IPEXTERNAL-IP
: 외부 IPPORT(S)
: 서비스에 접속하는 포트AGE
: 생성 후 지난 시간
로컬서버의 8080 포트를 에코 서버의 8080포트로 포트 포워딩 해주기 위한 명령어
$ kubectl port-forward svc/echoserver 8080:8080
브라우저를 열고 아래 주소를 입력하면 잘 동작하는걸 확인할 수 있습니다.
http://localhost:8080
에코 서버의 실행 중 로그를 수집하려면 아래 명령어를 입력하면 확인할 수 있습니다.
$ kubectl logs -f echoserver
만들어진 echoserver pod를 지워보도록 하겠습니다.
$ kubectl delete pod echoserver
잘 지워졌는지 확인하기 위해서 다시한번 아래 명령어로 확인해보겠습니다. 아까는 있었던 echoserver
가 사라진걸 확인할 수 있습니다.
$ kubectl get pods
서비스도 지워졌는지 확인하기 위해서 아래 명령어로 확인해보겠습니다. 보면 아까는 있었던 echoserver
가 사라진걸 확인할 수 있습니다.
$ kubectl get services