云原生容器运行时【免费下载链接】kata-containersKata Containers is an open source project and community working to build a standard implementation of lightweight Virtual Machines (VMs) that feel and perform like containers, but provide the workload isolation and security advantages of VMs. https://katacontainers.io/项目地址https://gitcode.com/gh_mirrors/ka/kata-containers点击查看免费下载本文围绕 Kata Containers 仓库中 Cloud Hypervisor 客户端 SDK 的VmCoredumpData模型展开讲解它在 Cloud Hypervisor 本地 HTTP API 中的定位作为触发 VM虚拟机coredump 的请求体配置通过PUT /vm.coredump端点让 VMM 把崩溃现场写入指定位置。读完本文你将掌握该模型的属性语义、Go SDK 的构造与访问方法、底层 HTTP 调用链以及在 Kata Containers 运行时中查看与扩展这一能力的思路。VmCoredumpData 是什么触发 VM coredump 的请求配置模型VmCoredumpData是 Cloud Hypervisor 对外暴露的本地 HTTP 控制 API 中的一个数据模型model由 OpenAPI Generator 根据cloud-hypervisor.yaml自动生成归属于openapi包。它的唯一职责是承载把当前 VM 的 coredump 写到哪个目标位置这一配置信息并作为 PUT /vm.coredump 端点的请求体。从 OpenAPI 规范 api/openapi.yaml 可以看到它的 Schema 定义VmCoredumpData: example: destination_url: destination_url properties: destination_url: type: string type: object它位于components/schemas下被/vm.coredump端点以$ref: #/components/schemas/VmCoredumpData的方式引用见 api/openapi.yaml。Kata Containers 的 Cloud Hypervisor 客户端代码正是由这份 OpenAPI 规范生成的因此模型的 JSON 字段名、可选性、序列化行为都与规范严格一致。属性详解DestinationUrlVmCoredumpData只有一个属性NameTypeDescriptionNotesDestinationUrlPointer tostringcoredump 目标地址/路径[optional]对应的 Go 结构体定义见 model_vm_coredump_data.go// VmCoredumpData struct for VmCoredumpData type VmCoredumpData struct { DestinationUrl *string json:destination_url,omitempty }几点关键语义需要澄清JSON 字段名为destination_url下划线风格与 OpenAPI 规范一致omitempty保证未设置时该字段不会出现在序列化后的 JSON 中。字段类型是*string指针而非普通string。这是 OpenAPI Generator 对optional可选属性的标准处理方式用指针区分未设置与设置为空字符串两种状态。属性本身是可选的[optional]即触发 coredump 时甚至可以传入一个不含任何字段的空对象SDK 会原样发送{}作为请求体但 DestinationUrl 的具体取值格式如是否支持file://本地路径或远程 URL在当前仓库的规范与文档中未作进一步约束使用时需结合 Cloud Hypervisor 侧行为确认。没有required字段从规范看VmCoredumpData不属于任何 required 列表对比同文件的RestoreConfig明确标记了required: [source_url]因此 SDK 的两个构造函数都不会强制填充任何属性。Go SDK 方法全览构造与访问原文档列出了 6 个方法逐一对应模型源码 model_vm_coredump_data.go 中的实现方法签名作用NewVmCoredumpDatafunc NewVmCoredumpData() *VmCoredumpData实例化空对象为有默认值的属性赋默认值当前模型无默认值属性NewVmCoredumpDataWithDefaultsfunc NewVmCoredumpDataWithDefaults() *VmCoredumpData仅赋默认值不保证必填属性被设置当前模型无必填属性二者行为一致GetDestinationUrlfunc (o *VmCoredumpData) GetDestinationUrl() string返回字段值字段为 nil 时返回零值GetDestinationUrlOkfunc (o *VmCoredumpData) GetDestinationUrlOk() (*string, bool)返回(字段值, 是否已设置)二元组用于安全读取SetDestinationUrlfunc (o *VmCoredumpData) SetDestinationUrl(v string)取传入字符串的引用并赋给字段o.DestinationUrl vHasDestinationUrlfunc (o *VmCoredumpData) HasDestinationUrl() bool判断字段是否已被设置非 nil配合序列化方法MarshalJSON仅当字段非 nil 时才写入destination_url键以及NullableVmCoredumpData包装类型提供Get/Set/IsSet/Unset与 nil 安全的MarshalJSON/UnmarshalJSON这个模型在 SDK 层面提供了完整且防御性的读写能力——所有 getter 都对 nil 接收者做了保护避免空指针解引用。底层调用链PUT /vm.coredump 端点解析VmCoredumpData的消费端是 DefaultApi.md 中定义的VmCoredumpPutAPI其 OpenAPI 定义要点如下HTTP 方法PUT路径/vm.coredump请求体application/jsonSchema 为VmCoredumpData且required: true请求体必填见 api/openapi.yaml成功响应204 No ContentThe VM instance was successfully coredumped.失败响应404VM 实例尚未创建、405VM 实例尚未 boot鉴权无需授权No authorization requiredGo 端实现位于 api_default.go调用链为DefaultApi.VmCoredumpPut(ctx)创建请求构造器ApiVmCoredumpPutRequest通过 builder 模式.VmCoredumpData(vmCoredumpData)注入配置对象Execute()内部调用VmCoredumpPutExecute校验请求体非 nil否则报错vmCoredumpData is required and must be specified设置Content-Type: application/json将模型对象序列化后作为 POST body 发出PUT {basePath}/vm.coredump读取响应状态码 ≥ 300 时封装为GenericOpenAPIError返回否则返回 HTTP 响应。也就是说一次 coredump 触发的完整链路是构造VmCoredumpData→ 序列化为 JSON → PUT /vm.coredump → VMM 侧执行 coredump 收集。实战调用示例用 Go SDK 触发 VM coredump结合 DefaultApi.md 中的示例 与模型源码完整可用的调用代码如下package main import ( context fmt os openapiclient github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/cloud-hypervisor/client ) func main() { // 构造 coredump 配置指定目标位置 vmCoredumpData : *openapiclient.NewVmCoredumpData() vmCoredumpData.SetDestinationUrl(/var/lib/kata/coredumps/vm1.core) configuration : openapiclient.NewConfiguration() apiClient : openapiclient.NewAPIClient(configuration) // 触发 VM coredump resp, r, err : apiClient.DefaultApi. VmCoredumpPut(context.Background()). VmCoredumpData(vmCoredumpData). Execute() if err ! nil { fmt.Fprintf(os.Stderr, Error when calling DefaultApi.VmCoredumpPut: %v\n, err) fmt.Fprintf(os.Stderr, Full HTTP response: %v\n, r) os.Exit(1) } // 成功时响应为 204 No Content fmt.Printf(coredump triggered, HTTP status: %v\n, resp.Status) }需要说明的是NewConfiguration()默认使用的服务端地址需与 Cloud Hypervisor 进程实际监听的 API socket/地址一致Kata Containers 运行时在创建 sandbox 时会为该 VMM 实例配置独立的 API 监听地址相关封装见下文。此外即使不调用SetDestinationUrl空对象也能通过校验并触发 coredump——但那样 coredump 的落盘位置将完全由 VMM 端默认行为决定生产环境中建议始终显式设置。在 Kata Containers 中的定位chclient 封装与扩展思路在 Kata Containers 运行时中所有 Cloud Hypervisor 控制 API 的调用都通过chclient别名封装在 clh.go 中chclient github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/cloud-hypervisor/client从clhClientApi接口定义clh.go可以看出Kata 目前封装了VmmPingGet、CreateVM、VmInfoGet、VmResizePut、VmAddDevicePut、VmAddDiskPut、VmSnapshotPut、VmRemoveDevicePut、VmRestorePut等端点用于沙箱生命周期管理、热插拔与快照/恢复等场景。从源码结构看当前版本的clhClientApi接口尚未暴露VmCoredumpPutcoredump端点——这意味着VmCoredumpData模型与/vm.coredumpAPI 目前更多作为可用能力沉淀在 SDK 中供运行时之外的调试工具或后续版本按需接入。若要在运行时层面启用该能力可参考现有端点的封装模式在clhClientApi接口增加VmCoredumpPut(ctx, vmCoredumpData chclient.VmCoredumpData)方法在clhClientApi实现中调用ApiInternal.VmCoredumpPut(...)再在cloudHypervisor结构体上暴露供上层调用的入口。这与 clh.go 中VmSnapshotPut/VmRestorePut的封装方式一致。延伸阅读与相关文件索引模型文档VmCoredumpData.mdAPI 端点文档DefaultApi.md 之 VmCoredumpPut 一节客户端总览cloud-hypervisor/client/README.md模型与端点索引模型 Go 源码model_vm_coredump_data.goAPI 实现源码api_default.goOpenAPI 规范定义api/openapi.yaml 与 VmCoredumpData Schema原始 API 规范生成来源cloud-hypervisor.yamlKata 侧封装clh.go提示VmCoredumpData及PUT /vm.coredump属于 Cloud Hypervisor VMM 的本地控制面能力与 Kata Containers 的安全 VM 运行时定位配合使用时主要用于故障现场取证捕获 guest VM 崩溃时的内存转储。在使用前请确认目标 Cloud Hypervisor 版本支持 coredump 端点并将DestinationUrl指向 VMM 可写且安全的存储位置。赞分享云原生容器运行时【免费下载链接】kata-containersKata Containers is an open source project and community working to build a standard implementation of lightweight Virtual Machines (VMs) that feel and perform like containers, but provide the workload isolation and security advantages of VMs. https://katacontainers.io/项目地址https://gitcode.com/gh_mirrors/ka/kata-containers点击查看免费下载相关推荐Kata Containers 中的 Cloud Hypervisor 磁盘在线扩容VmResizeDisk 模型与 /vm.resize-disk API 深度解析Kata Containers 中的 Cloud Hypervisor 磁盘在线扩容VmResizeDisk 模型与 /vm.resize disk API云原生容器运行时Kata Containers 中 Cloud Hypervisor TpmConfig 模型详解在 VM 配置中挂载 TPM 设备Kata Containers 中 Cloud Hypervisor TpmConfig 模型详解在 VM 配置中挂载 TPM 设备 Kata Contain云原生容器运行时Kata Containers 中的 cloud-hypervisor VmmPingResponseVMM 存活探测与 API 客户端模型解析Kata Containers 中的 cloud hypervisor VmmPingResponseVMM 存活探测与 API 客户端模型解析 VmmPin云原生容器运行时上一篇SQLAlchemy-mixins实战3分钟实现模型自动时间戳与优雅序列化下一篇xcodes技术选型为什么选择Swift开发创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
