diff --git a/astrololo/README-stan-prezentacji.md b/astrololo/README-stan-prezentacji.md index d546cdc..a70d9cf 100644 --- a/astrololo/README-stan-prezentacji.md +++ b/astrololo/README-stan-prezentacji.md @@ -217,9 +217,47 @@ sudo ls -ld /mnt/Tank1/astrololo-state Zestaw, który DZIAŁA: kontener jako `uid=0(root)`, udział z `ro: false` i `mapall: root`, katalog `drwxrwx--- root root`. -Po każdej zmianie eksportu: `midclt call service.restart nfs`, a potem -`kubectl -n astrololo rollout restart deploy/presentation`. Sama zmiana -konfiguracji nie przeładowuje eksportów. +### ⚠️ Po zmianie eksportu `rollout restart` NIE WYSTARCZA + +To kosztowało najwięcej czasu przy pierwszym wdrożeniu, więc zapisane wprost. + +**Objaw:** eksport poprawiony, `service.restart nfs` wykonany, pod zrestartowany — +a zapis z poda nadal odbija się o `Permission denied`. Przy czym **ręczne +zamontowanie tego samego eksportu z tego samego węzła działa** i pozwala pisać. + +**Co z tym zrobić:** doprowadzić do stanu, w którym ŻADEN pod nie trzyma tego +montowania. + +```bash +kubectl -n astrololo scale deploy/presentation --replicas=0 +kubectl -n astrololo wait --for=delete pod -l app=presentation --timeout=90s +kubectl -n astrololo scale deploy/presentation --replicas=1 +kubectl -n astrololo rollout status deploy/presentation +``` + +`rollout restart` tego nie osiąga, bo stary i nowy pod na chwilę WSPÓŁISTNIEJĄ — +w logu widać `1 old replicas are pending termination`. Montowanie ani na moment +nie zostaje bez użytkownika. (W ArgoCD ten sam skutek daje `force delete` poda.) + +**Dlaczego (hipoteza, nie potwierdzona u źródła):** jądro współdzieli strukturę +montowania NFS między montowania tego samego eksportu na węźle, razem z cache +odpowiedzi ACCESS. Nowy pod podpina się do żywego montowania i dziedziczy +odpowiedź sprzed zmiany eksportu. + +**Test, który rozstrzyga, czy winny jest serwer czy klient** — montaż ręczny +z węzła, z pominięciem Kubernetesa: + +```bash +ssh 'sudo mkdir -p /mnt/t && sudo mount -t nfs 192.168.1.34:/mnt/Tank1/astrololo-state /mnt/t \ + && sudo touch /mnt/t/proba && echo SERWER-OK || echo SERWER-NIE; sudo umount /mnt/t' +``` + +`SERWER-OK` przy jednoczesnym `Permission denied` w podzie znaczy, że konfiguracja +NAS-a jest dobra i **nie ma czego na nim poprawiać** — problem jest po stronie +klienta. + +Osobno pamiętaj: sama zmiana konfiguracji udziału nie przeładowuje eksportów. +Po każdej zmianie `midclt call service.restart nfs`. ---