跳至主要内容

自定义 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"