vm快照例子
1. 开启嵌套虚拟化
limactl start --1name=ubuntu --cpus=8 --memory=16 --containerd none --vm-type=vz --nested-virt template://ubuntu-24.04
2. 下载安装golang
[ go1.27.1.linux-arm64.tar.gz](https://go.dev/dl/go1.27.1.linux-arm64.tar.gz)
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.27.1.*
export PATH=$PATH:/usr/local/go/bin
3.安装docker
sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
4.安装kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl"
5. git clone https://github.com/agent-substrate/substrate.git
hack/create-kind-cluster.sh
go install ./cmd/kubectl-ate
KIND_CLUSTER_NAME=kind ./hack/run-microvm-demo-kind.sh
(ko resolve -f - took 9.336s)
[step]: Waiting for the ate-demo-counter-microvm/counter-microvm golden snapshot...
[run-microvm-demo]: Demo applied. Next steps:
1. Inspect the actor template (its golden snapshot is already Ready):
kubectl-ate --context=kind-kind get actor-templates -a ate-demo-counter-microvm
2. Create an actor in the template's atespace (kubectl·-ate; install with: go install ./cmd/kubectl-ate):
kubectl-ate --context=kind-kind create actor my-counter-1 -a ate-demo-counter-microvm \
--template counter-microvm
3. Port-forward the atenet-router and curl the in-RAM counter:
kubectl --context=kind-kind port-forward -n ate-system svc/atenet-router 8000:80 &
curl -X POST \
-H "ate-target-actor: ate-demo-counter-microvm/my-counter-1" http://localhost:8000
Increment, suspend (kubectl ate suspend actor my-counter-1 -a ate-demo-counter-microvm),
resume on another worker, and confirm the count continues — the guest memory snapshot round-tripped.
4.快照和恢复虚拟机行命令
kubectl ate suspend actor my-counter-1 -a ate-demo-counter-microvm
kubectl ate resume actor my-counter-1 -a ate-demo-counter-microvm
对应日志
root@kind-control-plane:/var/log/pods# crictl ps |grep 7d752
7d752a21855dd 2e37f9a4f61e4 About an hour ago Running atelet 0 f68a24f708c84 atelet-v0-3-0-36-gf7eefe95-npvtp ate-system
{"time":"2026-10-03T05:13:22.937590796Z","level":"DEBUG","msg":"Sandbox asset cache hit","path":"/var/lib/ate/static-files/runsc-f192b510eea1c710cbc439d716bb0573c223fc463dbe3e6523788a2b7ef62850","trace_id":"6b67ae99c30e05a238576fa134c5db26","span_id":"e5062f4cacb3af85","trace_flags":"01"}
{"time":"2026-10-03T05:13:22.937628546Z","level":"DEBUG","msg":"Sandbox asset cache hit","path":"/var/lib/ate/static-files/runsc-7e3bdd500eb92de17c377bd84f8ed57e50d6bb68c7ec08c88f5e1916cd49f30d","trace_id":"6b67ae99c30e05a238576fa134c5db26","span_id":"e5062f4cacb3af85","trace_flags":"01"}
{"time":"2026-10-03T05:13:22.937632754Z","level":"DEBUG","msg":"Sandbox asset cache hit","path":"/var/lib/ate/static-files/runsc-4960f6cf781274eaa445fc9f88bb8c5ce951649278bc9caa13afb1e99cfe80e6","trace_id":"6b67ae99c30e05a238576fa134c5db26","span_id":"e5062f4cacb3af85","trace_flags":"01"}
{"time":"2026-10-03T05:13:22.937635796Z","level":"DEBUG","msg":"Sandbox asset cache hit","path":"/var/lib/ate/static-files/runsc-3aa9240045d2261930ef04138fe05cf288f94c867e63e5d0845758bac5e3d458","trace_id":"6b67ae99c30e05a238576fa134c5db26","span_id":"e5062f4cacb3af85","trace_flags":"01"}
{"time":"2026-10-03T05:13:23.071680129Z","level":"INFO","msg":"Compressed zstd upload","object":"ate-demo-counter-microvm/atespaces/ate-demo-counter-microvm/actors/c4f75d06-32e0-4a2f-9010-4d0ad7e402d1/snapshots/f6ef5e6f-fe94-4bf3-8427-ae68f1223909/durable-dir.tar.zstd","sparse":true,"streaming":true,"logical_bytes":2560,"populated_bytes":2560,"total":41371166,"trace_id":"6b67ae99c30e05a238576fa134c5db26","span_id":"cc7204518e02d51f","trace_flags":"01"}
{"time":"2026-10-03T05:13:23.078217421Z","level":"INFO","msg":"Compressed zstd upload","object":"ate-demo-counter-microvm/atespaces/ate-demo-counter-microvm/actors/c4f75d06-32e0-4a2f-9010-4d0ad7e402d1/snapshots/f6ef5e6f-fe94-4bf3-8427-ae68f1223909/config.json.zstd","sparse":true,"streaming":true,"logical_bytes":1876,"populated_bytes":1876,"total":47947958,"trace_id":"6b67ae99c30e05a238576fa134c5db26","span_id":"75bbff7551e26d8a","trace_flags":"01"}
{"time":"2026-10-03T05:13:23.082494171Z","level":"INFO","msg":"Compressed zstd upload","object":"ate-demo-counter-microvm/atespaces/ate-demo-counter-microvm/actors/c4f75d06-32e0-4a2f-9010-4d0ad7e402d1/snapshots/f6ef5e6f-fe94-4bf3-8427-ae68f1223909/base-id.zstd","sparse":true,"streaming":true,"logical_bytes":36,"populated_bytes":36,"total":51285208,"trace_id":"6b67ae99c30e05a238576fa134c5db26","span_id":"e22ec4f878f12083","trace_flags":"01"}
{"time":"2026-10-03T05:13:23.086001087Z","level":"INFO","msg":"Compressed zstd upload","object":"ate-demo-counter-microvm/atespaces/ate-demo-counter-microvm/actors/c4f75d06-32e0-4a2f-9010-4d0ad7e402d1/snapshots/f6ef5e6f-fe94-4bf3-8427-ae68f1223909/state.json.zstd","sparse":true,"streaming":true,"logical_bytes":54181,"populated_bytes":54181,"total":55739042,"trace_id":"6b67ae99c30e05a238576fa134c5db26","span_id":"5e16266f71c08a26","trace_flags":"01"}
{"time":"2026-10-03T05:13:23.119124546Z","level":"INFO","msg":"Compressed zstd upload","object":"ate-demo-counter-microvm/atespaces/ate-demo-counter-microvm/actors/c4f75d06-32e0-4a2f-9010-4d0ad7e402d1/snapshots/f6ef5e6f-fe94-4bf3-8427-ae68f1223909/rootfs-upper.tar.zstd","sparse":true,"streaming":true,"logical_bytes":1052160,"populated_bytes":1052160,"total":88623916,"trace_id":"6b67ae99c30e05a238576fa134c5db26","span_id":"38b5bf13abd2e80e","trace_flags":"01"}
{"time":"2026-10-03T05:13:23.346056838Z","level":"INFO","msg":"Compressed zstd upload","object":"ate-demo-counter-microvm/atespaces/ate-demo-counter-microvm/actors/c4f75d06-32e0-4a2f-9010-4d0ad7e402d1/snapshots/f6ef5e6f-fe94-4bf3-8427-ae68f1223909/memory-ranges.zstd","sparse":true,"streaming":true,"logical_bytes":402653184,"populated_bytes":85303296,"total":315219917,"trace_id":"6b67ae99c30e05a238576fa134c5db26","span_id":"e1b4caaf79d1d776","trace_flags":"01"}
{"time":"2026-10-03T05:13:23.356624004Z","level":"INFO","msg":"Checkpoint timing breakdown","ate.atespace":"ate-demo-counter-microvm","ate.actor.name":"my-counter-1","ate.actor.uid":"c4f75d06-32e0-4a2f-9010-4d0ad7e402d1","ate.template.atespace":"ate-demo-counter-microvm","ate.template.name":"counter-microvm","ate.snapshot.scope":"full","ate.snapshot.kind":"latest","ate.sandbox.class":"microvm","ate.actor.checkpoint.duration.sandbox_assets":0.00006725,"ate.actor.checkpoint.duration.ateom_checkpoint":0.092545084,"ate.actor.checkpoint.duration.persist":0.318783417,"ate.actor.checkpoint.duration.total":0.419110167,"trace_id":"6b67ae99c30e05a238576fa134c5db26","span_id":"e5062f4cacb3af85","trace_flags":"01"}
{"time":"2026-10-03T05:13:23.356735588Z","level":"INFO","msg":"Handle RPC","method":"/atelet.AteomHerder/Checkpoint","req":{"target_ateom_uid":"15aeb325-9aad-4bda-be4f-a1dac463a7a0","atespace":"ate-demo-counter-microvm","actor_name":"my-counter-1","actor_uid":"c4f75d06-32e0-4a2f-9010-4d0ad7e402d1","actor_template_atespace":"ate-demo-counter-microvm","actor_template_name":"counter-microvm","spec":{"containers":[{"name":"counter","image":"localhost:5001/counter@sha256:d488894dba1d8395f20c26c6ac9ee368cd1f50504e2a6cae6b3bc804c4db63ae","command":["/ko-app/counter","--extra-port=9090"],"wakeup_probe":{"http_get":{"path":"/readyz","port":80},"timeout_seconds":120},"volume_mounts":[{"name":"data","mount_path":"/home/counter"}]}],"volumes":[{"name":"data","Source":{"DurableDir":{}}}]},"type":2,"Config":{"ExternalConfig":{"snapshot_uri":"gs://ate-snapshots/ate-demo-counter-microvm/atespaces/ate-demo-counter-microvm/actors/c4f75d06-32e0-4a2f-9010-4d0ad7e402d1/snapshots/f6ef5e6f-fe94-4bf3-8427-ae68f1223909"}},"scope":1},"resp":{},"err":null,"elapsed-time":"419.271584ms","trace_id":"6b67ae99c30e05a238576fa134c5db26","span_id":"e5062f4cacb3af85","trace_flags":"01"}
{"time":"2026-10-03T05:13:31.558489675Z","level":"DEBUG","msg":"Sandbox asset cache hit","path":"/var/lib/ate/static-files/runsc-3aa9240045d2261930ef04138fe05cf288f94c867e63e5d0845758bac5e3d458","trace_id":"e3d39ec69c3c8aa4ea59f44452ee4bc7","span_id":"2c0e2c0edf96684a","trace_flags":"01"}
{"time":"2026-10-03T05:13:31.558529675Z","level":"DEBUG","msg":"Sandbox asset cache hit","path":"/var/lib/ate/static-files/runsc-f192b510eea1c710cbc439d716bb0573c223fc463dbe3e6523788a2b7ef62850","trace_id":"e3d39ec69c3c8aa4ea59f44452ee4bc7","span_id":"2c0e2c0edf96684a","trace_flags":"01"}
{"time":"2026-10-03T05:13:31.558536008Z","level":"DEBUG","msg":"Sandbox asset cache hit","path":"/var/lib/ate/static-files/runsc-7e3bdd500eb92de17c377bd84f8ed57e50d6bb68c7ec08c88f5e1916cd49f30d","trace_id":"e3d39ec69c3c8aa4ea59f44452ee4bc7","span_id":"2c0e2c0edf96684a","trace_flags":"01"}
{"time":"2026-10-03T05:13:31.558539092Z","level":"DEBUG","msg":"Sandbox asset cache hit","path":"/var/lib/ate/static-files/runsc-4960f6cf781274eaa445fc9f88bb8c5ce951649278bc9caa13afb1e99cfe80e6","trace_id":"e3d39ec69c3c8aa4ea59f44452ee4bc7","span_id":"2c0e2c0edf96684a","trace_flags":"01"}
{"time":"2026-10-03T05:13:31.558905425Z","level":"INFO","msg":"Image cache hit","ref":"registry.k8s.io/pause:3.10.2@sha256:f548e0e8e3dc1896ca956272154dde3314e8cc4fde0a57577ee9fa1c63f5baf4","digest":"sha256:f548e0e8e3dc1896ca956272154dde3314e8cc4fde0a57577ee9fa1c63f5baf4","trace_id":"e3d39ec69c3c8aa4ea59f44452ee4bc7","span_id":"99391bbaa0f2bc4a","trace_flags":"01"}
{"time":"2026-10-03T05:13:31.55901755Z","level":"INFO","msg":"Image cache hit","ref":"localhost:5001/counter@sha256:d488894dba1d8395f20c26c6ac9ee368cd1f50504e2a6cae6b3bc804c4db63ae","digest":"sha256:d488894dba1d8395f20c26c6ac9ee368cd1f50504e2a6cae6b3bc804c4db63ae","trace_id":"e3d39ec69c3c8aa4ea59f44452ee4bc7","span_id":"1bd8af5a16b3ffce","trace_flags":"01"}
{"time":"2026-10-03T05:13:31.561291217Z","level":"INFO","msg":"Decompressed zstd download","sparse":true,"logical_bytes":54181,"written_bytes":0,"took":1238291,"trace_id":"e3d39ec69c3c8aa4ea59f44452ee4bc7","span_id":"9622eb9e18c5a891","trace_flags":"01"}
{"time":"2026-10-03T05:13:31.563176508Z","level":"INFO","msg":"Decompressed zstd download","sparse":true,"logical_bytes":1876,"written_bytes":0,"took":52084,"trace_id":"e3d39ec69c3c8aa4ea59f44452ee4bc7","span_id":"7c2e5df64aca1eef","trace_flags":"01"}
{"time":"2026-10-03T05:13:31.56317655Z","level":"INFO","msg":"Decompressed zstd download","sparse":true,"logical_bytes":2560,"written_bytes":0,"took":79208,"trace_id":"e3d39ec69c3c8aa4ea59f44452ee4bc7","span_id":"b8ed67223d822898","trace_flags":"01"}
{"time":"2026-10-03T05:13:31.56410805Z","level":"INFO","msg":"Decompressed zstd download","sparse":true,"logical_bytes":36,"written_bytes":0,"took":1004417,"trace_id":"e3d39ec69c3c8aa4ea59f44452ee4bc7","span_id":"cccbcfd08383f2b1","trace_flags":"01"}
{"time":"2026-10-03T05:13:31.568772258Z","level":"INFO","msg":"Decompressed zstd download","sparse":true,"logical_bytes":1052160,"written_bytes":0,"took":5578375,"trace_id":"e3d39ec69c3c8aa4ea59f44452ee4bc7","span_id":"6663559c3b537888","trace_flags":"01"}
{"time":"2026-10-03T05:13:31.765419967Z","level":"INFO","msg":"Decompressed zstd download","sparse":true,"logical_bytes":402653184,"written_bytes":0,"took":190827333,"trace_id":"e3d39ec69c3c8aa4ea59f44452ee4bc7","span_id":"876642e52ce701be","trace_flags":"01"}
{"time":"2026-10-03T05:13:31.984278342Z","level":"INFO","msg":"Restore timing breakdown","ate.atespace":"ate-demo-counter-microvm","ate.actor.name":"my-counter-1","ate.actor.uid":"c4f75d06-32e0-4a2f-9010-4d0ad7e402d1","ate.template.atespace":"ate-demo-counter-microvm","ate.template.name":"counter-microvm","ate.snapshot.scope":"full","ate.snapshot.kind":"latest","ate.sandbox.class":"microvm","ate.actor.restore.duration.volume_mount":2.5e-7,"ate.actor.restore.duration.manifest_fetch":0.001801209,"ate.actor.restore.duration.sandbox_assets":0.000073083,"ate.actor.restore.duration.download":0.206940375,"ate.actor.restore.duration.oci_unpack":0.000618708,"ate.actor.restore.duration.ateom_restore":0.218471667,"ate.actor.restore.duration.total":0.427751667,"trace_id":"e3d39ec69c3c8aa4ea59f44452ee4bc7","span_id":"2c0e2c0edf96684a","trace_flags":"01"}
{"time":"2026-10-03T05:13:31.984417842Z","level":"INFO","msg":"Handle RPC","method":"/atelet.AteomHerder/Restore","req":{"target_ateom_uid":"15aeb325-9aad-4bda-be4f-a1dac463a7a0","atespace":"ate-demo-counter-microvm","actor_name":"my-counter-1","actor_uid":"c4f75d06-32e0-4a2f-9010-4d0ad7e402d1","actor_template_atespace":"ate-demo-counter-microvm","actor_template_name":"counter-microvm","spec":{"containers":[{"name":"counter","image":"localhost:5001/counter@sha256:d488894dba1d8395f20c26c6ac9ee368cd1f50504e2a6cae6b3bc804c4db63ae","command":["/ko-app/counter","--extra-port=9090"],"wakeup_probe":{"http_get":{"path":"/readyz","port":80},"timeout_seconds":120},"volume_mounts":[{"name":"data","mount_path":"/home/counter"}]}],"volumes":[{"name":"data","Source":{"DurableDir":{}}}]},"type":2,"Config":{"ExternalConfig":{"snapshot_uri":"gs://ate-snapshots/ate-demo-counter-microvm/atespaces/ate-demo-counter-microvm/actors/c4f75d06-32e0-4a2f-9010-4d0ad7e402d1/snapshots/f6ef5e6f-fe94-4bf3-8427-ae68f1223909"}},"scope":1,"egress_gateway":{"address":"atenet-egress.ate-system.svc:443"},"cpu_milli":1000,"memory_bytes":536870912,"sandbox_assets":{"sandbox_class":"microvm","assets":{"amd64":{"files":{"cloud-hypervisor":{"url":"gs://ate-snapshots/kata-assets/cloud-hypervisor","sha256":"448af3d4e59b22c2987f7df94c213ad40fb53a10d437e42b5ee6c4fce7c29ecc"},"kata-image":{"url":"gs://ate-snapshots/kata-assets/rootfs.img","sha256":"96497f64da1de9c7473fef46c3d29ddd0805d334731cf9d903a21a5b2c33cefb"},"kata-kernel":{"url":"gs://ate-snapshots/kata-assets/vmlinux","sha256":"8e9dbc3a6e4c26adb089d23d31201edebce905c7f3e31aa67b32bdd41df1b86f"},"virtiofsd":{"url":"gs://ate-snapshots/kata-assets/virtiofsd","sha256":"15b2e72a78cc08a9bd8a6943e89fb69c88cb3cbeb63069efceade835342ac7d4"}}},"arm64":{"files":{"cloud-hypervisor":{"url":"gs://ate-snapshots/kata-assets/cloud-hypervisor","sha256":"f192b510eea1c710cbc439d716bb0573c223fc463dbe3e6523788a2b7ef62850"},"kata-image":{"url":"gs://ate-snapshots/kata-assets/rootfs.img","sha256":"7e3bdd500eb92de17c377bd84f8ed57e50d6bb68c7ec08c88f5e1916cd49f30d"},"kata-kernel":{"url":"gs://ate-snapshots/kata-assets/vmlinux","sha256":"4960f6cf781274eaa445fc9f88bb8c5ce951649278bc9caa13afb1e99cfe80e6"},"virtiofsd":{"url":"gs://ate-snapshots/kata-assets/virtiofsd","sha256":"3aa9240045d2261930ef04138fe05cf288f94c867e63e5d0845758bac5e3d458"}}}},"pause_image":"registry.k8s.io/pause:3.10.2@sha256:f548e0e8e3dc1896ca956272154dde3314e8cc4fde0a57577ee9fa1c63f5baf4"}},"resp":{},"err":null,"elapsed-time":"427.966958ms","trace_id":"e3d39ec69c3c8aa4ea59f44452ee4bc7","span_id":"2c0e2c0edf96684a","trace_flags":"01"}

浙公网安备 33010602011771号