GKE(Google Kubernetes Engine)에서는 Google 인프라를 사용하여 컨테이너식 어플리케이션을 배포/관리/확장할 수 있는 관리형 환경을 제공
Kubernetes Engine 환경은 컨테이너 클러스터를 형성하도록 그룹화된 여러 머신(구체적으로 Compute Engine 인스턴스)으로 구성
cluster
: GKE의 기초이며, 컨테이너화된 어플리케이션을 나타내는 Kubernetes 객체가 모두 이 클러스트에서 실행됨
Compute Engine
: 구글 인프라에서 가상 머신을 만들고 실행할 수 있는 맞춤설정 가능한 안전한 컴퓨팅 서비스
GKE 클러스터를 실행하면 Google Cloud의 고급 클러스터 관리 features을 활용할 수 있다는 장점
예시
실습 시작 전에 개요에서 설정 및 요구사항
까지 완료된 상태여야 한다!
compute zone(컴퓨팅 영역)
: 클러스터와 리소스가 존재하는 대략적인 regional 위치
예시) us-central1-a
는 us-central1
region에 속한 영역
컴퓨팅 영역의 기본값을 us-central1-a
로 설정해보자!
$ gcloud config set compute/zone us-central1-a
cluster
: 1개 이상의 cluster master
machine + nodes
라고 불리는 다수의 작업자 머신으로 구성
노드
: 클러스터를 구성하기 위해 필요한 Kubernetes 프로세스를 실행하는 Computer Engine VM instances_Note) 클러스터 이름은 문자로 시작하고 영숫자(alphanumeric)로 끝나야 하며 40자 초과 못함)
$ gcloud container clusters create [CLUSTER-NAME]
클러스터를 만든 후 클러스터와 상호작용하려면 사용자 인증 정보(authentication credentials) 필요!
$ gcloud container clusters get-credentials [CLUSTER-NAME]
이제 클러스터에 컨테이너식(containerized) 어플리케이션 배포 가능!
이번 실습에서는 hello-app
을 클러스트에서 실행해보자!
hello-app
컨테이너 이미지에서 새 배포 hello-server
생성$ kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:1.0
hello-server
를 나타내는 배포 객체가 생성됨--image
는 배포할 컨테이너 이미지를 지정Container Registry: 비공개 컨테이너 이미지를 저장하는 서비스
gcr.io/google-samples/hello-app:1.0
은 가져올 특정 이미지 버전을 나타냄Kubernetes Service 생성
$ kubectl expose deployment hello-server --type=LoadBalancer --port 8080
--port
를 통해 컨테이너가 노출될 포트 지정type="LoadBalancer"
는 컨테이너의 Compute Engine 부하 분산기(load balancer) 생성hello-server
서비스 검사$ kubectl get service
EXTERNAL-IP
열이 pending(대기중)이면 명령어 재실행 하기!http://[EXTERNAL-IP]:8080
주소 입력$ gcloud container clusters delete [CLUSTER-NAME]
삭제된 GKE 클러스터에 대한 자세한 내용은 문서 참고