반응형

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

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

목표 : kubectl을 사용하여 쿠버네티스 위에 첫번째 앱을 배포하는 것을 돕고, kubectl cli에 대한 기초와 어떻게 애플리케이션과 상호작용하는지 배우는 것

 

- Step 1 : Kubectl basics

터미널에 kubectl을 입력하면, 그것의 사용법을 확인할 수 있습니다.

kubectl 명령어의 일반적인 형식은 "kubectl action resource"입니다.

이것은 지정된 리소스(node, container 등)에 대해 지정된 액션(create, describe 등)을 수행합니다.

명령어 뒤에 --help를 사용하여 가능한 파라미터에 대한 추가적인 정보를 확인할 수 있습니다.

(kubectl get nodes --help)

"kubectl version" 명령어를 실행하여 kubectl이 클러스터와 통신하도록 구성되었는지 확인하세요.

$ kubectl version

kubectl이 설치되었는지 확인하고, 클라이언트와 서버의 버전을 볼 수 있습니다.

클러스터에 있는 노드를 보기 위해서, kubectl get nodes 명령어를 실행하세요.

$ kubectl get nodes

여기에서 사용 가능한 노드를 볼 수 있습니다.

쿠버네티스는 사용 가능한 노드 리소스를 기반으로 애플리케이션이 어디에 배포될지 선택할 것입니다.

- Step 2 : Deploy our app

kubectl create deployment 명령어를 사용하여 쿠버네티스에 첫번째 앱을 배포해보겠습니다.

우리는 deployment 이름과 앱의 이미지 위치(Docker hub 외부에서 호스팅되는 이미지의 전체 레포지토리 URL 포함)를 제공해야합니다.

$ kubectl create deployment kubernetes-bootcamp \
    --image=gcr.io/google-samples/kubernetes-bootcamp:v1

deployment가 만들어지면서 첫번째 애플리케이션이 배포되었습니다.

이것은 아래 과정들을 수행하였습니다.

- 애플리케이션 인스턴스가 실행될 수 있는, 적합한 노드 찾기

- 해당 노드에서 실행되도록 애플리케이션 스케쥴하기

- 필요할 때, 새 노드에서 인스턴를 다시 스케쥴하도록 클러스터 구성하기

deployment 목록을 보려면, get deployments 명령어를 사용하세요.

$ kubectl get deployments
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   1/1     1            1           4m2s

앱에 하나의 인스턴스를 실행하는 1개의 deployment가 있습니다.

인스턴스는 노드의 도커 컨테이너 안에서 실행 중입니다.

- Step 3 : View our app

쿠버네티스에서 실행되는 팟은 격리된 프라이빗 네트워크에서 실행 중입니다.

기본적으로, 동일한 쿠버네티스 클러스터 내의 다른 포드나 서비스에서는 볼 수 있지만, 네트워크 외부에서는 볼 수 없습니다.

kubectl을 사용할 때, 우리는 API 엔드포인트를 통해 상호작용하여 애플리케이션과 통신합니다.

튜토리얼 4에서 쿠버네티스 클러스터 외부에 애플리케이션을 노출하는 방법에 대한 다른 옵션을 다룰 것입니다.

kubectl 명령어는 proxy를 만들고, 그것은 클러스터 전체의 프라이빗 네트워크로 통신을 전달할 것입니다.

프록시는 control-C로 종료될 수 있고, 실행 중에는 출력이 표시되지 않을 것입니다.

proxy를 실행하기 위해 두번째 터미널을 열어줍니다.

$ kubectl proxy
Starting to serve on 127.0.0.1:8001

이제 호스트와 쿠버네티스 클러스터 사이에 커넥션을 가지게 됩니다.

proxy는 터미널에서 API에 직접 접근할 수 있도록 합니다.

proxy 엔드포인트를 통해 호스팅되는 모든 API를 볼 수 있습니다.

예를 들면, curl 명령어를 사용하여, API를 통해 버전을 직접 쿼리 할 수 있습니다.

$ curl http://localhost:8001/version

(proxy가 실행 중인 터미널과는 다른 터미널에서 실행)

API 서버는, 포드 이름을 기반으로, 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

다음과 같이, API를 통해 실행 중인 포드에 접근할 수 있습니다.

 

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

proxy를 사용하지 않고 새로운 deployment에 접근할 수 있도록 하기 위해 필요한 service는, 다음 튜토리얼에서 설명될 것입니다.

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

 

반응형

+ Recent posts