'GCP'에 해당하는 글 5건

Google Cloud Platform 에서 쿠버네티스를 운영하기 위한 방법으로 Kubernetes Engine 과 Kubernetes API 를 사용하여 어플리케이션을 배포 및 관리 할 수 있다. 간단하게 쿠버네티스를 이용하여 어플리케이션을 테스트 해보자.


GKE(Google Kubernetes Engine) 를 사용하여 쿠버네티스 클러스터 생성

kubectl 를 사용하여 Docker 컨테이너를 배포 및 관리

쿠버네티스의 Deployment 와 Service 를 사용하여 마이크로 서비스로 어플리케이션 분리



1. 구성 연결


GCP 콘솔의 APIs & services 에서 Kubernetes Engine API 와 Container Registry API 이 활성화 되어 있는지 체크하고, Cloud Shell 이나 Cloud SDK 를 사용하여 GCP 계정, 프로젝트, zone 설정 등을 확인한다.


> gcloud config list



2. 클러스터-노드 생성


> gcloud container clusters create bootcamp --num-nodes 5 --scopes "https://www.googleapis.com/auth/projecthosting,storage-rw"


NAME      LOCATION       MASTER_VERSION  MASTER_IP     MACHINE_TYPE   NODE_VERSION   NUM_NODES  STATUS

bootcamp  us-central1-a  1.11.7-gke.12   35.202.79.78  n1-standard-1  1.11.7-gke.12  5          RUNNING


위의 명령으로 클러스터(bootcamp) 와 node 가 5개 생성된다. --scopes 인수는 나중에 사용할 프로젝트 호스팅과 Google Cloud Storage API 에 대한 액세스를 제공한다.


> kubectl get nodes

NAME                                      STATUS    ROLES     AGE       VERSION

gke-bootcamp-default-pool-654208f7-2pc5   Ready     <none>    8m        v1.11.7-gke.12

gke-bootcamp-default-pool-654208f7-4hbc   Ready     <none>    8m        v1.11.7-gke.12

gke-bootcamp-default-pool-654208f7-9wxw   Ready     <none>    8m        v1.11.7-gke.12

gke-bootcamp-default-pool-654208f7-qf9k   Ready     <none>    8m        v1.11.7-gke.12

gke-bootcamp-default-pool-654208f7-x9vz   Ready     <none>    8m        v1.11.7-gke.12


GCP 콘솔에서 확인하고 싶다면 클러스터는 [Kubernetes Engine > Cluster], 노드는 [Compute Engine > VM Instances] 에서 확인할 수 있다. 아래 예제처럼 GCP 콘솔에서 직접 클러스터를 생성할 수도 있다.






3. 어플리케이션 배포


> kubectl create deployment nginx --image=nginx:1.10.0

deployment.apps/nginx created


> kubectl get pods -o wide

NAME                     READY   STATUS    RESTARTS  IP          NODE

nginx-7d79bd4478-86289   1/1     Running   0         10.48.1.5   gke-bootcamp-default-pool-654208f7-4hbc


위 명령으로 nginx 컨테이너를 담은 파드가 생성되고 노드에 배치됐다.



4. 서비스 생성 (외부IP 노출)


> kubectl expose deployment nginx --port 80 --type LoadBalancer

service/nginx exposed


> kubectl get services

NAME         TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE

kubernetes   ClusterIP      10.51.240.1     <none>          443/TCP        18m

nginx        LoadBalancer   10.51.250.242   34.66.113.107   80:32693/TCP   1m


위 명령으로 LoadBalancer 타입의 서비스를 생성하여 nginx 컨테이너를 외부에서 접근할 수 있게 한다. 생성된 External-IP 와 port 는 서비스가 유지되는 동안만 유효하다. (External-IP 생성에 일정 시간이 소요될 수 있음)



5. pod 수 확장


> kubectl scale deployment nginx --replicas 3

deployment.extensions/nginx scaled


> kubectl get pods -o wide

NAME                     READY   STATUS    RESTARTS  IP          NODE                                      NOMINATED NODE

nginx-7d79bd4478-86289   1/1     Running   0         10.48.1.5   gke-bootcamp-default-pool-654208f7-4hbc

