- Google Kubernetes Engine(GKE)은 Google 인프라를 사용하여 컨테이너형 애플리케이션을 배포, 관리 및 확장할 수 있는 관리 환경을 제공한다.
- 이번 실습을 통하여 GKE를 통해 컨테이너 생성 및 애플리케이션 배포에 대한 실습 하고자 한다.
Cluster orchestration with Google Kubernetes Engine
Google Kubernetes Engine(GKE) 클러스터는 Kubernetes 오픈 소스 클러스터 관리 시스템을 통해 구동됩니다.
Kubernetes는 컨테이너 클러스터와 상호 작용하는 메커니즘을 제공합니다.
Kubernetes 명령 및 리소스를 사용하여 애플리케이션을 배포 및 관리하고, 관리 작업을 수행하고, 정책을 설정하고, 배포된 워크로드의 상태를 모니터링할 수 있습니다.
*What is Cluster in Google Kubernetes?
- 클러스터는 하나의 Master와 여러 Node들이 연결되서 만들어진다.
- Master는 쿠버네티스의 메인 기능들을 담당하는 역할.
- Node는 실제 App(pod)들이 구동되기 위해 자원을 제공하는 역할.
- Master와 Node는 실제 물리적인 서버.
Kubernetes on Google Cloud
GKE 클러스터를 실행하면 Google Cloud에서 제공하는 고급 클러스터 관리 기능의 이점도 얻을 수 있습니다.
- Load balancing for Compute Engine instances
- Node pools to designate subsets of nodes within a cluster for additional flexibility
- Automatic scaling of your cluster's node instance count
- Automatic upgrades for your cluster's node software
- Node auto-repair to maintain node health and availability
- Logging and Monitoring with Cloud Monitoring for visibility into your cluster
기본적인 터미널 환경 설정은 이전 포스팅과 동일하다.
Task 1. 기본 compute zone 설정하기
compute zone이란 클러스터와 해당 리소스가 상주하는 대락적인 지역 위치이다.
- Default compute region 설정
gcloud config set compute/region assigned_at_lab_start
Updated property [compute/region].
2. Default compute zone 설정
gcloud config set compute/zone assigned_at_lab_start
Updated property [compute/zone].
Task 2. GKE cluster 생성하기
클러스터는 하나 이상의 클러스터 마스터 시스템과 노드라고 하는 여러 작업자 시스템으로 구성됩니다.
노드는 클러스터의 일부로 만드는 데 필요한 Kubernetes 프로세스를 실행하는 VM(컴퓨팅 엔진 가상 시스템) 인스턴스입니다.
*참고: 클러스터 이름은 문자로 시작하여 영숫자로 끝나야 하며 40자를 초과할 수 없습니다.
- cluster 생성하기
gcloud container clusters create --machine-type=e2-medium --zone=assigned_at_lab_start lab-cluster
NAME: lab-cluster
LOCATION: assigned_at_lab_start
MASTER_VERSION: 1.22.8-gke.202
MASTER_IP: 34.67.240.12
MACHINE_TYPE: e2-medium
NODE_VERSION: 1.22.8-gke.202
NUM_NODES: 3
STATUS: RUNNING
Task 3. 클러스터에 대한 인증 자격 증명 가져오기
클러스터를 만든 후 클러스터와 상호 작용하려면 인증 자격 증명이 필요합니다.
- 클러스터 인증:
-
gcloud container clusters get-credentials lab-cluster
Fetching cluster endpoint and auth data.
kubeconfig entry generated for my-cluster.
Task 4. 클러스터에 애플리케이션 배포
이제 컨테이너형 애플리케이션을 클러스터에 배포할 수 있습니다. 이 랩에서는 클러스터에서 hello-app을 실행합니다.
GKE는 Kubernetes 개체를 사용하여 클러스터의 리소스를 생성하고 관리합니다. Kubernetes는 웹 서버와 같은 상태 비저장 응용 프로그램을 배포하기 위한 배포 개체를 제공합니다. 서비스 개체는 인터넷에서 응용 프로그램에 액세스하기 위한 규칙 및 로드 밸런싱을 정의합니다.
hello-app 컨테이너 이미지에서 새 배포 hello-server를 생성:
kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:1.0
deployment.apps/hello-server created
이 Kubernetes 명령은 hello-server를 나타내는 배포 개체를 만듭니다. 이 경우 --image는 배포할 컨테이너 이미지를 지정합니다. 이 명령은 컨테이너 레지스트리 버킷에서 예제 이미지를 가져옵니다. gcr.io/google-samples/hello-app:1.0 은 풀할 특정 이미지 버전을 나타냅니다. 버전을 지정하지 않으면 최신 버전이 사용됩니다.
응용 프로그램을 외부 트래픽에 노출할 수 있는 Kubernetes 리소스인 Kubernetes 서비스를 생성하려면
다음 kubectl exposure 명령을 실행합니다:
kubectl expose deployment hello-server --type=LoadBalancer --port 8080
--port는 컨테이너가 노출하는 포트를 지정합니다.
type="LoadBalancer"는 컨테이너에 대한 컴퓨팅 엔진 로드 밸런서를 생성합니다.
service/hello-server exposed
hello-server 서비스를 검사하려면 kubectl get:
kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-server loadBalancer 10.39.244.36 35.202.234.26 8080:31991/TCP 65s
kubernetes ClusterIP 10.39.240.1 433/TCP 5m13s
웹 브라우저에서 응용 프로그램을 보려면 새 탭을 열고 다음 주소를 입력하여
[EXTERNAL IP]를 Hello-server용 EXTERNAL-IP로 바꿉니다.
http://[EXTERNAL-IP]:8080
Task 5. Cluster 삭제하기
gcloud container clusters delete lab-cluster
이후 Y를 입력하여 삭제를 진행한다.
'클라우드 > Kubernetes in Google' 카테고리의 다른 글
쿠버네티스 2주차) Lab#2 : Orchestrating the Cloud with Kubernetes (0) | 2023.04.29 |
---|---|
쿠버네티스 1주차) Lab#1 : Introduction to Docker (0) | 2023.04.18 |