Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[GCP:VM] VM Not Found Error Due to ZONE_RESOURCE_POOL_EXHAUSTED #1186

Closed
powerkimhub opened this issue May 3, 2024 · 5 comments
Closed

[GCP:VM] VM Not Found Error Due to ZONE_RESOURCE_POOL_EXHAUSTED #1186

powerkimhub opened this issue May 3, 2024 · 5 comments
Assignees
Labels
bug Something isn't working CloudDriver

Comments

@powerkimhub
Copy link
Member

powerkimhub commented May 3, 2024

cc: @seokho-son @yunkon-kim


  • 드물게, VM이 생성되지 않는 오류가 발생하고 있습니다. (표면상: VM not found 에러 반복)

[VM 생성시 현황]

  • VM 생성시 생성 요청은 성공적으로 반환을 받습니다.
  • 그런데, 다음 위치의 WaitForRun() 내부에서 VM 상태를 얻는데 없는 VM이라고 나옵니다.
    • vmStatus, _ := vmHandler.WaitForRun(irs.IID{NameId: vmName, SystemId: vmName})
    • 관련 에러 메시지
      [CB-SPIDER].[ERROR]: 2024-05-03 16:31:42 VMHandler.go:875, github.com/cloud-barista/cb-spider/cloud-control-manager/cloud-driver/drivers/gcp/resources.(*GCPVMHandler).GetVMStatus() - googleapi: Error 404: The resource 'projects/powerkimhub/zones/us-central1-a/instances/deeplearning-vm-test-coq941jp70ipgggvd61g' was not found, notFound
      

[분석]

  • VM 생성 요청 시점에 GCP Console로 VM 목록을 refresh 해보면,
  • 대상 VM이 잠시 나타났다가 사라집니다.
  • GCP Console 로그 탐색기로 오류 트레이싱을 해보면, 다음과 같이
    • ZONE_RESOURCE_POOL_EXHAUSTED 오류가 발생했었음을 알수 있습니다.
    • image

[제안]

  • 현재 Spider 사용자는 이유를 알수 없이 VM 생성이 안되는 현상에 빠지게 됩니다.
  • 혹시, 드라이버 차원에서 이와 같은 상황을 인지 할수 있고,
  • 사용자에게 상황(ZONE_RESOURCE_POOL_EXHAUSTED)에 맞는 정확한 에러 메시지를 제공할 수 있는 지 등 확인 부탁 드립니다.
@seokho-son
Copy link
Member

참고로, GPU (특히 비싼) 가 포함된 VM을 생성하는 경우,
특정 존에서 가용 GPU가 부족해서,
지속적으로 pending되거나 사용자가 중단시키도록 요청하는 상황이 발생했었습니다. (GCP 콘솔에서 수행)

@powerkimhub
Copy link
Member Author

참고로, GPU (특히 비싼) 가 포함된 VM을 생성하는 경우, 특정 존에서 가용 GPU가 부족해서, 지속적으로 pending되거나 사용자가 중단시키도록 요청하는 상황이 발생했었습니다. (GCP 콘솔에서 수행)

@hippo-an
Copy link
Contributor

안녕하세요. @powerkimhub

동일한 에러 재현을 위해 테스트한 스펙입니다.


  • GCP Cloud logging 을 통해서 comput.instance.insert operation 확인 결과
  • 요청 발생 로그 시간과 실제 에러가 발생하는 시간의 차이가 있다는 점을 확인하였습니다.

image

  • 이는 구글에서 해당 리소스로 프로비저닝을 진행하는 중 발생하는 에러일 것이며
  • 해당 메시지는 instance insert api 요청이 발생하는 시점의 응답 정보 만으로는 확인이 불가능합니다.
  // ...
  op, err := vmHandler.Client.Instances.Insert(projectID, zone, instance).Do()
  // ...
  fmt.Println(op.HTTPStatusCode)  // always 0
  fmt.Println(op.Error)  // always nil
  fmt.Println(op.Status)  // always "RUNNING"

  • 다만 최초 instance insert 요청시 반환되는 operation 내 정보를 이용해 operation api 를 추가적으로 호출 가능합니다.

  • 해당 api 를 적절한 방식으로 호출하고, 반환하는 값을 활용해서 operation이 완료된 후 상태와 QUOTA_EXCEEDED, ZONE_RESOURCE_POOL_EXHAUSTED 등 에러 메시지 확인이 가능해 보입니다.


  • Wait() 메서드가 기다리는 목적을 명확히 할 수 있지만 fetch 상태에 중 로그를 남기는 등의 액션을 위해선 별도의 고루틴이 있어야 하기 때문에
  • Get() 메서드의 반복 호출 및 적절한 로그 처리로 해당 operation 에 대한 응답을 기다리는 방법이 좋을 것 같습니다.
  • 구글 내부적으로 operation 의 DONE 상태 처리까지 얼마나 걸릴지 모르지만
  • 테스트 해본 결과 성공과 실패 여부와 상관없이 DONE 처리는 완료되며, RUNNING 에서 DONE 까지 짧게는 수초에서 길게는 1분 정도까지 대기하게 됩니다.

@hippo-an
Copy link
Contributor

hippo-an commented Jun 18, 2024

#1125 의 3번 처리 부분이 본 이슈와 관련 있습니다.

(3) 쿼터 또는 자원 부족시 발생할 수 있는 Error Notification 타입 무인식
현재, GCP SDK API가 반환하는 에러로는 에러 발생 상황을 인지하지 못하여,
VM 생성이 완료되기를 반복 호출하다가 timeout 에러 처리됨
=> Operations 실행(VM 생성 호출) 상태를 polling 하도록 반영함

@powerkimhub
Copy link
Member Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working CloudDriver
Projects
None yet
Development

No branches or pull requests

5 participants