nginx-7d79bd4478-j6wql   1/1     Running   0         10.48.2.4   gke-bootcamp-default-pool-654208f7-9wxw

nginx-7d79bd4478-zznhd   1/1     Running   0         10.48.3.5   gke-bootcamp-default-pool-654208f7-2pc5


위 명령은 생성해 놓은 nginx 배포(deployment) 의 pod 수를 3 개로 늘린다. 마스터는 요청에 따라 적절한 노드를 찾아 2개의 파드를 각각 추가로 배치한다. 트래픽이 많거나 적을 경우 위와 같이 파드 수를 늘리거나 줄일 수 있다.



6. 어플리케이션 테스트


> curl http://<External IP>:80





7. 삭제


파드나 서비스를 더 이상 사용하지 않을 경우 아래와 같이 삭제한다.


> kubectl delete deployment nginx

deployment.extensions "nginx" deleted


> kubectl get pods

No resources found.


> kubectl delete service nginx




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Google Cloud SDK

Server/GCP 2019. 4. 2. 22:02

GCP 의 핵심 도구인 Google Cloud SDK 는 GCP 에 호스팅 중인 컴퓨팅 리소스와 어플리케이션을 관리할 수 있는 도구이다. 이 도구를 사용하는 이유는 GCP 콘솔에 접속하지 않고 로컬에서 바로 GCP 의 서비스들을 사용할 수 있다는 것이다. gcloud 명령을 사용하면 Compute Engine 의 VM 인스턴스/네트워크/방화벽/디스크 등의 생성, 시작, 관리가 가능하고 인스턴스에 ssh 로 접속할 수도 있다.



Windows 설치





gcloud 초기화


설치가 끝나면 Google Cloud SDK Shell 을 시작하고 SDK 를 초기화 해야 한다. SDK 초기화란 구글 계정의 인증 정보를 사용하여 GCP 에 접근이 가능하도록 설정하는 작업이다. 


> gcloud init


위 명령을 실행하면 브라우저에 구글 계정 로그인 화면이 나타나고 로그인 후에는 Google Cloud SDK 앱이 GCP 리소스를 관리할 수 있도록 접근을 허용한다. 그 다음엔 프로젝트 목록에서 연결할 프로젝트를 선택하고 기본 Region 과 Zone 을 설정한다. (가장 가까운 곳은 Tokyo 리전이다 : asia-northeast1)


Pick cloud project to use:

 [1] ace-ellipse-186706

 [2] api-project-527566519947

 [3] gcp-test-209108

 [4] Create a new project

Please enter numeric choice or text value (must exactly match list

item):  3


Do you want to configure a default Compute Region and Zone? (Y/n)?  y


Which Google Compute Engine zone would you like to use as project

default?

If you do not specify a zone via a command line flag while working

with Compute Engine resources, the default is assumed.

...

 [32] asia-northeast1-b

 [33] asia-northeast1-c

 [34] asia-northeast1-a

...

Please enter numeric choice or text value (must exactly match list

item):  34


모든 설정이 끝났으면 활성화 된 구성(configuration) 을 확인할 수 있다.


> gcloud config list

[compute]

region = asia-northeast1

zone = asia-northeast1-a

[core]

account = ggamzzak__@gmail.com

disable_usage_reporting = True

project = gcp-test-209108


Your active configuration is: [default]


처음 초기화를 진행하며 생성된 구성(configuration) 의 이름은 default 이다. 


추후 프로젝트나 리전 등의 구성을 수정할 수도 있다.  gcloud config set 


> gcloud config set project [PROJECT]

> gcloud config set compute/zone us-east1-b



다중 구성


다른 계정이나 프로젝트에 대한 구성(configuration) 을 더 추가하거나 삭제할 수도 있다.  gcloud config configurations 


> gcloud config configurations create [NAME]

> gcloud config configurations delete [NAME]


구성(configuration) 간에 전환도 가능하다.


> gcloud config configurations list

> gcloud config configurations activate [configuration name]




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

