arrow_back

Google Kubernetes Engine에서 작업 배포

로그인 가입
700개 이상의 실습 및 과정 이용하기

Google Kubernetes Engine에서 작업 배포

실습 1시간 universal_currency_alt 크레딧 5개 show_chart 입문
info 이 실습에는 학습을 지원하는 AI 도구가 통합되어 있을 수 있습니다.
700개 이상의 실습 및 과정 이용하기

개요

이 실습에서는 작업과 CronJob을 정의하고 실행합니다.

GKE에서 작업은 유한한 태스크를 나타내는 컨트롤러 객체입니다. 작업은 진행 중인 원하는 상태(예: 실행 중인 전체 포드 수 유지)를 관리하는 것이 아니라 완료될 때까지 실행되는 태스크를 관리합니다.

CronJob은 태스크를 완료하기 위해 작업 객체를 사용하여 지정한 시간에 한 번 또는 반복적으로 실행되는 유한한 시간 관련 태스크를 실행합니다.

목표

이 실습에서는 다음 태스크의 실행 방법을 알아봅니다.

  • GKE의 작업 정의, 배포, 정리

  • GKE의 CronJob 정의, 배포, 정리

태스크 0. 실습 설정

Qwiklabs에 액세스

각 실습에서는 정해진 기간 동안 새 Google Cloud 프로젝트와 리소스 집합이 무료로 제공됩니다.

  1. 시크릿 창을 사용하여 Qwiklabs에 로그인합니다.

  2. 실습 사용 가능 시간(예: 1:15:00)을 참고하여 해당 시간 내에 완료합니다.
    일시중지 기능은 없습니다. 필요한 경우 다시 시작할 수 있지만 처음부터 시작해야 합니다.

  3. 준비가 되면 실습 시작을 클릭합니다.

  4. 실습 사용자 인증 정보(사용자 이름비밀번호)를 기록해 두세요. Google Cloud Console에 로그인합니다.

  5. Google Console 열기를 클릭합니다.

  6. 다른 계정 사용을 클릭한 다음, 안내 메시지에 실습에 대한 사용자 인증 정보를 복사하여 붙여넣습니다.
    다른 사용자 인증 정보를 사용하는 경우 오류가 발생하거나 요금이 부과됩니다.

  7. 약관에 동의하고 리소스 복구 페이지를 건너뜁니다.

초기 로그인 단계를 완료하면 프로젝트 대시보드가 표시됩니다.

Google Cloud Shell 활성화하기

Google Cloud Shell은 다양한 개발 도구가 탑재된 가상 머신으로, 5GB의 영구 홈 디렉터리를 제공하며 Google Cloud에서 실행됩니다.

Google Cloud Shell을 사용하면 명령줄을 통해 Google Cloud 리소스에 액세스할 수 있습니다.

  1. Cloud 콘솔의 오른쪽 상단 툴바에서 'Cloud Shell 열기' 버튼을 클릭합니다.

    강조 표시된 Cloud Shell 아이콘

  2. 계속을 클릭합니다.

환경을 프로비저닝하고 연결하는 데 몇 분 정도 소요됩니다. 연결되면 사용자가 미리 인증되어 프로젝트가 PROJECT_ID로 설정됩니다. 예:

Cloud Shell 터미널에 강조 표시된 프로젝트 ID

gcloud는 Google Cloud의 명령줄 도구입니다. Cloud Shell에 사전 설치되어 있으며 명령줄 자동 완성을 지원합니다.

  • 다음 명령어를 사용하여 사용 중인 계정 이름을 나열할 수 있습니다.
gcloud auth list

출력:

Credentialed accounts: - @.com (active)

출력 예시:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • 다음 명령어를 사용하여 프로젝트 ID를 나열할 수 있습니다.
gcloud config list project

출력:

[core] project =

출력 예시:

[core] project = qwiklabs-gcp-44776a13dea667a6 참고: gcloud 전체 문서는 gcloud CLI 개요 가이드를 참조하세요.

태스크 1. 작업 매니페스트 정의 및 배포

GKE에서 작업은 유한한 태스크를 나타내는 컨트롤러 객체입니다.

이 태스크에서는 작업을 만들고 작업 상태를 검사한 다음 작업을 삭제합니다.

실습용 Google Kubernetes Engine 클러스터에 연결

  1. Cloud Shell에서 다음 명령어를 입력하여 영역 및 클러스터 이름의 환경 변수를 설정합니다.

export my_zone=us-central1-a export my_cluster=standard-cluster-1
  1. Cloud Shell에서 kubectl 탭 완료를 구성합니다.

source <(kubectl completion bash)
  1. Cloud Shell에서 다음 명령어를 사용하여 kubectl 명령줄 도구의 클러스터 액세스를 구성합니다.

