我部署時 app.yaml 未更新(Google App Engine/Google Cloud Platform)

我部署時 app.yaml 未更新(Google App Engine/Google Cloud Platform)

這是我的預設 app.yaml 檔案:

runtime: custom
env: flex
service: api

runtime_config:
   jdk: openjdk8

handlers:
- url: /.*
  script: this field is required, but ignored

automatic_scaling:
  min_num_instances: 1
  max_num_instances: 10

當我使用更新的 app.yaml 檔案進行部署時,該檔案只是重置為上一個預設檔案。這就是我嘗試的:

runtime: custom
env: flex
service: api

runtime_config:
   jdk: openjdk8

handlers:
- url: /.*
  script: this field is required, but ignored

automatic_scaling:
  max_num_instances: 1

resources:
  core: 1

更新如下:

好的,我現在就可以使用上面的這個了。 api 服務似乎有兩個 app.yaml 文件,我必須更改這兩個文件。現在,GCP Web 介面上有一個配置,看起來像我部署的配置:最小值 1 和最大值 3。但是,即使如此,它有時也會創建 4-5 個實例。:S

現在,對於我的另一個應用程式調度程序,這就是我在 app.yaml 檔案中放入的內容:

runtime: java8
service: 'scheduler'
inbound_services:
- warmup
derived_file_type:
- java_precompiled
threadsafe: True
auto_id_policy: default
api_version: '1.0'
handlers:
- url: (/.*)
  static_files: __static__\1
  upload: __NOT_USED__
  require_matching_file: True
  login: optional
  secure: optional
- url: /
  script: unused
  login: optional
  secure: optional
- url: /.*/
  script: unused
  login: optional
  secure: optional
- url: /_ah/.*
  script: unused
  login: optional
  secure: optional
- url: /cron/v1/simulations
  script: unused
  login: optional
  secure: optional
resources:
  cpu: 1
  memory_gb: 1
  disk_size_gb: 1
  volumes:
  - name: ramdisk1
    volume_type: tmpfs
    size_gb: 0.5
automatic_scaling:
  min_num_instances: 1
  max_num_instances: 2
  cool_down_period_sec: 180
  cpu_utilization:
    target_utilization: 0.6

部署後,在 GCP 上其配置如下所示:

runtime: java8
api_version: '1.0'
env: standard
threadsafe: true
instance_class: F1
inbound_services:
  - warmup
handlers:
  - url: '(/.*)'
    application_readable: false
    static_files: "__static__\\1"
    require_matching_file: true
    upload: __NOT_USED__
  - url: /
    script: unused
  - url: '/.*/'
    script: unused
  - url: '/_ah/.*'
    script: unused
  - url: /cron/v1/simulations
    script: unused
automatic_scaling:
  min_idle_instances: automatic
  max_idle_instances: automatic
  min_pending_latency: automatic
  max_pending_latency: automatic

這是結果的螢幕截圖:

在此輸入影像描述

很混亂。

答案1

有一些選項混合了兩個不同運行時的配置。

每個選項的runtime: custom描述見這裡handlers:沒有runtime_config:提及自訂運行時,因為它們是 Java 運行時的一部分這裡

core: 1在前面提到的任何配置中都不存在,我懷疑您想使用cpu: 1它,它可以在兩種配置中使用。另外,當嘗試部署第二個時app.yaml,我收到一條錯誤,指出該配置core:不存在,因此不應先部署您的配置。

更新:

在描述的文章中實例管理並提到

您只需為空閒實例付費,最多可達您為每項服務設定的最大空閒實例數。

這意味著在某些時候您的空閒實例數可能超過您設定的最大值,但它們不會被計費。該圖像上的圖形支持了這一說法。

相關內容