쿠버네티스는 어디부터 시작해야 할까? 쿠버네티스 이론과 플러스로 특정 클라우드 서비스의 이론, 오픈 소스인데 무료로는 쉽게 접할 수 없을 것 같은 무시무시함, 그 시작점도 여러가지, 솔루션도 여러가지라 시작하는 것부터가 고민이다. 일단 쿠버네티스를 접할 수 있는 방법은 다음과 같이 무궁무진하다.


1. 로컬 장치 솔루션 : PC 나 노트북 등에 쿠버네티스 경량 버전을 설치하고 스피드하게 쿠버네티스 접해보기.(무료!)

2. 호스티드 솔루션 : 쿠버네티스를 설치 없이 즉시 사용할 수 있는 클라우드 솔루션.(gke, eks)

3. 턴키 클라우드 솔루션 : gce 나 ec2 같은 클라우드 컴퓨터에서 클러스터 관리 등 편리한 쿠버네티스 운영을 위한 솔루션.

4. 그 외 클라우드 공급자와 베어메탈 환경, 많은 운영체제에서의 특수조합 솔루션과 사용자 정의 솔루션.


일일이 나열하지는 않았지만 보자마자 꺼버리고 싶을 정도로 다양한 솔루션들. 난 단지 쿠버네티스를 설치하고 테스트 해보고 싶을 뿐인데, 뭐라뭐라~~~ 간단하지는 않겠지만 하고자 한다면 원하는 플랫폼에서 원하는 수준으로 쿠버네티스 솔루션 사용이 가능하다. 특정 클라우드나/서버/OS 에 따라 설치방법이과 설정이 조금씩 다르나, 클러스터 생성 - 앱 배포 - 스케일링 - 업데이트 등의 쿠버네티스의 흐름은 모두 동일하다. 부담없는 무료버전을 빠르게 설치해서 쿠버네티스 명령과 동작 좀 익히고, 중간에 시간 좀 남으면 서버에 직접 설치도 해보고, 그러다가 호스티드 솔루션으로 자연스럽게 넘어가서 운영을 할 수 있을 정도가 되어보려 한다.


시작부터 난관에 빠지긴 했지만... 설치전에 쿠버네티스가 어떻게 생겼는지를 먼저 보는게 좋겠다.



요롷게 생겼다. 어떤 솔루션이든 쿠버네티스가 설치되어 있다면, 가장 먼저 클러스터라는 공간을 생성해 주어야 하며, 그 안에는 마스터 노드(Master) 와 워커 노드(Node) 를 생성할 수 있다. 마스터는 클러스터 내에 발생하는 모든 요청들을 담당하는 중추적인 역할을 하며 하나의 클러스터에 한 개만 있으면 된다. 노드는 클러스터에 따라 물리적인 컴퓨터나 가상머신(VM) 등의 장치가 된다. 앱이 구동될 공간이며, 하나의 클러스터에 여러 개를 생성할 수 있다. 모든 준비를 마친 후 앱을 배포하도록 Master 에 지시하면 적당한 Node 에서 앱을 구동하게 될 것이다. 겉보기는 저게 다다. 이렇게 보니까 되게 쉬워 보인다. 자신감+1.


다음은 로컬 장치 솔루션 사용해 보기!




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Kubernetes 란

Tool/Kubernetes 2019. 3. 12. 00:10


쿠버네티스는 운영 수준에서 컨테이너 오케스트레이션(컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리) 기능을 하는 오픈소스 시스템이다. GO 언어로 구현이되었으며, 구글에서 설계를 했지만 오픈소스로서 특정 벤더나 플랫폼에 종속되지 않기 때문에, 대부분의 클라우드/온프레미스 등에 사용이 가능하다. 비슷한 기능을 하는 솔루션으로 Docker Swarm, Mesosphere, OpenStack, CloudFoundry 등이 있지만 Kubernetes 로 표준화되어 가고 있다. 쿠버네티스(Kubernetes) 는 K8s 라고도 하는데 K"ubernete"s 가운데 8글자를 "8"로 대체한 약어이다. 우선 쿠버네티스가 실전에서 어떻게 사용되는지를 먼저 보는 것이 쿠버네티스의 용도를 파악하기 쉬울 것 같다.