gcloud container clusters get-credentials $my_cluster --zone $my_zone
  1. Cloud Shell에서 다음 명령어를 입력하여 실습 Cloud Shell에 저장소를 클론합니다.

git clone https://github.com/GoogleCloudPlatform/training-data-analyst
  1. 작업 디렉터리로 연결되는 바로가기, 즉 소프트 링크를 생성합니다.

ln -s ~/training-data-analyst/courses/ak8s/v1.1 ~/ak8s
  1. 이 실습의 샘플 파일이 포함된 디렉터리로 이동합니다.

cd ~/ak8s/Jobs_CronJobs

작업 생성 및 실행

제공된 example-job.yaml이라는 샘플 배포 매니페스트를 사용하여 작업을 생성합니다. 이 작업은 파이 값을 2,000자리까지 계산한 다음 결과를 출력합니다.

apiVersion: batch/v1 kind: Job metadata: # Unique key of the Job instance name: example-job spec: template: metadata: name: example-job spec: containers: - name: pi image: perl command: ["perl"] args: ["-Mbignum=bpi", "-wle", "print bpi(2000)"] # Do not restart containers after they exit restartPolicy: Never
  1. 이 파일에서 작업을 만들려면 다음 명령어를 실행합니다.

kubectl apply -f example-job.yaml

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. 작업 생성 및 실행

  1. 작업 상태를 확인하려면 다음 명령어를 실행합니다.

kubectl describe job example-job

실행 중인 작업 수, 성공적으로 완료된 작업 수, 실패한 작업 수를 나타내는 포드 상태를 비롯하여 작업의 세부정보를 확인할 수 있습니다.

... Start Time: Thu, 20 Dec 2018 14:34:09 +0000 Pods Statuses: 0 Running / 1 Succeeded / 0 Failed ...
  1. 완료된 작업에서 생성한 포드를 비롯해 클러스터의 모든 포드 리소스를 보려면 다음 명령어를 실행합니다.

kubectl get pods

포드 이름은 출력 예와 다를 수 있습니다. 포드 이름 중 하나를 기록해 둡니다.

NAME READY STATUS RESTARTS AGE example-job-sqljc 0/1 Completed 0 1m

작업 정리 및 삭제

작업이 완료되면 해당 작업은 포드 생성을 중지합니다. 작업이 완료될 때 Job API 객체가 삭제되지 않으므로 상태를 볼 수 있습니다. 작업이 생성한 포드는 삭제되지 않지만, 종료됩니다. 포드를 보관하면 로그를 보고 상호작용할 수 있습니다.

  1. 클러스터의 작업 목록을 가져오려면 다음 명령어를 실행합니다.

kubectl get jobs

출력은 다음 예와 같이 표시됩니다.

NAME COMPLETIONS DURATION AGE example-job 1/1 75s 2m5s
  1. 작업을 실행했던 포드에서 로그 파일을 가져오려면 다음 명령어를 실행합니다. [POD-NAME]을 앞선 태스크에서 기록해 둔 노드 이름으로 교체해야 합니다.

kubectl logs [POD-NAME]

작업이 포드 로그에 기록한 파이의 첫 번째 2,000 자릿수가 출력에 표시됩니다.

  1. 작업을 삭제하려면 다음 명령어를 실행합니다.

kubectl delete job example-job

로그를 다시 쿼리하려고 하면 포드를 더 이상 찾을 수 없으므로 명령어가 실패합니다.

태스크 2. CronJob 매니페스트 정의 및 배포

CronJob을 만들어 지정한 시간에 한 번 또는 반복적으로 유한한 시간 관련 태스크를 실행할 수 있습니다.

이 태스크에서는 CronJob을 생성 및 실행한 다음, 작업을 정리하고 삭제합니다.

CronJob 생성 및 실행

CronJob 매니페스트 파일 example-cronjob.yaml은 이미 제공되어 있습니다. 이 CronJob은 1분마다 시간, 날짜, 'Hello, World!'를 출력하는 새 컨테이너를 배포합니다.

apiVersion: batch/v1beta1 kind: CronJob metadata: name: hello spec: schedule: "*/1 * * * *" jobTemplate: spec: template: spec: containers: - name: hello image: busybox args: - /bin/sh - -c - date; echo "Hello, World!" restartPolicy: OnFailure
  1. 이 파일에서 작업을 만들려면 다음 명령어를 실행합니다.

kubectl apply -f example-cronjob.yaml

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. CronJob 생성 및 실행

  1. 클러스터의 작업 목록을 가져오려면 다음 명령어를 실행합니다.

kubectl get jobs

출력은 다음 예와 같이 표시됩니다.

