Skip to main content
Ayakaleaf Pro compiles LaTeX in sandboxed TeX Live containers. It starts them itself, through the Docker socket of the machine it runs on. On Kubernetes this means:
  • 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.
The kubelet can keep using containerd: Docker Engine ships containerd.io, and both use the same daemon in different namespaces.
Managed node pools without Docker (most EKS, GKE and AKS defaults) cannot run sandboxed compiles. Use node pools where you can install Docker Engine, or label such nodes and keep Ayakaleaf Pro on them with a nodeSelector.
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 kubeadm init and kubeadm join and install a network plugin. For example, with flannel:
kubeadm-config.yaml
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).
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

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.
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.
Last modified on November 2, 2026