[Kubernetes in Google Cloud] Lab2) Kubernetes Engine: Qwik Start

Speedwell🍀·2022년 7월 18일
0
post-thumbnail

실습 링크

Overview

GKE

  • GKE(Google Kubernetes Engine)에서는 Google 인프라를 사용하여 컨테이너식 어플리케이션을 배포/관리/확장할 수 있는 관리형 환경을 제공

  • Kubernetes Engine 환경은 컨테이너 클러스터를 형성하도록 그룹화된 여러 머신(구체적으로 Compute Engine 인스턴스)으로 구성

    cluster: GKE의 기초이며, 컨테이너화된 어플리케이션을 나타내는 Kubernetes 객체가 모두 이 클러스트에서 실행됨
    Compute Engine: 구글 인프라에서 가상 머신을 만들고 실행할 수 있는 맞춤설정 가능한 안전한 컴퓨팅 서비스


In this lab

  • GKE를 사용하여 직접 컨테이너를 생성하고 어플리케이션을 배포해보자!

Cluster Orchestration with GKE

  • GKE 클러스터는 Kubernetes 오픈소스 클러스터 관리 시스템 기반
  • Kubernetes는 컨테이너 클러스터와 상호작용 가능한 메커니즘 제공
  • Kubernetes 명령어와 리소스를 사용하면 어플리케이션을 배포/관리하고, 관리 작업을 수행하고, 정책을 설정하며, 배포된 workloads의 상태를 모니터링 가능

  • Kubernetes는 Google 서비스와 동일한 설계 원칙을 따르고 있어 자동 관리, 어플리케이션 컨테이너의 모니터링/활성 여부 조사, 자동 확장, 순차적 업데이트와 같은 이점 그대로
  • 컨테이너로 production workloads를 처리해온 Google의 기술을 활용해 컨테이너 클러스터에서 어플리케이션을 실행 가능

Kubernetes on Google Cloud





실습 시작 전에 개요에서 설정 및 요구사항까지 완료된 상태여야 한다!


Task 1) Set a default compute zone

compute zone(컴퓨팅 영역)
: 클러스터와 리소스가 존재하는 대략적인 regional 위치

예시) us-central1-aus-central1 region에 속한 영역


컴퓨팅 영역의 기본값을 us-central1-a로 설정해보자!
$ gcloud config set compute/zone us-central1-a


Task 2) Create a GKE cluster

cluster
: 1개 이상의 cluster master machine + nodes라고 불리는 다수의 작업자 머신으로 구성

_Note) 클러스터 이름은 문자로 시작하고 영숫자(alphanumeric)로 끝나야 하며 40자 초과 못함)


클러스터를 생성해보자!

$ gcloud container clusters create [CLUSTER-NAME]


Task 3) Get authentication credentials for the cluster

클러스터를 만든 후 클러스터와 상호작용하려면 사용자 인증 정보(authentication credentials) 필요!


클러스터를 인증해보자!

$ gcloud container clusters get-credentials [CLUSTER-NAME]


Task 4) Deploy an application to the cluster

이제 클러스터에 컨테이너식(containerized) 어플리케이션 배포 가능!

  • GKE는 Kubernetes 객체를 사용하여 클러스터의 리소스 생성/관리
  • 웹 서버와 같은 stateless 어플리케이션을 배포할 때는 Kubernetes에서 배포(Deployment) 객체 사용
  • 서비스 객체는 인터넷에서 어플리케이션에 액세스하기 위한 규칙과 부하 분산 방식 정의

이번 실습에서는 hello-app을 클러스트에서 실행해보자!

  1. hello-app 컨테이너 이미지에서 새 배포 hello-server 생성
    $ kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:1.0
    • kubectl create 명령어를 사용하면 hello-server를 나타내는 배포 객체가 생성됨
    • --image는 배포할 컨테이너 이미지를 지정
      • 해당 명령어는 Container Registry 버킷에서 예시 이미지를 가져옴

        Container Registry: 비공개 컨테이너 이미지를 저장하는 서비스

    • gcr.io/google-samples/hello-app:1.0은 가져올 특정 이미지 버전을 나타냄
      • 버전이 지정되지 않은 경우 최신 버전

  1. Kubernetes Service 생성
    $ kubectl expose deployment hello-server --type=LoadBalancer --port 8080

    • Kubernetes service: 어플리케이션을 외부 트래픽에 노출할 수 있는 Kubernetes 리소스
    • kubectl expose 명령어 사용
      • --port를 통해 컨테이너가 노출될 포트 지정
      • type="LoadBalancer"는 컨테이너의 Compute Engine 부하 분산기(load balancer) 생성

  1. hello-server 서비스 검사
    $ kubectl get service
    • Note) 외부 IP 주소가 생성되는 데 1분 정도 걸릴 수 있다. EXTERNAL-IP 열이 pending(대기중)이면 명령어 재실행 하기!

  1. 웹브라우저에서 어플리케이션 보기
    • 새 탭을 열고 http://[EXTERNAL-IP]:8080 주소 입력

Task 5) Deleting the cluster

$ gcloud container clusters delete [CLUSTER-NAME]

삭제된 GKE 클러스터에 대한 자세한 내용은 문서 참고

0개의 댓글