선점형 VM 실행

이 페이지에서는 Google Kubernetes Engine의 선점형 VM 지원을 간단히 설명합니다.

개요

선점형 VM은 최대 24시간 동안 지속되고 가용성을 보장하지 않는 Google Compute Engine VM 인스턴스입니다. 선점형 VM은 표준 Compute Engine VM보다 가격이 저렴하며 동일한 머신 유형과 옵션을 제공합니다.

GKE 클러스터 또는 노드 풀에서 선점형 VM을 사용하여 선점형 VM의 임시성과 비보장성에 덜 민감한 일괄 작업이나 내결함성 작업을 실행할 수 있습니다.

선점형 VM에 대한 자세한 내용은 Compute Engine 문서의 선점형 VM을 참조하세요.

선점형 VM의 작동 방식

GKE 클러스터나 노드 풀이 생성하는 Compute Engine VM은 관리형 인스턴스 그룹처럼 동작합니다. GKE의 선점형 VM은 관리형 인스턴스 그룹의 선점형 인스턴스와 동일한 제한을 받습니다. 선점형 인스턴스는 선점 알림을 수신하고 나서 30초 후에 종료됩니다.

또한 이러한 선점형 VM에 Kubernetes 라벨 cloud.google.com/gke-preemptible=true가 제공됩니다. 포드를 특정 노드에 예약하기 위해 Kubernetes 라벨을 nodeSelector 필드에서 사용할 수 있습니다.

다음은 선점형 VM을 필터링하기 위한 선택기의 예입니다.

apiVersion: v1
kind: Pod
spec:
  nodeSelector:
    cloud.google.com/gke-preemptible: "true"

권장사항

선점형 VM은 가용성을 보장하지 않기 때문에 Compute Engine 인스턴스의 일부 또는 전부가 선점되어 사용할 수 없게 될 수도 있다는 가정하에 시스템을 설계해야 합니다. 새 인스턴스를 사용할 수 있는 시점도 보장하지 않습니다.

또한 선점형 VM에서 실행 중인 포드가 항상 정상적으로 종료된다고 보장할 수도 없습니다.

사용 가능한 선점형 VM이 없어도 작업 또는 작업 부하가 처리되도록 하려면 클러스터에 비선점형 노드 풀과 선점형 노드 풀을 모두 만들면 됩니다.

선점형 VM이 있는 클러스터 또는 노드 풀 만들기

gcloud 명령줄 도구 또는 GCP Console을 사용하여 선점형 VM이 있는 클러스터나 노드 풀을 만들 수 있습니다.

gcloud

--preemptible 플래그를 지정하여 선점형 VM이 있는 클러스터 또는 노드 풀을 만들 수 있습니다.

선점형 VM이 있는 클러스터를 만들려면 다음 명령어를 실행하세요.

gcloud beta container clusters create [CLUSTER_NAME] --preemptible

여기서 [COMPUTE_ZONE]은 클러스터의 컴퓨팅 영역입니다.

선점형 VM이 있는 노드 풀을 만들려면 다음을 실행합니다.

gcloud beta container node-pools create [POOL_NAME] --preemptible \
--cluster [CLUSTER_NAME]

Console

  1. GCP Console에서 Google Kubernetes Engine 메뉴로 이동합니다.

    Google Kubernetes Engine 메뉴로 이동

  2. 클러스터 만들기를 클릭합니다.

  3. 표준 클러스터 템플릿을 선택하거나 작업 부하에 적합한 템플릿을 선택합니다.

  4. 원하는 대로 클러스터를 구성합니다. 그런 다음 구성할 노드 풀의 고급 수정을 클릭합니다.

  5. 선점형 노드 섹션에서 선점형 노드 사용을 선택합니다.

  6. 저장을 클릭하여 노드 풀 수정 오버레이를 닫습니다.

  7. 만들기를 클릭합니다.

노드 taint를 사용하여 선점형 VM 노드에 예약되지 않도록 하기

사용 사례에 따라 중요한 포드가 선점형 VM 노드에 예약되는 것을 방지해야 하는 경우가 있습니다. 이러한 경우, 노드 taint와 내결함성을 사용하여 선점형 VM이 있는 노드에 포드가 예약되는 것을 방지할 수 있습니다.

선점형 VM의 노드 tainting

선점형 VM이 있는 노드에 노드 taint를 추가하려면 다음 명령어를 실행합니다.

kubectl taint nodes [NODE_NAME] cloud.google.com/gke-preemptible="true":NoSchedule

이제 노드 taint에 대한 내성이 있는 포드만 해당 노드에 예약됩니다.

포드에 내결함성 추가

포드에 관련 내결함성을 추가하려면 포드의 사양 또는 객체의 포드 템플릿 사양에 다음을 추가하세요.

tolerations:
- key: cloud.google.com/gke-preemptible
  operator: Equal
  value: "true"
  effect: NoSchedule

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Kubernetes Engine