OpenStack上Bosh-lite虚拟机部署CF失败求助
解决Bosh-lite部署Cloud Foundry时的CPI反序列化错误
这个错误是典型的JSON类型不匹配问题——Bosh CPI在创建VM时,尝试把某个对象类型的VM属性解析成字符串,导致反序列化失败。从报错来看,router和tcp-router实例都触发了这个问题,下面是具体的排查和解决步骤:
1. 检查渲染后的VM属性配置
首先,你需要确认最终部署配置里的VM属性是否存在类型错误。可以用bosh int命令把部署文件和变量文件合并成最终的渲染配置:
bosh int cf-deployment.yml --vars-store vars.yml > rendered-config.yml
打开rendered-config.yml,搜索router和tcp-router实例的vm_properties字段,重点检查是否有配置项是嵌套JSON对象,但CPI期望的是字符串。比如某些自定义metadata、标签或者网络参数,可能被错误地写成了对象格式。
2. 核对变量文件的格式
查看你的vars.yml或者其他变量源,确保所有和VM属性相关的变量都是字符串类型。举个例子,如果某个变量是用来设置VM的标签,不要写成:
vm_tag: key: value
而应该写成字符串形式:
vm_tag: "key:value"
3. 验证CPI与部署版本兼容性
Bosh-lite使用的Warden CPI可能和你当前使用的cf-deployment版本不兼容。建议确认cf-deployment官方推荐的版本组合,尝试切换到对应兼容的Bosh-lite和cf-deployment版本,或者升级Warden CPI到匹配版本。
4. 排查自定义Ops文件
如果你使用了自定义的Ops文件来修改部署配置,尝试逐步移除这些文件,每次部署后检查是否还会报错,以此定位到引发问题的配置项。找到后,修正对应配置的类型即可。
报错详情
Task 28 | 06:16:17 | Creating missing vms: router/96e38261-9287-4a69-b526-eb361eb36d84 (0) (00:00:01) L Error: CPI error 'Bosh::Clouds::CloudError' with message 'Creating VM with agent ID '{{0d5412ff-4140-4c10-9bcc-b82f8b8595ca}}': Unmarshaling VM properties: json: cannot unmarshal object into Go value of type string' in 'create_vm' CPI method Task 28 | 06:16:17 | Creating missing vms: tcp-router/0a492310-b1d7-4092-9f12-7bbdaeafa51f (0) (00:00:01) L Error: CPI error 'Bosh::Clouds::CloudError' with message 'Creating VM with agent ID '{{e2c6f33e-46b6-4600-a32e-8d113d327dd7}}': Unmarshaling VM properties: json: cannot unmarshal object into Go value of type string' in 'create_vm' CPI method Task 28 | 06:16:25 | Creating missing vms: database/eb7319a4-83af-4463-8cb9-455c2f3689c9 (0) (00:00:09) Task 28 | 06:16:25 | Creating missing vms: nats/96b398f8-cde3-4c7f-840a-d9abbe66bf4c (0) (00:00:09) Task 28 | 06:16:25 | Creating missing vms: adapter/29400d43-6d55-49b7-8368-591f4f6357cd (0) (00:00:09) Task 28 | 06:16:25 | Creating missing vms: cc-worker/fe3e01ce-26ff-45cd-97cd-8b771af7ba7d (0) (00:00:09) Task 28 | 06:16:26 | Creating missing vms: scheduler/59b98563-5b97-41a3-ac17-9b65998d5091 (0) (00:00:10) Task 28 | 06:16:26 | Creating missing vms: singleton-blobstore/233fa4c4-7ee0-4b03-83e1-2b958014bad5 (0) (00:00:10) Task 28 | 06:16:26 | Creating missing vms: doppler/880250b2-9418-4c02-9423-15bf0abe01fb (0) (00:00:10) Task 28 | 06:16:26 | Creating missing vms: consul/d362ee07-bfc2-4569-a702-6aa9b2806c2b (0) (00:00:10) Task 28 | 06:16:27 | Creating missing vms: log-api/7387cb18-e24e-4129-be2b-7fecfb2e3170 (0) (00:00:11) Task 28 | 06:16:27 | Creating missing vms: api/4806fa7e-d2be-4403-b9cc-f4c3cd32269d (0) (00:00:11) Task 28 | 06:16:27 | Creating missing vms: diego-cell/91a70e59-e815-495b-8f17-f34bfaabb3b2 (0) (00:00:11) Task 28 | 06:16:28 | Creating missing vms: uaa/c2fb065b-84b7-42fe-85fd-400947ca48f6 (0) (00:00:12) Task 28 | 06:16:28 | Creating missing vms: diego-api/737edb1d-4e81-48f6-9c22-169e64a3c8bb (0) (00:00:12) Task 28 | 06:16:28 | Error: CPI error 'Bosh::Clouds::CloudError' with message 'Creating VM with agent ID '{{0d5412ff-4140-4c10-9bcc-b82f8b8595ca}}': Unmarshaling VM properties: json: cannot unmarshal object into Go value of type string' in 'create_vm' CPI method
内容的提问来源于stack exchange,提问作者akskap
相关产品推荐
相关产品推荐

