我已经通过ansible脚本在GCP中部署集群已有一年多了,但突然之间我的一个脚本不断给我这个错误:
libcloud.common.google.GoogleBaseError:u \“区域'projects / [project] / zones / europe-west1-d'没有足够的资源来满足请求 . 请尝试使用其他区域,或稍后重试 .
显而易见的原因是我没有足够的资源,但并没有很多变化,配额看起来很好:
ansible脚本本身并没有要求很多 . 我正在使用100GB SSD创建3个n1-standard-4实例 . 请参阅下面的脚本片段:
tasks:
- name: create boot disks
gce_pd:
disk_type: pd-ssd
image: "debian-9-stretch-v20171025"
name: "{{ item.node }}-disk"
size_gb: 100
state: present
zone: "europe-west1-d"
service_account_email: "{{ service_account_email }}"
credentials_file: "{{ credentials_file }}"
project_id: "{{ project_id }}"
with_items: "{{nodes}}"
async: 3600
poll: 2
- name: create instances
gce:
instance_names: "{{item.node}}"
zone: "europe-west1-d"
machine_type: "n1-standard-4"
preemptible: "{{ false if item.num == '0' else true }}"
disk_auto_delete: true
disks:
- name: "{{ item.node }}-disk"
mode: READ_WRITE
state: present
service_account_email: "{{ service_account_email }}"
service_account_permissions: "compute-rw"
credentials_file: "{{ credentials_file }}"
project_id: "{{ project_id }}"
tags: "elasticsearch"
register: gce_raw_results
with_items: "{{nodes}}"
async: 3600
poll: 2
Update 1:
-
服务帐户是整个项目的编辑者 . 所以正确的问题似乎不大
-
它开始于2018年3月24日发生 . 从那时起每晚都有 . 那么,如果它'缺货'问题那将是非常巧合的,对吗?此外,到目前为止,我一直在运行此脚本,并且大部分时间都会失败(请参阅下面的“成功”) .
实例上有 -
I 've tested a few times and it might have something to do with the ' preemptible'标志 . (我开始3个节点,但至少第一个节点必须保持至少工作)=>
preemptible: "{{ false if item.num == '0' else true }}"
如果我关闭可抢占(假),那么它运行没有故障 . 'workaround'似乎只是改变了API的变化? ansible gce没有实现这些变化吗?
完整的错误是:
任务[收集事实] ******************************************** ************************************************** ************************************************** ************************************************** ************************************************** ************************************************** ok:[localhost]任务[创建启动盘] ************************************* ************************************************** ************************************************** ************************************************** ************************************************** ************************************************** 改变了:[localhost] =>(item = {u'node':u'elasticsearch-link-0',u'ip_field':u'private_ip',u'zone':u'europe-west1-d ',u'cluster_name':u'elasticsearch-link',u'num':u'0',u'machine_type':u'n1-standard-4',u'project_id':你'[projectid]'} )更改:[localhost] =>(item = {u'node':u'elasticsearch-link-1',u'ip_field':u'private_ip',u'zone':u' europe-west1-d',u'cluster_name':u'elasticsearch-link',u'num':u'1',u'machine_type':u'n1-standard-4',u'project_id':你' [projectid]'})ok:[localhost] =>(item = {u'node':u'elasticsearch-link-2',u'ip_field':u'private_ip',u'zone':u'europe- west1-d',u'cluster_name':u'elasticsearch-link',u'num':u'2',u'machine_type':u'n1-standard-4',u'project_id':u'[projectid ]'})TASK [创建实例] ***************************************** ************************************************** ************************************************** ************************************************** ************************************************** ************************************************** 更改:[localhost] =>(item = {u'node':u'elasticsearch-link-0',u'ip_field':u'private_ip',u'zone':u'europe-west1-d' ,u'cluster_name':u'elasticsearch-link',u'num':u'0',u'machine_type':u'n1-standard-4',u'project_id':你'[projectid]'})更改:[localhost] =>(item = {u'node':u'elasticsearch-link-1', u'ip_field':u'private_ip',u'zone':u'europe-west1-d',u'cluster_name':u'elasticsearch-link',u'num':u'1',u'machine_type' :u'n1-standard-4',u'project_id':你'[projectid]'}}失败:[localhost](item = {u'node':u'elasticsearch-link-2',u'ip_field' :u'private_ip',u'zone':u'europe-west1-d',u'cluster_name':u'elasticsearch-link',u'num':u'2',u'machine_type':u'n1 -standard-4',u'project_id':你'[projectid]'})=> {“ansible_job_id”:“371957735383.2688”,“已更改”:false,“cmd”:“/ tmp / .ansible-airflow / ansible -tmp-1522742180.0-71790706749341 / gce.py“,”data“:”“,”failed“:1,”finished“:1,”item“:{”cluster_name“:”elasticsearch-link“,”ip_field“: “private_ip”,“machine_type”:“n1-standard-4”,“node”:“elasticsearch-link-2”,“num”:“2”,“project_id”:“[projectid]”,“zone”: “europe-west1-d”},“msg”:“Traceback(最近一次调用最后一次):\ n File \”/ tmp / .ansible-airflow / ansible-tmp-1522742180.0-71790706749341 / async_wrapper.py \“,line 158,在_run_module \ n(filtered_outdata,json_warnings)= _f ilter_non_json_lines(outdata)\ n文件\“/ tmp / .ansible-airflow / ansible-tmp-1522742180.0-71790706749341 / async_wrapper.py \”,第99行,在_filter_non_json_lines \ n引发ValueError('没有找到json char的开头')\ nValueError:没有json的开头char找到\ n“,”stderr“:”Traceback(最近一次调用最后一次):\ n File \“/ tmp / ansible_OnIK1e / ansible_module_gce.py \”,第750行,位于\ n main()\ n文件\“/ tmp / ansible_OnIK1e / ansible_module_gce.py \“,第712行,在主\ n模块中,gce,inames,number)\ n File \”/ tmp / ansible_OnIK1e / ansible_module_gce.py \“,第524行,在create_instances \ n实例中, lc_machine_type,lc_image(), gce_args \ n File \“/ usr / local / lib / python2.7 / dist-packages / libcloud / compute / drivers / gce.py \”,第3874行,在create_node \ n self中 . connection.async_request(request,method ='POST',data = node_data)\ n File \“/ usr / local / lib / python2.7 / dist-packages / libcloud / common / base.py \”,第784行,in async_request \ n response = request( kwargs)\ n File \“/ usr / local / lib / python2.7 / dist-packages / libcloud / compute / drivers / gce.py \”,第121行,在请求中\ n RESP onse = super(GCEConnection,self).request( args,** kwargs)\ n File \“/ usr / local / lib / python2.7 / dist-packages / libcloud / common / google.py \”,第806行,在request \ n * args,** kwargs)\ n File \“/ usr / local / lib / python2.7 / dist-packages / libcloud / common / base.py \”,第641行,在request \ n响应中= responseCls(** kwargs)\ n File \“/ usr / local / lib / python2.7 / dist-packages / libcloud / common / base.py \”,第163行,在init \ n self.object = self中 . parse_body()\ n文件\“/ usr / local / lib / python2.7 / dist-packages / libcloud / common / google.py \”,第268行,在parse_body \ n中引发GoogleBaseError(message,self.status,code )\ nlibcloud.common.google.GoogleBaseError:u \“区域'projects / [projectid] / zones / europe-west1-d'没有足够的资源来满足请求 . 尝试使用其他区域,或稍后再试 . \“\ n”,“stderr_lines”:[“Traceback(最近一次调用最后一次):”,“File \”/ tmp / ansible_OnIK1e / ansible_module_gce.py \“,第750行,在“,”main()“,”File \“/ tmp / ansible_OnIK1e / ansible_module_gce.py \”,第712行,在主“,”模块,gce,inames,number)“,”File \“/ tmp / ansible_OnIK1e /ansible_module_gce.py \“,第524行,在create_instances”,“instance,lc_machine_type,lc_image(),** gce_args”,“File \”/ usr / local / lib / python2.7 / dist-packages / libcloud / compute /drivers/gce.py \“,第3874行,在create_node中”,“self.connection.async_request(request,method ='POST',data = node_data)”,“File \”/ usr / local / lib / python2 . 7 / dist-packages / libcloud / common / base.py \“,第784行,在async_request中”,“response = request(** kwargs)”,“File \”/ usr / local / lib / python2.7 / dist -packages / libcloud / compute / drivers / gce.py \“,第121行,在请求中”,“response = super(GCEConnection,self).request(* args,** kwargs)”,“File \”/ usr / local / lib目录/ python2.7 / DIST-包/ libcloud /普通/ google.py \ “,第806行,请求”,“* args,** kwargs)”,“文件”/ usr / local / lib / python2.7 / dist-packages / libcloud / common / base.py \“,第641行,在请求“,”response = responseCls(** kwargs)“,”File \“/ usr / local / lib / python2.7 / dist-packages / libcloud / common / base.py \”,第163行,在init中“,”self.object = self.parse_body()“,”File \“/ usr / local / lib / python2.7 / dist-packages / libcloud / common / google.py \”,第268行,在parse_body中“, “引发GoogleBaseError(消息,self.status,代码)”,“libcloud.common.google.GoogleBaseError:u \”区域'projects / [projectid] / zones / europe-west1-d'没有足够的资源可用于满足要求 . 尝试使用其他区域,或稍后再试 . \“”]}重试,使用: - limit @ / usr / local / airflow / ansible / playbooks / elasticsearch-link-cluster-create.retry
1 回答
错误消息未显示配额错误,而是区域资源的问题,我建议您尝试新区域 .
引自documentation:
因此,在创建脚本时,您应该考虑这种可能性,即使它不常见 .
在preentible实例的情况下,此问题更加突出,因为:
UPDATE
要仔细检查我所说的你可以尝试保留禁用标志并更改区域以确保脚本正常工作并且它是在晚上发生的缺货(并且因为它在白天工作应该是这种情况) .
UPDATE2
正如我所承诺的那样,我代表您创建了功能请求,您可以按照公共跟踪器上的更新进行操作 . 我建议你启动它以便收到电子邮件的更新: