반응형

Tasks

Check that there is a tagged image in gcr.io for echo-app:v2
Echo-app:v2 is running on the Kubernetes cluster
The Kubernetes cluster deployment reports 2 replicas.
The application must respond to web requests with V2.0.0

 

1. 파일 압축 풀기 및 Docker Build

 

- 압축 풀기

tar -xvzf resources-ehco-web-v2.tar.gz

- PROJECT_ID 환경변수 등록

export PROJECT_ID=$(gcloud info --format='value(config.project)')

- Image 를 Google Container Registry 에 push

 

2. Version 수정

- echo-web-deployment.yml 파일 수정

아래에 있는 1.0 을  v2 로 변경한다.

- Image push

docker push gcr.io/${PROJECT_ID}/echo-web:v2

그리고 나서 화면에서 Action 에 있는 Rolling update 를 클릭한다.

Rolling Update 에서 image 는 조금전에 push 한 v2 이미지를 사용한다. 그리고 Update 클릭

 

- Scale 변경

Action  메뉴에서 Scale 을 클릭한후 Replicas 값을 2 로 입력한다.

완료가 되면 위에 보이는 Replicas 정보가 아래와 같이 변경된다.

 

Deployment Details 화면에 있는 yaml 탭에 가서 파일 내용을 살펴보면 spec.replicas 가 2 로 변경 되어 있는것을 볼 수 있다.

 

728x90
반응형
반응형

Tasks

An application image with a v1 tag has been pushed to the gcr.io repository
A new Kubernetes cluster exists (zone: us-central1-a)
Check that an application has been deployed to the cluster
Test that a service exists that responds to requests like Echo-app

 

1. 클러스터 생성


gcloud beta container --project "qwiklabs-gcp-00-337f72711928" clusters create "echo-cluster" --zone "us-central1-a" --no-enable-basic-auth --cluster-version "1.14.10-gke.17" --machine-type "n1-standard-2" --image-type "COS" --disk-type "pd-standard" --disk-size "100" --metadata disable-legacy-endpoints=true --scopes "
https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/trace.append" --num-nodes "3" --enable-stackdriver-kubernetes --enable-ip-alias --network "projects/qwiklabs-gcp-00-337f72711928/global/networks/default" --subnetwork "projects/qwiklabs-gcp-00-337f72711928/regions/us-central1/subnetworks/default" --default-max-pods-per-node "110" --addons HorizontalPodAutoscaling,HttpLoadBalancing --enable-autoupgrade --enable-autorepair

 

클러스터 생성은 Cloud Console 에서 직접 하면 된다.

name 은 "echo-cluster" , machine-type 은 "n1-standard-2" 로 만들어 준다.

 

2. tar file 을 Google Cloud Storage 에서 복사한 후 압축을 푼다.

 

- Google Cloud Strage 에서 복사

gsutil cp gs://qwiklabs-gcp-00-337f72711928/echo-web.tar.gz .

- 압축 풀기
tar -xvfz echo-web.tar

 

 

3. Docker Build 및 Image Push

- Docker Build

- Image 확인

echo-app 이 생성된 것을 확인할 수 있다.

 

- GCR(Google Cloud Registry) 에 push 하기 위해서 Tag 를 변경해준다. 

export PROJECT_ID=$(gcloud info --format='value(config.project)')

docker tag echo-app:v1 gcr.io/${PROJECT_ID}/echo-app:v1

- Image 를 Cloud Registry 에 push

중간에 나는 project id 를 그대로 써줬는데 위에서 export 를 했기 때문에 ${PROEJCT_ID} 로 써줘도 된다.

 

4. GKE 에 Deploy 하기

Cloud Console  의 Container Registry 를 확인해 보면 위와 같이 push한 이미지를 확인 할 수 있다.

오른쪽에 ... 메뉴를 눌러보면 Deploy to GKE 버튼을 볼수 있다. 그걸 클릭한다. 

 

Image 는 "Exsiting conatiner images" 를 선택하고 좀전에 생성한 이미지를 선택해준다.

 

Application name 은 "echo-web" 이라고 해준다.

라벨에도 key에 app, value 에 echo-web 이라고 넣어준다.

Cluster 는 위에서 생성한 "echo-cluster" 를 선택한다.

그리고 "Deploy" 클릭.

 

5. 외부에서 접속 할수 있도록 expose 하기

 

Cloud Console 에서 Kubernetes Engine > Workloads 메뉴로 가면 echo-web 의 detail 정보로 들어가면 위와 같이 화면이 나온다.

화면 상단에 있는 Expose 버튼을 누른다.

 

port 를 80 으로 넣어주고 Target port 를 8080 으로 넣고 Expose 버튼을 누른다.

 

Expose 가 완료되면 위와같이 External endpoint 가 나타난다.

 

주소로 접속을 하게 되면 위와 같이 결과를 볼 수 잇다.

Cloud console 메뉴를 이용해서 만들었는데 직접 kubectl 명령어를 활용해서 만들어 보는것도 좋은 공부가 될것 같다.

 

 

 

 

728x90
반응형
반응형

