모듈3 컨테이너 및 앱 개발, 배포, 모니터링
컨테이너 소개
- IaaS : 하드웨어를 가상화 하고, 리소스를 공유
- 하지만 유연성에는 부팅시간(분)과 리소스(GB)가 소요
- App Engine
- 프로그래밍 서비스에 대한 액세스를 제공
- 앱 수요가 늘어날 수록 워크로드 및 인프라에 따라 독립적으로 앱을 신속하게 확장하는 플랫폼
컨테이너에서 제공하는 사항
- IaaS와 PaaS의 확장성을 제공
- 하드웨어 및 OS의 추상화 레이어
- 격리된 파티션으로 나눈 파일 시스템, RAM 네트워킹에 대한 구성 가능한 액세스를 제공하는 보이지 않는 상자
- 빠른 시작
Kubernetes
여러 호스트의 많은 컨테이너를 쉽게 조정한다.
앱을 컨테이너로 빌드해 실행해보기
- Docker : 앱, 종속항목, 시스템 설정을 번들로 묶는다
- Google Cloud Build 등의 다른 도구도 사용이 가능하다. 코드 예시 : hello world를 표시하는 python flask 앱
[app.py]
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "helloworld!"
if __name__ == "__main__":
app.run(host='0.0.0.0');
앱을 Kubernetes로 가져오기 - Docker 파일을 사용해 4가지 지정
- Flask 종속 항목의 requirements.txt 파일
- Python의 OS 이미지 및 버전
- Python 설치 방법
- 앱 실행 방법
FROM ubuntu:18.10
RUN apt-get update -y && \
apt-get install -y python3-pip python3-dev
COPY requirements.txt /app/requirements.txt
WORKDIR /app
RUN pip3 install -r requirements.txt
COPY ./app
ENDPOINT ["python3", "app.py"]
컨테이너를 이미지로 빌드해 실행하기
- docker build로 컨테이너를 빌드하여 로컬에 실행 가능한 이미지로 저장
- 공유를 위해 레지스트리 서비스 (Google Container Registry 등)에 이미지 업로드 기능
- docker run으로 컨테이너 이미지를 시작
$> docker build -t py-server .
$> docker run -d py-server
Kubernetes API를 사용해 컨테이너를 클러스터라고 부르는 노드 모음에 배포하기
- 마스터는 제어영역을 실행
- 노드는 컨테이너를 실행
- 노드는 VM(GKE에서는 GCE인스턴스로 사용됨)
- 사용자가 앱을 설명하면 Kubernetes가 구현방법 파악
Kubernetes Engine 부트 스트랩하기
- GKE 클러스터에서 다음 사항을 지정 가능
- 머신 유형
- 노드수
- 네트워크 설정 등
컨테이너를 노드에 배포할때 Pod라고 부르는 래퍼 사용하기
Kubectl run을 사용해 Pod에서 컨테이너 실행하기
- Kubectl은 Kubernetes API에 대한 명령줄 클라이언트임
- 이 명령어로 Pod에서 실행 중인 컨테이너에 배포를 시작
- 이 경우 컨테이너는 NGINX 서버의 이미지임
배포
사용하는 앱 또는 워크로드의 복제본 Pod 모음을 관리하고 원하는 수의 Pod가 실행되고 정상상태를 유지하도록 한다
기본적으로 클러스터 안에서만 사용되며, 임시 IP를 가져오는 Pod
- 고정 IP에서 공개적으로 사용할 수 있도록 Kubectl expose를 실행하여 부하 분산기를 배포에 연결가능
- Kubernetes에서 Pod의 고정 IP를 사용해 서비스를 만들며 컨트롤러에 'I need to attach an external load balancer with a public IP address'라는 메세지가 표시됨
'Could > GCP' 카테고리의 다른 글
Google cloud onboard 2019_5 (0) | 2019.12.08 |
---|---|
Google cloud onboard 2019_3 (0) | 2019.12.05 |
Google cloud onboard 2019_2 (0) | 2019.11.29 |
Google cloud onboard 2019_1 (0) | 2019.11.27 |