본문 바로가기

클라우드/클라우드(Public Cloud)

클라우드 GCP 쿠버네티스 Google Kubernetes Engine ( GKE ) 2

https://daaa0555.tistory.com/329

 

쿠버네티스 Google Kubernetes Engine ( GKE ) 1

쿠버네티스 Google Kubernetes Engine ( GKE ) Google Cloud에서 제공하는 Kubernetes에서 컨테이너화된 애플리케이션을 배포, 관리, 확장한다 쿠버네티스 클러스터 생성 표준 - control-plane 은 GCP가 관..

daaa0555.tistory.com

 

 

클러스터 오토 스케일러

 

지금 현재 노드가 2개인데 그것을 늘리기 위해 디플로이먼트를 하나 만들어 늘린다

그냥 디플로이먼트를 만들어 스케일링을 해봐도 리소스.리퀘스트를 셋팅을 하지 않으면 ,어플리케이션을 올려봤자 실제로 외부에서 접근하는게 없어서 cpu 사용량이 늘어나지 않는다

리퀘스트를 설정해 스케일링을 하게되면 노드가 늘어난것을 확인 할 수 있다

더보기

apiVersion: apps/v1
kind: Deployment
metadata:
name: mydeploy
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- image: 이미지 넣으세요
name: myapp
ports:
- containerPort: 8080
resources:
requests:
cpu: 500m
memory: 500M

resources.requests 설정

 

디플로이먼트 생성

 

노드 확인 - 오토스케일링에 의해 노드가 하나 생성 되었다

리퀘스트 없이 요청하게 되면 파드의 갯수가 많아야한다

온프레임에서는 할 수 없다

 


쿠버네티스 버전 업그레이드

 

버전 업그레이드를 쉽게 할 수 있다

 


python flask를 이용하여 간단하게 웹어플리케이션 만들기

 

가상환경 활성화

flask 설치

 

requirements.txt 파일 생성 ( Docker build 할 때 사용)

 

더보기

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello Flask"
if __name__ == "__main__":
app.run(host="0.0.0.0", port=int("5000"))

 

 

편집기를 열어 myflask 디렉토리 아래에 index.py 파일 작성

 

웹 미리보기에서 5000번 포트 변경 하여 확인

 

 

 


이미지 생성하기

 

더보기

FROM python:3-alpine
WORKDIR /app
COPY requirements.txt requirements.txt
COPY index.py index.py
RUN pip3 install -r requirements.txt
EXPOSE 5000
CMD ["python3", "index.py"]

 

편집기를 열어 myflask 디렉토리 아래에 Dockerfile 파일 작성

 

도커 이미지 빌드

 

도커 컨테이너 생성하여 잘 생성되는지 확인

 

컨테이너 레지스트리(저장소)에 push

도커 login하여 push하는 형태가 아니다

docker tag SOURCE_IMAGE HOSTNAME/PROJECT-ID/IMAGE:TAG

docker push HOSTNAME/PROJECT-ID/IMAGE

 

 

 

컨테이너 이미지 빌드  |  Cloud Build 문서  |  Google Cloud

이 페이지에서는 Docker 이미지를 빌드하고 저장하도록 Cloud Build를 구성하는 방법을 설명합니다. Cloud Build를 처음 사용하는 경우 빠른 시작 및 빌드 구성 개요를 먼저 읽어보세요. Cloud Build는 작업

cloud.google.com

 

 

이미지를 가지고 파드 생성

쿠버네티 클러스터, 레지스트리도 모두 구글 서비스이다

쿠버네티스 워커노드(VM인스턴스)가 저장소에 접근 할 수 있는 권한이 이미 설정이 되어 있는 상태이기 때문에  (내부적으로 인증) 별도로 인증 설정할 필요가 없다