NAME COMPLETIONS DURATION AGE hello-1545013620 1/1 2s 18s
  1. 작업 상태를 확인하려면 다음 명령어를 실행합니다. 여기서 [job_name]은 작업 이름입니다.

kubectl describe job [job_name]

작업의 한 인스턴스가 실행되었음을 보여주는 포드 상태를 비롯하여 작업의 세부정보를 확인할 수 있습니다.

... Start Time: Thu, 20 Dec 2018 15:24:03 +0000 Pods Statuses: 0 Running / 1 Succeeded / 0 Failed ... ...Created pod: hello-1545319920-twkhl
  1. 이 작업에서 사용한 포드 이름을 기록해 둡니다.

  2. 포드의 로그를 쿼리하여 작업의 출력을 확인합니다. [POD-NAME]을 앞선 단계에서 기록해 둔 포드 이름으로 교체합니다.

kubectl logs [POD-NAME]

그러면 CronJob에 구성한 셸 스크립트의 출력이 표시됩니다.

Fri Jan 28 11:12:01 UTC 2022 Hello, World!
  1. 완료된 CronJob에서 생성된 모든 포드를 비롯해 클러스터의 모든 작업 리소스를 보려면 다음 명령어를 실행합니다.

kubectl get jobs

작업 이름은 출력 예와 다를 수 있습니다. 기본적으로 Kubernetes는 성공 및 실패한 최근 작업 세 개만 유지하도록 작업 기록 제한을 설정하므로 이 목록에는 네 개의 작업 중 최근 세 개만 포함됩니다.

NAME COMPLETIONS DURATION AGE hello-27389472 1/1 1s 2m55s hello-27389473 1/1 1s 115s hello-27389474 1/1 1s 55s

작업 정리 및 삭제

CronJob을 중지하고 이와 관련된 작업을 정리하려면 CronJob을 삭제해야 합니다.

  1. 이러한 작업을 모두 삭제하려면 다음 명령어를 실행합니다.

kubectl delete cronjob hello
  1. 작업이 삭제되었는지 확인하려면 다음 명령어를 실행합니다.

kubectl get jobs

출력은 다음 예와 같이 표시됩니다.

No resources found in default namespace.

모든 작업이 삭제되었습니다.

실습 종료하기

실습을 완료하면 실습 종료를 클릭합니다. Google Cloud Skills Boost에서 사용된 리소스를 자동으로 삭제하고 계정을 지웁니다.

실습 경험을 평가할 수 있습니다. 해당하는 별표 수를 선택하고 의견을 입력한 후 제출을 클릭합니다.

별점의 의미는 다음과 같습니다.

  • 별표 1개 = 매우 불만족
  • 별표 2개 = 불만족
  • 별표 3개 = 중간
  • 별표 4개 = 만족
  • 별표 5개 = 매우 만족

의견을 제공하고 싶지 않다면 대화상자를 닫으면 됩니다.

의견이나 제안 또는 수정할 사항이 있다면 지원 탭을 사용하세요.

Copyright 2020 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.

시작하기 전에

  1. 실습에서는 정해진 기간 동안 Google Cloud 프로젝트와 리소스를 만듭니다.
  2. 실습에는 시간 제한이 있으며 일시중지 기능이 없습니다. 실습을 종료하면 처음부터 다시 시작해야 합니다.
  3. 화면 왼쪽 상단에서 실습 시작을 클릭하여 시작합니다.

시크릿 브라우징 사용

  1. 실습에 입력한 사용자 이름비밀번호를 복사합니다.
  2. 비공개 모드에서 콘솔 열기를 클릭합니다.

콘솔에 로그인

    실습 사용자 인증 정보를 사용하여
  1. 로그인합니다. 다른 사용자 인증 정보를 사용하면 오류가 발생하거나 요금이 부과될 수 있습니다.
  2. 약관에 동의하고 리소스 복구 페이지를 건너뜁니다.
  3. 실습을 완료했거나 다시 시작하려고 하는 경우가 아니면 실습 종료를 클릭하지 마세요. 이 버튼을 클릭하면 작업 내용이 지워지고 프로젝트가 삭제됩니다.

현재 이 콘텐츠를 이용할 수 없습니다

이용할 수 있게 되면 이메일로 알려드리겠습니다.

감사합니다

이용할 수 있게 되면 이메일로 알려드리겠습니다.

한 번에 실습 1개만 가능

모든 기존 실습을 종료하고 이 실습을 시작할지 확인하세요.

시크릿 브라우징을 사용하여 실습 실행하기

이 실습을 실행하려면 시크릿 모드 또는 시크릿 브라우저 창을 사용하세요. 개인 계정과 학생 계정 간의 충돌로 개인 계정에 추가 요금이 발생하는 일을 방지해 줍니다.