[CH4] Kubernetes Engine: Qwik Start
- Google Kubernetes Engine(GKE)은 Google 인프라를 사용하여 컨테이너화된 애플리케이션을 배포, 관리 및 확장할 수 있는 관리형 환경을 제공한다.
- 설명
- GKE는 컨테이너 클러스터를 형성하기 위해 그룹화된 여러 머신(Google Compute Engine 인스턴스)로 구성된다.
- GKE를 사용하여
컨테이너 생성
및컨테이너화 된 애플리케이션 배포
를 실습한다. - GKE 클러스터는
Kubernetes 오픈 소스 클러스터 관리 시스템
을 기반으로 한다. - Kubernetes는 컨테이너 클러스터와 상호 작용하는 메커니즘을 제공한다.
- Kubernetes 명령 및 리소스를 사용하여 애플리케이션을 배포 및 관리하고, 관리 작업을 수행하고, 정책을 설정하고, 배포된 워크로드의 상태를 모니터링한다.
- Google Cloud의 Kubernetes를 사용하면 좋은 점
- (GKE 클러스터를 실행하면 GCP가 제공하는 고급 클러스터 관리 기능의 이점을 얻을 수 있음)
- Compute Engine 인스턴스의 부하 분산
- 추가 유연성을 위해 클러스터 내에서 노드의 하위 집합을 지정하는 노드 풀
- 클러스터의 노드 인스턴스 수 자동 조정
- 클러스터의 노드 소프트웨어에 대한 자동 업그레이드
- 노드 상태 및 가용성을 유지하기 위한 노드 자동 복구
- 클러스터에 대한 가시성을 위한 Cloud Monitoring으로 로깅 및 모니터링
실습
- Cloud Shell 활성화
1
2
3
> gcloud config set project [Project ID]
> gcloud auth list
> gcloud config list project
Task1. 기본 컴퓨팅 zone 설정
- 클러스터와 그 리소스의 물리적인 위치를 지정
gcloud config set compute/zone us-central1-a
Task2. GKE 클러스터 만들기
- 클러스터는 최소 하나 이상의 cluster master machine과 여러 worker machine(node라고 부름)으로 이루어져있다.
- 노드는 Compute Engine VM 인스턴스이다.
- 노드는 쿠버네티스 프로세스를 실행한다.
- 쿠버네티스 프로세스는 노드를 클러스터의 일부로 만드는 데 필요하다.
gcloud container clusters create [CLUSTER-NAME]
Task3. 클러스터에 대한 인증 자격 증명 가져오기
- 인증 자격 증명(= Authentication credentials)
- 클러스터를 만든 후 클러스터와 상호 작용하려면 인증 자격 증명이 필요하다.
gcloud container clusters get-credentials [CLUSTER-NAME]
Task4. 클러스터에 애플리케이션 배포
- 이제 컨테이너화 된 애플리케이션을 클러스터에 배포할 수 있다.
- GKE는 Kubernetes 객체를 사용하여 클러스터의 리소스를 만들고 관리한다.
- Kubernetes는 웹 서버와 같은 stateless applications을 배포하기 위한 Deployment 개체를 제공한다.
- Service 객체는 인터넷에서 애플리케이션에 액세스하기 위한 규칙과 로드 밸런싱을 정의한다.
hello-app
컨테이너 이미지에서 새 배포hello-server
를 만들려면 다음 kubectl create 명령을 실행한다.kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:1.0
- 시간이 좀 걸린다.
- 의미: hello-app 클러스터에서 실행
- 이 Kubernetes 명령은
hello-server
를 나타내는 Deployment 개체를 만든다. --image
: 배포할 컨테이너 이미지를 지정한다. 위의 예제는 Container Registry 버킷에서 예시 이미지를 가져온다.gcr.io/google-samples/hello-app:1.0
: 가져올 특정 이미지 버전을 나타낸다. 버전을 지정하지 않으면 최신 버전이 사용된다.
- Kubernetes Service를 생성하기 위해 아래
kubectl expose
명령어를 실행한다.- Kubernetes Service: 애플리케이션을 외부 트래픽에 노출할 수 있는 Kubernetes 리소스
kubectl expose deployment hello-server --type=LoadBalancer --port 8080
--port
: 컨테이너가 노출하는 포트를 지정한다.type="LoadBalancer"
: 컨테이너에 대한 Compute Engine 부하 분산기를 만든다.
hello-server
서비스를 검사하기 위해kubectl get
명령을 실행kubectl get service
- external-ip가 penging으로 되어있더라도, 좀 기다리면 ip 뜬다.(1분 정도)
- 웹 브라우저에서 응용 프로그램을 보기
- 브라우저에
http://[EXTERNAL-IP]:8080
입력
- 브라우저에
Task5. 클러스터 삭제
gcloud container clusters delete [CLUSTER-NAME]
쿠버네티스, 클러스터, 컨테이너에 대해 더 알아보기!