Nasadenie MySQL v k3s s perzistentným NFS úložiskom

Vytvorené: 24. 8. 2025 08:40 Aktualizované: 27. 8. 2025 13:14
Vyriešené
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

  1. Cieľ / Problém na vyriešenie: Keďže v používanej inštalácii n8n chýbal vstavaný SQLite uzol, 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.
  2. 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
  3. Kľúčové postupy a konfiguračné kroky:
  4. Pridanie repozitára bitnami do Helmu.
  5. Vytvorenie konfiguračného súboru mysql-values.yaml pre Helm chart.
  6. Inštalácia pomocou príkazu helm install mysql bitnami/mysql ....
  7. Riešenie problémov so spustením podu na NFS úložisku.
  8. Finálne rozhodnutie presunúť úložisko z NFS na lokálny disk (local-path) pre maximálny výkon.
  9. 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

  10. 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 uninstall nezmaže PersistentVolumeClaim.
    • 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.
  11. 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.
Vyriešené: 17. 8. 2025