쿠버네티스를 사용한 어플리케이션 여러 배포 방법 중 하나의 과정을 적어봤다.


  1. 뚝딱뚝딱 서비스할 어플리케이션(A) 만들기.
  2. 쿠버네티스를 제공하는 클라우드 서비스에서 어플리케이션(A)가 운영될 클러스터 생성 및 리소스 설정
  3. 어플리케이션(A)을 컨테이너화하고 쿠버네티스에 배포 <- 운영 시작
  4. 스케일링 설정으로부터 파드(Pod) 수를 조절하며 업데이트 및 롤백 가능


큰 그림 위주의 단계만 적어놓아 이해에 부족함이 있을지도 모르겠다. 위 단계처럼 쿠버네티스는 배포 시스템이며, 안정적으로 운영을 하기 위한 여러 기능을 제공하고 있다. 기존 웹서버에 ELB 와 오토스케일링을 붙이는 방식보다 컨테이너 배포 시스템이 더 나은 점은 빠르고 안정적인 배포와 확장이다. 규모가 커질수록 컨테이너 방식이 월등하다. 다운될 일이 전혀 없는 작은 서비스를 운영하고 있고, 앞으로도 큰 서비스를 개발할 계획이 절대 없다면 이러한 컨테이너 서비스를 사용할 필요가 없다. 제대로 사용하기까지 드는 시간과 노력의 비용이 훨씬 많이 들기 때문이다. 쿠버네티스에 일찍 올라타진 못했지만 많은 사람들이 컨테이너 오케스트레이션 중에는 쿠버네티스를 가장 선호하고 있으며, GitKube 나 Jenkins X 등 Kubernetes 를 더 편리하게 사용할 수 있도록 많은 툴들이 확장되고 있다. 컨테이너 서비스에 관심이 많거나, 최소 트래픽 분산 환경의 웹서버를 운영하는 종사자, 또는 앞날이 창창한 신입 개발자들에게 반드시 도움이 되는 시스템이라고 생각한다.



* 더 도움이 되는 사이트

쿠버네티스 공식 문서(부분 한글) - https://kubernetes.io/docs/home/

조대협(조병욱) 님의 블로그 - https://bcho.tistory.com/1255




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

GCP

Daily/Diary 2018. 7. 3. 16:11



GCP 는 구글 클라우드 플랫폼(Google Cloud Platform) 의 약자로, 이름 그대로 AWS, AZURE 같은 클라우드 컴퓨팅 서비스이다.

3년 정도 AWS 의 웹에 필요한 대부분의 서비스를 거의 다 사용해 본 것 같다. 

물론 지금도 새로운 서비스들이 넘쳐나오고 있지만 각 카테고리에 대한 기본적인 개념에 많이 적응했다.

나이스하게 사용했는지는 장담할 수 없지만 맛은 충분히 봤다.


이제 좀 편안해 지나 싶었더니, 인공지능 관련 프로젝트 때문에 GCP 로 넘어가는 과도기라 간만에 세미나도 갔다.

사실 웹서비스 부분은 AWS 를 쓰던 GCP 를 쓰던 별 차이는 없다고 본다.

웹서비스에서 그들이 할일은 보안에 강하고, 뻗지 않고, 빠른 복구, 빠른 속도 등 이런 기본적인 것들은 어디든 똑같다.

AWS 는 되는데 GCP 는 안되고... 하는 건 거의 없다. 있다고 해도 금방 비슷한 서비스나 기능들로 만들어 낸다.

비용도 다 거기서 거기. 느린 콘솔은 똑같고, document 의 한글화가 반만 되어 있는 것도 똑같다. 구글 번역기 뭐하냐!!


중요한건 그들이 만들어 놓은 서비스를 우리의 필요에 맞게 얼마나 효율적으로 쓸 수 있는 것인지가 관건이라고 생각한다.

AWS 와 GCP 의 많은 서비스들을 비교해보고 요건 이게 더 좋니 저건 저게 더 좋니하는건 귀찮아서 못하것다.

사실 전문가가 아니라 깔 실력이 안되서... 비교는 인터넷에 겁나 많으니 찾아보면 될 것이고... 써보다가 괜츈한게 있으면 그 때 후기 남기리다.


암튼 이번엔 구글로 넘어간다.




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,