Obsah článku
title: "Nasadenie MySQL v k3s s perzistentným NFS úložiskom"
slug: "k3s-deploy-mysql-nfs-helm"
technologies: ["Kubernetes (k3s)", "MySQL", "Helm", "NFS", "YAML", "n8n"]
tags: ["kubernetes", "k3s", "database", "mysql", "helm", "nfs", "storage", "persistent-storage"]
date_solved: "2025-08-17"
Projekt/Téma: Nasadenie MySQL v k3s s perzistentným NFS úložiskom
- Cieľ / Problém na vyriešenie:
Keďže v používanej inštalácii n8n chýbal vstavaný
SQLiteuzol, bolo potrebné nasadiť externú databázu. Cieľom bolo nasadiť funkčnú a stabilnú inštanciu MySQL do k3s klastra, ktorá bude používať perzistentné úložisko na externom NASe. - Použité technológie a nástroje:
- Orchestrácia: Kubernetes (k3s)
- Databáza: MySQL (cez Bitnami Helm chart)
- Správca balíčkov: Helm
- Úložisko: NFS, neskôr lokálne NVMe na uzle
- Konfigurácia: YAML
- Spotrebiteľ: n8n
- Kľúčové postupy a konfiguračné kroky:
- Pridanie repozitára
bitnamido Helmu. - Vytvorenie konfiguračného súboru
mysql-values.yamlpre Helm chart. - Inštalácia pomocou príkazu
helm install mysql bitnami/mysql .... - Riešenie problémov so spustením podu na NFS úložisku.
- Finálne rozhodnutie presunúť úložisko z NFS na lokálny disk (
local-path) pre maximálny výkon. -
Výsledné kódy a skripty:
- Finálny
mysql-values.yaml(pre NFS riešenie):auth: rootPassword: "..." database: "n8n_data" username: "n8n_user" password: "..."
primary: persistence: enabled: true storageClass: "nfs-client" size: 10Gi
volumePermissions: enabled: true
configuration: |- [mysqld] innodb_flush_method = O_DIRECT innodb_use_native_aio = 0
- Finálny
- Zistené problémy a riešenia (Gotchas):
- Problém: Pod MySQL sa opakovane reštartoval s chybou
data files are corrupt. - Riešenie: Problém bol identifikovaný ako konflikt medzi I/O operáciami databázového enginu InnoDB a podporou zamykania súborov (file locking) v protokole NFS. Riešením bolo pridanie špecifickej MySQL konfigurácie do
mysql-values.yaml, ktorá upraví správanie InnoDB tak, aby bolo kompatibilné s NFS. - Problém: Počas hľadania riešenia sa ukázalo, že
helm uninstallnezmažePersistentVolumeClaim. - Riešenie: Bolo nutné manuálne zmazať PVC príkazom
kubectl delete pvc ...a následne zmazať aj archivovaný adresár na NASe, aby bola zaistená čistá reinštalácia.
- Problém: Pod MySQL sa opakovane reštartoval s chybou
- Finálny výsledok / Záver:
Po vyriešení problémov s perzistentným úložiskom na NFS bola MySQL úspešne nasadená do k3s klastra. Pre zvýšenie výkonu bolo jej úložisko nakoniec presunuté na lokálny NVMe disk master uzla, čím sa dosiahla maximálna rýchlosť a stabilita.