自定义 Lima 实例以适应不同的工作负载
您可以使用 YAML 和 yq
自定义 Lima 实例。
有关 yq 的更多信息,请参阅 yq 文档。
步骤
-
要创建新实例
$ limactl create <instance>
-
要编辑现有实例
$ limactl edit <instance>
您可以编辑的部分内容
- 更改 CPU 数量、内存和磁盘大小
- 更改操作系统(Linux 发行版)
- 修改集群设置(Kubernetes 发行版)
- 运行 **同时** 运行容器工作负载和 Kubernetes 工作负载
另请参阅
目录
要查找实例目录(Dir
)的位置
limactl list <instance> --format '{{.Dir}}'
资源
资源可以按实例设置,也可以作为全局默认设置。
# CPUs
# 🟢 Builtin default: min(4, host CPU cores)
cpus: null
# Memory size
# 🟢 Builtin default: min("4GiB", half of host memory)
memory: null
# Disk size
# 🟢 Builtin default: "100GiB"
disk: null
要设置默认值,请编辑 Lima 主目录中的 _config/default.yaml
。
# The builtin defaults can be changed globally by creating a $LIMA_HOME/_config/default.yaml
# file. It will be used by ALL instances under the same $LIMA_HOME, and it
# will be applied on each `limactl start`, so can affect instance restarts.
# A similar mechanism is $LIMA_HOME/_config/override.yaml, which will take
# precedence even over the settings in an instances lima.yaml file.
# It too applies to ALL instances under the same $LIMA_HOME, and is applied
# on each restart. It can be used to globally override settings, e.g. make
# the mount of the home directory writable.
VM 和挂载
任何具有 ssh 的虚拟机(或服务器)都可以用于 Lima。
最兼容的挂载类型是“reverse-sshfs”(来自 sshocker)。
您可以选择使用带有“9p”(也称为 virtfs)挂载的“qemu” vm。
在 macOS 13+ 上,您还可以使用带有“virtiofs”挂载的“vz” vm。
# VM type: "qemu" or "vz" (on macOS 13 and later).
# The vmType can be specified only on creating the instance.
# The vmType of existing instances cannot be changed.
# 🟢 Builtin default: "qemu"
vmType: null
# Mount type for above mounts, such as "reverse-sshfs" (from sshocker),
# "9p" (EXPERIMENTAL, from QEMU’s virtio-9p-pci, aka virtfs),
# or "virtiofs" (EXPERIMENTAL, needs `vmType: vz`)
# 🟢 Builtin default: "reverse-sshfs" (for QEMU), "virtiofs" (for vz)
mountType: null
容器
除了现有的运行时之外,您还可以安装容器引擎。
例如,您可以安装 Podman Engine,或者您可以安装 Docker Engine。之后,您可以将套接字端口转发到主机 Dir
。
Docker
portForwards:
- guestSocket: '/var/run/docker.sock'
hostSocket: '{{.Dir}}/sock/docker.sock'
/var/run/docker.sock
export DOCKER_HOST="unix://{{.Dir}}/sock/docker.sock"
Podman
portForwards:
- guestSocket: '/run/podman/podman.sock'
hostSocket: '{{.Dir}}/sock/podman.sock'
/run/podman/podman.sock
export CONTAINER_HOST="unix://{{.Dir}}/sock/podman.sock"
Kubernetes
您可以在现有的容器引擎之上安装 Kubernetes。
例如,您可以使用 CRI-O 用于 Podman,或 CRI-Dockerd 用于 Docker。之后,您可以将 kubeconfig.yaml
文件复制到主机 Dir
。
k3s.io
copyToHost:
- guest: '/etc/rancher/k3s/k3s.yaml'
host: '{{.Dir}}/copied-from-guest/kubeconfig.yaml'
deleteOnStop: true
/etc/rancher/k3s/k3s.yaml
export KUBECONFIG="{{.Dir}}/copied-from-guest/kubeconfig.yaml"
k8s.io
copyToHost:
- guest: '/etc/kubernetes/admin.conf'
host: '{{.Dir}}/copied-from-guest/kubeconfig.yaml'
deleteOnStop: true
/etc/kubernetes/admin.conf
export KUBECONFIG="{{.Dir}}/copied-from-guest/kubeconfig.yaml"