- every node that can run the Ayakaleaf Pro pod has Docker Engine installed and running;
- every TeX Live image you configure is pulled into Docker on each of those nodes.
containerd.io, and both use the same daemon in different namespaces.
The steps below are for Ubuntu 24.04 and a cluster built with kubeadm. If your cluster already exists, do steps 1, 2 and 5 on the nodes that will run Ayakaleaf Pro.
1
Kernel modules and sysctls
2
Docker Engine
Install Docker Engine from Docker’s repository as in 0. Setup Docker. The Compose plugin is not needed. This also installs
containerd.io.3
containerd for the kubelet
The
containerd.io package from Docker’s repository has the CRI plugin turned off. Write the full default configuration, which turns it on, and switch it to systemd cgroups:4
kubeadm, kubelet and kubectl
Follow Installing kubeadm, then create the cluster with The cluster also needs a default StorageClass. For a test cluster, local-path-provisioner works; in production, use the block storage of your platform (Longhorn, Ceph, a cloud CSI driver).
kubeadm init and kubeadm join and install a network plugin. For example, with flannel:kubeadm-config.yaml
5
TeX Live images
On every node that can run Ayakaleaf Pro, pull the TeX Live images you will list in
ALL_TEX_LIVE_DOCKER_IMAGES with Docker, for example:crictl pull or ctr do not help here: Ayakaleaf Pro asks Docker for the image. The full images are large (around 28 GB each); see Sandboxed Compiles for the list. For a first test, ghcr.io/ayaka-notes/texlive-basic:2026.1 (about 630 MB, a minimal TeX Live) is enough.Q&A
Can I run Ayakaleaf Pro on nodes without Docker?
Can I run Ayakaleaf Pro on nodes without Docker?
Answer: Only with
SANDBOXED_COMPILES=false. Compiles then run inside the Ayakaleaf Pro container with its small built-in TeX Live, and LaTeX documents can read and write everything that container can. We don’t recommend it; see Sandboxed Compiles.Do compiles count against the pod's memory limit?
Do compiles count against the pod's memory limit?
Answer: No. The TeX Live containers are started by the node’s Docker, outside the pod and outside the kubelet’s view. Leave free memory on the node for them, for example with
systemReserved as above, and don’t fill the node with other pods.
