본문 바로가기

Biusiness Insight/Computer Science

[구글 클라우드 플랫폼] Kubernetes Engine 클러스터 설정

반응형

source : GCP Qwiklabs

 

Google Cloud Shell 활성화하기

- Google Cloud Shell은 다양한 개발 도구가 탑재된 가상 머신

- 5GB의 영구 홈 디렉토리를 제공하며 Google Cloud에서 실행

- Google Cloud Shell을 사용하면 명령줄을 통해 GCP 리소스에 액세스 가능

 

1. GCP Console의 오른쪽 상단 툴바에서 Cloud Shell 열기 버튼을 클릭

 

2. 계속(Continue) 클릭

- 연결되면 인증된 상태로 PROJECT_ID설정됨

- Google Cloud Platform의 명령줄 도구 gcloud는 Cloud Shell에 사전 설치되어 있으며 탭 자동 완성을 지원

사용 중인 계정 이름 목록 표시

gcloud auth list

 

출력:

Credentialed accounts: - <myaccount>@<mydomain>.com (active)

 

출력 예:

Credentialed accounts: - google1623327_student@qwiklabs.net

 

프로젝트 ID 목록을 표시

gcloud config list project

 

출력:

[core] project = <project_ID>

출력 예:

[core] project = qwiklabs-gcp-44776a13dea667a6

 

gcloud 관련 전체 설명서는 Google Cloud gcloud 개요에서 확인 가능

 

 

기본 컴퓨팅 영역 설정

- 컴퓨팅 영역 : 클러스터와 리소스가 존재하는 대략적인 지역적 위치. (예: us-central1-a는 us-central1 리전의 영역)

 

기본 컴퓨팅 영역을 us-central1-a로 설정

gcloud config set compute/zone us-central1-a

출력

Updated property [compute/zone].

 

 

Kubernetes Engine 클러스터 만들기

- 클러스터는 1개 이상의 클러스터 마스터 머신과 노드라는 다수의 작업자 머신으로 구성

- 노드란 클러스터를 구성하기 위해 필요한 Kubernetes 프로세스를 실행하는 Compute Engine VM(가상 머신) 인스턴스

 

클러스터 생성

※ [CLUSTER-NAME]을 내가 선택한 클러스터 이름으로 대체 (예: my-cluster)

※ 클러스터 이름은 문자로 시작하고 영숫자로 끝나야 하며 40자를 초과할 수 없음

gcloud container clusters create [CLUSTER-NAME]

 

출력 :

NAME LOCATION ... NODE_VERSION NUM_NODES STATUS my-cluster us-central1-a ... 1.13.11-gke.9 3 RUNNING

 

 

클러스터의 사용자 인증 정보 얻기

- 클러스터를 만든 후 클러스터와 interaction 하려면 사용자 인증 정보를 얻어야 함

 

클러스터 인증 

※ [CLUSTER-NAME]을 내 클러스터 이름으로 대체

gcloud container clusters get-credentials [CLUSTER-NAME]

출력 :

Fetching cluster endpoint and auth data. kubeconfig entry generated for my-cluster.

 

 

클러스터에 애플리케이션 배포하기

- 클러스터 생성 후, 컨테이너식 애플리케이션 배포 가능.

- Kubernetes Engine에서는 Kubernetes 객체를 사용해 클러스터의 리소스를 생성하고 관리

- 웹 서버와 같은 상태 비추적 애플리케이션을 배포할 때는 Kubernetes에서 배포 객체를 사용합

- 서비스 객체는 인터넷에서 애플리케이션에 액세스하기 위한 규칙과 부하 분산을 정의

 

Cloud Shell에서 다음 kubectl create 명령어를 실행하여 hello-app 컨테이너 이미지에서 새 배포 hello-server를 생성

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

 

출력 :

deployment.apps/hello-server created

 

- --image는 배포할 컨테이너 이미지를 지정, 해당 명령어는 Google Container Registry 버킷에서 예시 이미지를 가져옴

- gcr.io/google-samples/hello-app:1.0은 가져올 특정 이미지 버전을 나타냄. 버전이 지정되지 않은 경우 최신 버전 사용

 

kubectl expose 명령어를 실행하여 Kubernetes 서비스를 생성

- 이 서비스는 애플리케이션을 외부 트래픽에 노출할 수 있게 해주는 Kubernetes 리소스입니다.

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

 

  • --port를 통해 컨테이너가 노출될 포트 지정
  • type="LoadBalancer" : 컨테이너의 Compute Engine 부하 분산기 생성

 

출력 : 

service/hello-server exposed

 

 

kubectl get을 실행하여 hello-server 서비스 검사

kubectl get service

 

출력 :

외부 IP 주소가 생성되는 데는 1분 정도 소요. EXTERNAL-IP 열이 "대기중" 상태이면 위 명령어를 다시 실행

※ 이 명령어의 출력에서 EXTERNAL IP 열에 있는 서비스의 외부 IP 주소를 복사.

 

외부 IP 주소와 노출된 포트를 사용해 웹브라우저에서 애플리케이션을 확인

http://[EXTERNAL-IP]:8080

 

결과 확인

 

 

클러스터 삭제

gcloud container clusters delete [CLUSTER-NAME]

- 메시지가 표시되면 Y를 입력하여 확인

- 삭제된 Google Kubernetes Engine 클러스터에 관한 자세한 내용 참조 ☞ 문서

 

클러스터 삭제  |  Kubernetes Engine 문서  |  Google Cloud

이 페이지에서는 Google Kubernetes Engine 클러스터를 삭제하는 방법을 설명합니다. 개요 클러스터를 삭제하면 다음 리소스가 삭제됩니다. 마스터 리소스 클러스터의 모든 노드 인스턴스 이러한 인스턴스에서 실행 중인 모든 포드 클러스터 생성 시 GKE가 만든 모든 방화벽과 경로 호스트 hostPath 및 emptyDir 볼륨에 저장된 데이터 다음 리소스는 삭제되지 않습니다. 시작하기 전에 이 작업을 준비하려면 다음 단계를 완료하세요. Googl

cloud.google.com

 

 

반응형