> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 0. Solmujen valmistelu

> Asenna Docker Engine, containerd ja kubeadm solmuille ja hae TeX Live -imaget.

Ayakaleaf Pro kääntää LaTeXia [hiekkalaatikoiduissa](https://ayakaleaf-pro.mintlify.site/fi/on-premises/configuration/overleaf-toolkit/sandboxed-compiles.md) TeX Live -konteissa. Se käynnistää ne itse sen koneen Docker-socketin kautta, jolla se toimii. Kubernetesissa tämä tarkoittaa:

* jokaisella solmulla, joka voi ajaa Ayakaleaf Pro -podia, on **Docker Engine** asennettuna ja käynnissä;
* jokainen määrittämäsi TeX Live -image on haettu **Dockeriin** jokaisella näistä solmuista.

Kubelet voi edelleen käyttää containerd:tä: Docker Engine sisältää paketin `containerd.io`, ja molemmat käyttävät samaa daemonia eri nimiavaruuksissa.

> [!WARNING]
>
> Hallitut solmupoolit ilman Dockeria (useimmat EKS:n, GKE:n ja AKS:n oletukset) eivät pysty ajamaan hiekkalaatikkokäännöksiä. Käytä solmupooleja, joihin voit asentaa Docker Enginen, tai merkitse tällaiset solmut nimiöllä ja pidä Ayakaleaf Pro niillä `nodeSelector`-asetuksella.

Alla olevat vaiheet koskevat Ubuntu 24.04:ää ja kubeadmilla rakennettua klusteria. Jos klusterisi on jo olemassa, suorita vaiheet 1, 2 ja 5 solmuilla, jotka tulevat ajamaan Ayakaleaf Prota.

**1. Ytimen moduulit ja sysctl-asetukset**

```bash theme={null}
printf 'overlay\nbr_netfilter\n' | sudo tee /etc/modules-load.d/k8s.conf
sudo modprobe overlay && sudo modprobe br_netfilter
printf 'net.bridge.bridge-nf-call-iptables=1\nnet.bridge.bridge-nf-call-ip6tables=1\nnet.ipv4.ip_forward=1\n' \
  | sudo tee /etc/sysctl.d/99-k8s.conf
sudo sysctl --system
sudo swapoff -a   # and comment out swap in /etc/fstab
```

**2. Docker Engine**

Asenna Docker Engine Dockerin repositoriosta sivun [0. Dockerin asennus](https://ayakaleaf-pro.mintlify.site/fi/on-premises/installation/using-the-toolkit/0.-setup-docker.md) mukaisesti. Compose-lisäosaa ei tarvita. Tämä asentaa myös paketin `containerd.io`.

**3. containerd kubeletille**

Dockerin repositorion `containerd.io`-paketissa CRI-lisäosa on pois päältä. Kirjoita täydellinen oletuskonfiguraatio, joka ottaa sen käyttöön, ja vaihda se käyttämään systemd-cgroupeja:

```bash wrap theme={null}
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
# containerd 2.x writes config_path = '' and ignores /etc/containerd/certs.d without this
sudo sed -i "s|config_path = ''|config_path = '/etc/containerd/certs.d'|" /etc/containerd/config.toml
sudo systemctl restart containerd docker
```

**4. kubeadm, kubelet ja kubectl**

Noudata ohjetta [Installing kubeadm](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/), luo sitten klusteri komennoilla `kubeadm init` ja `kubeadm join` ja asenna verkkolisäosa. Esimerkiksi flannelilla:

```yaml title="kubeadm-config.yaml" theme={null}
apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration
networking:
  podSubnet: 10.244.0.0/16   # flannel's default
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
# Compile containers are started by Docker, outside the kubelet's accounting: keep memory for them
systemReserved:
  memory: 300Mi
kubeReserved:
  memory: 200Mi
```

```bash theme={null}
sudo kubeadm init --config kubeadm-config.yaml
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
```

Klusteri tarvitsee myös oletus-StorageClassin. Testiklusterissa [local-path-provisioner](https://github.com/rancher/local-path-provisioner) toimii; tuotannossa käytä alustasi lohkotallennusta (Longhorn, Ceph, pilvipalvelun CSI-ajuri).

**5. TeX Live -imaget**

Hae **jokaisella** solmulla, joka voi ajaa Ayakaleaf Prota, Dockerilla ne TeX Live -imaget, jotka listaat asetukseen `ALL_TEX_LIVE_DOCKER_IMAGES`, esimerkiksi:

```bash theme={null}
sudo docker pull ghcr.io/ayaka-notes/texlive-full:2026.1
```

`crictl pull` tai `ctr` eivät auta tässä: Ayakaleaf Pro pyytää imagea Dockerilta. Täydet imaget ovat suuria (noin 28 Gt kukin); luettelo on sivulla [Hiekkalaatikkokäännökset](https://ayakaleaf-pro.mintlify.site/fi/on-premises/configuration/overleaf-toolkit/sandboxed-compiles.md). Ensimmäiseen testiin riittää `ghcr.io/ayaka-notes/texlive-basic:2026.1` (noin 630 Mt, minimaalinen TeX Live).

### Kysymyksiä ja vastauksia

> [accordion] Voinko ajaa Ayakaleaf Prota solmuilla ilman Dockeria?
>
> **Vastaus:** Vain asetuksella `SANDBOXED_COMPILES=false`. Käännökset suoritetaan silloin Ayakaleaf Pro -kontin sisällä sen pienellä sisäänrakennetulla TeX Livellä, ja LaTeX-dokumentit voivat lukea ja kirjoittaa kaikkea, mihin kyseisellä kontilla on pääsy. Emme suosittele sitä; katso [Hiekkalaatikkokäännökset](https://ayakaleaf-pro.mintlify.site/fi/on-premises/configuration/overleaf-toolkit/sandboxed-compiles.md).

> [accordion] Lasketaanko käännökset podin muistirajaan?
>
> **Vastaus:** Ei. TeX Live -kontit käynnistää solmun Docker podin ulkopuolella ja kubeletin näkymättömissä. Jätä solmulle vapaata muistia niitä varten, esimerkiksi yllä kuvatulla `systemReserved`-asetuksella, äläkä täytä solmua muilla podeilla.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.