728x90

개요

Google Kubernetes Engine (GKE)은 Google 인프라를 사용하여 컨테이너화 된 애플리케이션을 배포, 관리 및 확장하기 위한 관리형 환경을 제공한다. Kubernetes Engine 환경은 컨테이너 클러스터 를 형성하기 위해 그룹화된 여러 머신(특히 Compute Engine 인스턴스)으로 구성된다. 이 실습에서는 GKE를 사용하여 컨테이너 생성 및 애플리케이션 배포를 실습한다.

Google Kubernetes Engine을 사용한 클러스터 오케스트레이션

Kubernetes는 인기 있는 Google 서비스를 실행하고 애플리케이션 컨테이너에 대한 자동 관리, 모니터링, 자동 확장, 롤링 업데이트 등 동일한 이점을 제공하는 동일한 설계 원칙을 사용한다.

GKE 클러스터의 이점

  • Compute Engine 인스턴스의 부하 분산
  • 추가 유연성을 위해 클러스터 내에서 노드의 하위 집합을 지정하는 노드 풀
  • 클러스터의 노드 인스턴스 수 자동 조정
  • 클러스터의 노드 소프트웨어에 대한 자동 업그레이드
  • 노드 상태 및 가용성을 유지하기 위한 노드 자동 복구
  • 클러스터에 대한 가시성을 위한 Cloud Monitoring으로 로깅 및 모니터링

GKE 명령어

gcloud container clusters create [CLUSTER-NAME]

클러스터는 하나 이상의 클러스터 마스터 시스템과 노드라고 하는 여러 작업공간으로 시스템으로 구성된다.

위의 명령어는 클러스터를 생성하는 명령어입니다. 또한 클러스터의 이름은 문자로 시작하고 영어 또는 숫자로 끝나야 하며 40자를 초과할 수 없다. 클러스터를 생성하는데 시간이 걸릴 수도 있습니다.

 

gcloud container clusters get-credentials [CLUSTER-NAME]

클러스터를 만든 후 클러스터와 상호 작용하려면 인증 자격 증명이 필요합니다. 클러스터를 인증을 진행하는 명령어입니다.

 

kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:1.0

--image배포할 컨테이너 이미지를 지정합니다.
 gcr.io/google-samples/hello-app:1.0가져올 특정 이미지 버전을 나타냅니다. 
 버전을 지정하지 않으면 최신 버전이 사용됩니다.

위의 명령어는 컨테이너 이미지에서 새 배포를 만들기 위한 명령어이다. 이제 컨테이너화된 애플리케이션을 클러스터에 배포할 수 있습니다. 이 실습에서는 hello-app클러스터에서 실행한다. GKE는 Kubernetes 객체를 사용하여 클러스터의 리소스를 만들고 관리한다. 또한 Kubernetes는 웹 서버와 같은 상태 비저장 애플리케이션을 배포하기 위한 Deployment 개체를 제공한다. 서비스 객체는 인터넷에서 애플리케이션에 액세스하기 위한 규칙과 로드 밸런싱을 정의합니다. 이 명령어는 hello-server의 Deployment 개체를 만듭니다. Container Registry 버킷에서 예시 이미지를 가져옵니다.

 

kubectl expose deployment hello-server --type=LoadBalancer --port 8080

--port컨테이너가 노출하는 포트를 지정합니다.
type="LoadBalancer"컨테이너에 대한 Compute Engine 부하 분산기를 만듭니다.

위의 명령어는 애플리케이션을 외부 트래픽에 노출할 수 있는 Kubernetes 서비스를 생성하는 명령어입니다.

 

kubectl get service

Kubernetes 서비스에 대한 정보와 쿠버네티스 서비스를 확인하는 명령어입니다.

 

kubectl get service

외부 IP 주소가 생성되는 데 시간이 조금 걸릴 수 있습니다. EXTERNAL-IP열 상태가 pending인 경우 위의 명령어를 다시 실행하면 EXTERNAL-IP 정상적으로 나오는 것을 확인하실 수 있습니다.

 

http://[EXTERNAL-IP]:8080

위에서 확인했던 EXTERNAL-IP와 :8080을 브라우저 주소창에 입력하면 위의 화면이 나오는 것을 확인하실 수 있습니다.

화면에 Hello, world! 메시지가 표시되고 버전 및 호스트 이름도 잘 나오는 것을 확인하실 수 있습니다.

 

gcloud container clusters delete [CLUSTER-NAME]

위의 명령어는 클러스터를 삭제하는 명령어이다.

  1. 클러스터를 삭제 하려면 다음 명령어를 실행하세요.
  2. 메시지가 표시되면 Y를 입력하여 확인합니다.

클러스터를 삭제하는 데 시간이 조금 걸릴 수 있습니다.

728x90

+ Recent posts