Skip to main content
Ayakaleaf Pro は、サンドボックス化された TeX Live コンテナで LaTeX をコンパイルします。これらのコンテナは、Ayakaleaf Pro が動作しているマシンの Docker ソケットを通じて Ayakaleaf Pro 自身が起動します。Kubernetes では、これは次のことを意味します。
  • Ayakaleaf Pro Pod を実行できるすべてのノードに Docker Engine がインストールされ、動作していること。
  • 設定するすべての TeX Live イメージが、それらの各ノードの Docker にプルされていること。
kubelet は引き続き containerd を使用できます。Docker Engine には containerd.io が同梱されており、両者は同じデーモンを異なる名前空間で使用します。
Docker のないマネージドノードプール(EKS、GKE、AKS のほとんどのデフォルト)では Sandboxed Compiles を実行できません。Docker Engine をインストールできるノードプールを使用するか、そのようなノードにラベルを付け、nodeSelector で Ayakaleaf Pro をそれらのノードに限定してください。
以下の手順は、Ubuntu 24.04 と kubeadm で構築したクラスターを対象としています。クラスターがすでに存在する場合は、Ayakaleaf Pro を実行するノードで手順 1、2、5 を実施してください。
1

カーネルモジュールと sysctl

2

Docker Engine

0. Docker のセットアップのとおり、Docker のリポジトリから Docker Engine をインストールします。Compose プラグインは不要です。これにより containerd.io もインストールされます。
3

kubelet 用の containerd

Docker のリポジトリにある containerd.io パッケージでは、CRI プラグインが無効になっています。CRI プラグインを有効にする完全なデフォルト設定を書き出し、systemd cgroups に切り替えます。
4

kubeadm、kubelet、kubectl

Installing kubeadm に従ってから、kubeadm init と kubeadm join でクラスターを作成し、ネットワークプラグインをインストールします。たとえば flannel を使う場合:
kubeadm-config.yaml
クラスターにはデフォルトの StorageClass も必要です。テスト用クラスターでは local-path-provisioner が使えます。本番環境では、プラットフォームのブロックストレージ(Longhorn、Ceph、クラウドの CSI ドライバー)を使用してください。
5

TeX Live イメージ

Ayakaleaf Pro を実行できるすべてのノードで、ALL_TEX_LIVE_DOCKER_IMAGES に列挙する TeX Live イメージを Docker でプルします。例:
crictl pull や ctr はここでは役に立ちません。Ayakaleaf Pro は Docker にイメージを要求します。フルイメージは大きく(それぞれ約 28 GB)、一覧は Sandboxed Compiles を参照してください。最初のテストには ghcr.io/ayaka-notes/texlive-basic:2026.1(約 630 MB、最小構成の TeX Live)で十分です。

Q&A

回答: SANDBOXED_COMPILES=false の場合のみ可能です。その場合、コンパイルは Ayakaleaf Pro コンテナ内で、組み込みの小さな TeX Live を使って実行され、LaTeX ドキュメントはそのコンテナがアクセスできるすべてのものを読み書きできてしまいます。推奨しません。Sandboxed Compiles を参照してください。
回答: いいえ。TeX Live コンテナはノードの Docker によって、Pod の外部かつ kubelet から見えない場所で起動されます。上記の systemReserved などを使ってノードにそのための空きメモリを残し、ノードを他の Pod で埋め尽くさないようにしてください。
最終更新日 2026年11月2日