일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Elasticsearch
- JPA
- 오일러프로젝트
- Spring Data JPA
- 백준
- Spring
- Docker
- 자료구조
- 알고리즘
- 백트래킹
- 쿠버네티스
- DFS
- Kafka
- 카프카
- 스프링부트
- 코드업
- 인천여행
- Apache Kafka
- 월미도
- gcp
- 프로그래밍문제
- Spring Boot
- VPC
- 클라우드
- springboot
- aws
- 로드밸런서
- 스프링
- 스프링 부트
- 클라우드 컴퓨팅
- Today
- Total
GW LABS
Google Cloud StudyJam (7) - Kubernates 본문
Google Cloud StudyJam (7) - Kubernates
GeonWoo Kim 2020. 12. 15. 16:20
이번 포스팅에서는 GCP 내에서 kubernetes를 다루는 방법에 대해 알아본다. kubernetes는 컨테이너 오케스트레이션의 표준으로 자리잡고 있다. 대부분의 클라우드 제공자들은 kubernetes 엔진 및 서비스들을 제공하고 있고 GCP에서는 아주 손쉽게 kubernetes를 사용할 수 있다. 이는 GCP에서 kubernetes를 쉽게 이용할 수 있도록 Google Kubernetes Engine(GKE)을 제공하기 때문이다. 이 포스팅에서는 GCP 내에서의 kubernetes를 다루는 기본적인 사항에 대해 다루기 때문에 kubernetes에 대한 개념과 로컬 개발환경에 대한 포스팅은 아래 링크를 참조하자.
Google Kubernetes Engine
GKE는 Google 인프라를 사용하여 컨테이너식 애플리케이션을 배포, 관리, 확장할 수 있는 관리형 환경을 제공한다. GKE를 사용하면 아래와 같은 이점을 얻을 수 있다.
- Compute Engine 인스턴스에 대한 Google Cloud의 부하 분산
- 노드 풀로 클러스터 안에 하위 노드 집합을 지정하여 유연성 강화
- 클러스터에서 노드 인스턴스 개수의 자동 확장
- 클러스터에서 노드 소프트웨어의 자동 업그레이드
- 노드 자동 복구로 노드 상태 및 가용성 유지 관리
- Google Cloud의 작업 제품군을 통한 로깅 및 모니터링으로 클러스터 현황에 대한 가시성 확보
GKE 실습
다음으로 GKE 실습을 진행해보겠다. 활용할 소스코드들은 위에 링크로 첨부한 "kubernetes 시작하기" 포스팅에서 사용한 소스들을 변경하여 사용한다. 실습소스 저장소는 아래의 링크를 통해서 볼 수 있다.
우선 GKE 클러스터를 생성해야 우리의 앱을 kubernetes에 배포할 수 있다. 위의 그림처럼 gcloud config set compute/zone 명령어로 프로젝트의 존을 설정했다. 그 다음 gcloud container clusters create [클러스터 이름] 명령어로 클러스터를 생성할 수 있다. GKE 클러스터를 생성하는 데에 시간이 좀 걸리기 때문에 쉘을 하나 더 생성해서 github 저장소에서 실습 소스를 클론하자.
다음으로는 GKE kubernetes에 배포할 이미지를 빌드하고 빌드한 이미지를 gcr 레포지토리에 푸시할 것이다. gcr에 푸시할 때에는 이미지의 태그를 gcr 레포지토리 규칙에 따라 작성해야한다. 아래와 같이 gcr.io/[프로젝트이름]/[이미지이름]:[버전태그] 형태로 빌드해주면 된다.
사용할 이미지의 준비를 마쳤다. 다음으로는 kubernetes의 deployment 문서를 수정해줄 것이다. 클라우드 쉘쪽에 open editor 버튼을 통해서 현재 폴더에 있는 파일들을 수정할 수 있다. sample-deployment.yaml 문서를 아래와 같이 고친다. 사용할 image의 값을 gcr에 푸시한 이미지 이름으로 바꾸고, imagePullPolicy 항목을 삭제해주면 된다.
다음은 kubernetes deployment를 생성하고 서비스를 오픈해주는 것이다. 아래의 명령어들로 손쉽게 kubernetes 서비스를 사용할 수 있다.
kubernetes apply sample-deployment.yaml
kubernetes expose deployment sample --type=LoadBalancer
여기까지 진행했다면 위의 그림과 같이 kubectl get svc로 서비스 목록을 봤을 때, 우리가 생성한 sample 서비스에 로드 밸런서 IP가 할당된 것을 볼 수 있다. 이 IP로 브라우저를 통해 접근하면 아래와 같은 화면을 볼 수 있다. 새로고침 할 때마다 파드 10개를 번갈아가면서 접속이되며 로드밸런싱이 된다는 것을 확인할 수 있다.
GCP 콘솔 화면에서도 생성한 서비스들을 모니터링할 수 있는데 Kubernetes Engine > services & ingress 항목을 보면 우리가 생성한 서비스들의 상세정보와 로드밸런서 정보까지 확인할 수 있다. 또한 로드밸런서가 정말로 생성되어 있는지 확인할 수도 있다.
여기까지 GKE를 사용하는 방법에 대해 알아봤다. 확실히 로컬 개발 환경에서 Minikube를 이용하는 것보다도 편하다는 느낌이 있다. 큰 규모의 마이크로 서비스 아키텍처가 필요하고 이를 직접 관리해야하는 상황이라면 GKE를 사용하는 것도 아주 좋은 선택이 될 것이다.
'Infrastructure > Cloud Computing' 카테고리의 다른 글
Google Cloud StudyJam (9) - Cloud SQL (0) | 2020.12.19 |
---|---|
Google Cloud StudyJam (8) - Serverless (0) | 2020.12.16 |
Google Cloud StudyJam (6) - Auto Scaling (0) | 2020.12.10 |
Google Cloud StudyJam (5) - 클라우드 모니터링 (0) | 2020.12.10 |
Google Cloud StudyJam (4) - Deployment Manager (0) | 2020.12.09 |