Cluster
- Node 의 집합이다.
- 가장 큰 시스템 단위, 하나 이상의 노드로 구성된다.
- 서로 다른 클러스터는 데이터 교환, 접근 불가능하다.

Node
Elasticsearch 를 구성하는 하나의 단위 프로세스

- Master-eligible Node
  node.master: true 
  cluster 를 컨트롤 한다.

 

- Data Node
  node.date: true
  data 관련된 일들을 수행한다 : search, CRUD


- Ingest Node
  node.ingest: true 
  문서 indexing 전에 ingest pipeline 을 적용한다


- Machine learning Node

Index
- 비슷한 특성을 가진 문서의 모음

Type
- 하나의 Index 에서 하나 이상의 Type 을 정의할 수 있다. 
- Index 를 논리적으로 분류/구분한 것이다.

Document
- Index 화 할수 있는 기본 정보 단위이다.
- Json 형식을 이루어진다.

Shard & Replica
- Elasticsearch 는 Index 를 Shard 라는 조각으로 분할하는 기능을 제공한다.
- 콘텐츠 볼륨의 수평 분할/확장이 가능해진다.
- 병렬화 함으로써 성능/처리량을 늘리수 있다.
- Elasticsearch에서는 색인의 샤드에 대해 하나 이상의 복사본을 생성할 수 있는데, 이를 리플리카 샤드(replica shard), 줄여서 리플리카라고 한다. 

    - 각 색인은 여러 개의 샤드로 분할할 수 있다.
    - 하나의 색인은 복제하지 않거나(리플리카 없음) 1회 이상 복제할 수 있다.
    - 복제되면 각 색인은 기본 샤드(복제 원본 샤드)와 리플리카 샤드(기본 샤드의 복사본)를 갖는다.
    - 샤드 및 리플리카의 수는 색인별로, 색인 생성 시점에 정의할 수 있습니다.
    - 색인이 생성된 다음 언제라도 탄력적으로 리플리카의 수를 변경할 수 있으나, 샤드 수는 사후 변경이 불가능하다.

기본적으로 Elasticsearch의 각 색인은 기본 샤드 5개, 리플리카 1개를 갖는다. 따라서 클러스터에 최소한 2개의 노드가 있다면 색인은 기본 샤드 5개, 리플리카 샤드 5개(완전한 리플리카 1개)를 가지므로 색인당 총 10개의 샤드가 존재하게 된다.

 

RDBMS  Elasticsearch 
shema  mapping 
database  index 
table  type 
row  document 
column  field 

 

참고 url 

http://blog.naver.com/PostView.nhn?blogId=takane7&logNo=221438265860&parentCategoryNo=&categoryNo=6&viewDate=&isShowPopularPosts=true&from=search 

https://www.elastic.co/guide/kr/elasticsearch/reference/current/gs-basic-concepts.html 

728x90
반응형

'Development > Elasticsearch' 카테고리의 다른 글

Window 에서 Elasticsearch 설치  (0) 2016.08.08
반응형

Cluster

- Master, Node 2가지 타입의 리소스가 존재한다.

- Master : cluster를 관리한다. 

- Node : Worker Machine 으로 제공되는 VM 또는 물리적 컴퓨터이다. 

            각각의 Node 는 Node 를 관리하고 Kubernetes master와 커뮤니케이션을 할수 있는 Kubelet 이라는 agent 를 가지고 있다. 

            Node 는 master 가 노출시켜놓은 Kubernetes API 를 사용해서 통신을 한다. 





https://kubernetes.io/docs/tutorials/kubernetes-basics/create-cluster/cluster-intro/

Pod

- Deployment 를 생성하게 되면 Deployment는 Pod 를 생성하고 그 안에 Container 를 넣는다. 

- Pod 는 1개 이상의 어플리케이션 컨테이너와 그 컨테이너들이 공유하는 리소스의 그룹이다. 

- 공유 리소스는 volume, clusterIP 가 있다. 

- Pod 안에 있는 Container 들은 IP 와 port 를 공유한다. 

- Pod 는 Unique IP address 를 가지고 있다.


https://kubernetes.io/docs/tutorials/kubernetes-basics/explore/explore-intro/



Service

- Pod 의 논리적 집합과  그것을 접근 할수 있는 정책을 정의 해준다. 

- Service 가 설정하는 Pod 의 논리적 집합은 LabelSelector 로 정의 한다. 

- 다음과 같은 type 이 존재한다. 


 type

 내용 

 ClusterIP 

 default 이다. cluster 의 internal IP 만 노출 시키기 때문에 cluster 내부에서만 접근 가능하다. 

 NodePort 

 각각의 NodeIP 에 서비스를 노출시킨다. NodePort 서비스가 라우팅 할 ClusterIP 서비스가 자동으로 생성된다. 클러스터 외부에서 <NodeIP>:<NodePort> 로 접근 가능하다. 

 LoadBalancer 

 external IP 를 생성하여 클러스터 외부에서 접근 가능하게 해준다. ClusterIP 와 NodePort는 자동으로 생성된다.




https://kubernetes.io/docs/tutorials/kubernetes-basics/expose/expose-intro/

728x90
반응형

+ Recent posts