Posts [GSP100] CH4. Kubernetes Engine: Qwik Start
Post
Cancel

[GSP100] CH4. Kubernetes Engine: Qwik Start

[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으로 로깅 및 모니터링

실습

  1. 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 객체는 인터넷에서 애플리케이션에 액세스하기 위한 규칙과 로드 밸런싱을 정의한다.
  1. 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 : 가져올 특정 이미지 버전을 나타낸다. 버전을 지정하지 않으면 최신 버전이 사용된다.
  2. Kubernetes Service를 생성하기 위해 아래 kubectl expose 명령어를 실행한다.
    • Kubernetes Service: 애플리케이션을 외부 트래픽에 노출할 수 있는 Kubernetes 리소스
    • kubectl expose deployment hello-server --type=LoadBalancer --port 8080
      • --port : 컨테이너가 노출하는 포트를 지정한다.
      • type="LoadBalancer" : 컨테이너에 대한 Compute Engine 부하 분산기를 만든다.
  3. hello-server 서비스를 검사하기 위해 kubectl get 명령을 실행
    • kubectl get service
    • external-ip가 penging으로 되어있더라도, 좀 기다리면 ip 뜬다.(1분 정도)
  4. 웹 브라우저에서 응용 프로그램을 보기
    • 브라우저에 http://[EXTERNAL-IP]:8080 입력

Task5. 클러스터 삭제

  • gcloud container clusters delete [CLUSTER-NAME]

쿠버네티스, 클러스터, 컨테이너에 대해 더 알아보기!

This post is licensed under CC BY 4.0 by the author.