스터디/GDG_클라우드 스터디

쿠버네티스

개발자 덕구🐾 2022. 8. 21. 02:32
728x90

 

쿠버네티스는 Iaas와 Paas 사이에 위치한다. 

왼쪽으로 갈수록 low하다.  

 

 

 

 

 

컨테이너가 뭔데?

 

 

 

예전에는 가상머신을 띄울 때 일일히 OS를 설치하고 그 위에 앱을 돌리는 구조였다. 

이는메모리를 잡아먹는 등 성능을 낮춘다. 

 

이미지는?

우분투를 띄울 때 OS를 위한 모든 설정값, 라이브러리 등을 모두 가지고 있는 것을 이미지라고 생각하자.

이미지를 실행한 상태가 컨테이너다. 

 

 

컨테이너를 관리해주는 툴이 쿠버네티스이다. 

 

 

 

 

코드를 업데이트하면 빌드를 하고, 

빌드를 하면 이미지를 만든다. 

그리고 원래 돌아가던 컨테이너를 내리고  새 이미지를 실행시켜 만든 컨테이너를 돌린다.

 

 

 

쿠버네티스는 마스터노드, 워커노드로 이루어져있고 가장 작은 단위는 pod이다. 

[ Pod : 쿠버네티스의 가장 작은 배포단위  ( 한개 이상의 컨테이너로 이루어져있다.) ]

 

 

마스터노드는 API Server, Scheduler, Controller manager, etcd로 이루어져있다. 

API 서버는 모든 쿠버네티스 컴포넌트와 통신한다.

 

 

 

 

 

 

 

 

마스터노드는 하나, 워커노드는 원하는 대로 띄울 수 있다. 

 

 

 

 

1. 구글 클라우드 -> IAM 및 관리자 -> 리소스 관리 

 

 

 

 

2. 프로젝트 생성 

 

 

3. 프로젝트 열기

 

 

4.  우측 상단 cloud shell 을 열어줍니다. 

 

5.  깃 클론을 한 뒤 cd로 들어가 mvnw를 실행시켜 프로젝트를 실행시켜 줍니다. 

<설정정보와 라이브러리를 다 다운받습니다.>

 

 

 

6. 웹 미리보기를 통해 확인하면 잘 띄어지는 것을 확인할 수 있습니다. 

 

 

 

 


 

 

 

 

1. 패키징 해줍니다. 

 

 

2. target에 jar 파일이 만들어져 있습니다 .

 

 

 

 

3. jar을 실행시켜줍니다. 

 

 

 

지금 이 상태는 자바 파일 하나가 필요한 모든 라이브러리들이 패키징된 상태의 파일을 띄운것이다. 

 

웹 미리보기를 확인하면 위와 같이 똑같은 상태로 돌아갑니다. 

 

 

 

4.   연관된  APi 특징들이 사용가능하도록 만들어줍니다. 

 

the related API features are enabled.

<입력>

 

5. 

 

gcloud services enable containerregistry.googleapis.com


export GOOGLE_CLOUD_PROJECT=`gcloud config list --format="value(core.project)"`



./mvnw -DskipTests com.google.cloud.tools:jib-maven-plugin:build \
  -Dimage=gcr.io/$GOOGLE_CLOUD_PROJECT/hello-java:v1

 

 

3번 각각 입력한다 .

 

 

 

6. 기분 좋은 build Success다. 

 

 

 

7. container Registry로 들어간다. 

 

 

 

8.  이미지가 만들어져 있습니다. 

 

 

9. 콘솔 창에 입력해줍니다. 

 

docker run -ti --rm -p 8080:8080 \
  gcr.io/$GOOGLE_CLOUD_PROJECT/hello-java:v1

 

 

 

잘 뜹니다-!

 

 

 

 


 

 

1.  쿠버네티스를  enable 한다. 

 

gcloud services enable compute.googleapis.com container.googleapis.com

 

 

 

2. 명령어 입력  < 클러스터 생성 >

gcloud container clusters create hello-java-cluster \
  --num-nodes 2 \
  --machine-type n1-standard-1 \
  --zone us-central1-c

 

hello-java-cluster 이름의 클러스터를 만든다. 

노드 2개를 띄울건데 머신타입은 n1-standard-1이다. 

 

 

 

꽤나 시간이 걸린다.

 

 

 

hello-java-cluster 라는 이름의 클러스터가 만들어졌고

마스터의 IP가 나온다. 

 

 

 

 

 

3. 쿠버네티스 엔진을 확인하면 다음과 같이 생성되어 있다. 

 

 

4.  deployment(pod를 컨트롤하는 리소스)를 만들거야 

gcr에 있는 이미지를 이용해서 

 

kubectl create deployment hello-java \
  --image=gcr.io/$GOOGLE_CLOUD_PROJECT/hello-java:v1

 

 

5. 로드 밸런서는 외부에서 내부로 접근할 수 있도록 도와준다 .

로드 밸런서를 만든다 .

kubectl create service loadbalancer hello-java --tcp=8080:8080

 

 

3개로 늘려준다. 

kubectl scale deployment hello-java --replicas=3

 

 

 

6.  3개가 있고 3개를 사용할 수 있다는 것을 보여준다. 

 

 

7.  편집기를 열어주세요

 

 

 

 

8.  maven을 사용하도록 클릭해준다.

 

9. 다시 콘솔을 열고 

 

complete로  가서 패키징해준다. 

 

v2 로 패키지를 만듦

 

./mvnw -DskipTests package \
  com.google.cloud.tools:jib-maven-plugin:build \
  -Dimage=gcr.io/$GOOGLE_CLOUD_PROJECT/hello-java:v2

 

 

 

10 .  이미지를 업데이트 함

 

kubectl set image deployment/hello-java \
  hello-java=gcr.io/$GOOGLE_CLOUD_PROJECT/hello-java:v2

 

 

11. 외부 IP를 확인해준다. 

 

 

 

12. 외부 IP 로 확인한다.

 

 

반응형