Skip to main content

Tworzenie serwera NFS i dostęp do niego z Kubernetes na NSIS

Aby umożliwić jednoczesne przechowywanie danych do odczytu i zapisu dla wielu podów uruchomionych w klastrze Kubernetes, można użyć serwera NFS.

W tym przewodniku utworzymy serwer NFS na maszynie wirtualnej, następnie utworzymy na tym serwerze udział plików i zademonstrujemy dostęp do niego z poda Kubernetes.

Co zostanie omówione?

  • Konfiguracja serwera NFS na maszynie wirtualnej

  • Konfiguracja współdzielenia folderu na serwerze NFS

  • Udostępnianie udziału

  • Wdrożenie poda testowego w klastrze

Wymagania wstępne

Nr 1 Hosting

Wymagane jest konto hostingowe NSIS z interfejsem Horizon https://horizon.cloudferro.com.

Zasoby, których potrzebujesz i używasz, będą odzwierciedlały stan Twojego portfela konta. Sprawdź statystyki swojego konta na stronie https://NSIS-Cloudcloud-innovation.cloudferro.com/login.

Nr 2 Znajomość Linuksa i zarządzania chmurą

Zakładamy, że znasz podstawy systemu Linux oraz zarządzania chmurą NSIS:

Nr 3 Uruchomiony klaster Kubernetes

Do wypróbowania poleceń potrzebny będzie również klaster Kubernetes. Aby utworzyć go od podstaw, zobacz artykuł Jak utworzyć klaster Kubernetes przy użyciu NSIS OpenStack Magnum.

Nr 4 Dostęp kubectl do chmury Kubernetes

Jak zwykle podczas pracy z klastrami Kubernetes, konieczne będzie użycie polecenia kubectl, patrz artykuł Jak uzyskać dostęp do klastra Kubernetes po wdrożeniu przy użyciu Kubectl na NSIS OpenStack Magnum?.

1. Konfiguracja serwera NFS na maszynie wirtualnej

Wymaganiem wstępnym utworzenia serwera NFS na maszynie wirtualnej, jest utworzenie na karcie Network w Horizon grupy zabezpieczeń zezwalającej na ruch przychodzący z portu 2049.

Następnie utwórz w Horizon maszynę wirtualną Ubuntu. W oknie dialogowym Network podłącz maszynę wirtualną do sieci klastra Kubernetes (nie do sieci projektu ani sieci EODATA). Dzięki temu węzły klastra będą miały dostęp do serwera NFS przez sieć prywatną. Następnie dodaj grupę zabezpieczeń z otwartym portem 2049.

../_images/nfs_server_20491.png

Po utworzeniu maszyny wirtualnej widać, że ma ona przypisany adres prywatny. W tym przypadku niech adresem prywatnym będzie 10.0.0.118. Zanotuj ten adres, aby później użyć go w konfiguracji NFS.

Skonfiguruj adres floating IP na serwerze maszyny wirtualnej, aby włączyć dla niej SSH.

2. Konfiguracja folderu udostępnionego na serwerze NFS

Połącz się przez SSH z maszyną wirtualną, a następnie uruchom polecenia:

sudo apt-get update
sudo apt-get install nfs-kernel-server

W maszynie wirtualnej serwera NFS utwórz udostępniany folder:

sudo mkdir /mnt/myshare

Zmień właściciela udostępnionego katalogu tak, aby nikt nie był jego właścicielem. W ten sposób każdy użytkownik na kliencie może uzyskać dostęp do udostępnionego katalogu. Można zastosować bardziej restrykcyjne ustawienia.

sudo chown nobody:nogroup /mnt/myshare

Zmień również uprawnienia dostępu do katalogu, aby każdy mógł modyfikować pliki:

sudo chmod 777 /mnt/myshare

Wyedytuj plik /etc/exports i dodaj następujący wiersz:

/mnt/myshare 10.0.0.0/24(rw,sync,no_subtree_check)

Oznacza to, że wszystkie węzły w sieci klastra będą mogły uzyskać dostęp do tego udziału z jego podkatalogami w trybie odczytu i zapisu.

3. Udostępnienie udziału

Uruchom poniższe polecenie, aby udostępnić udział:

sudo exportfs -a

Następnie uruchom ponownie serwer NFS za pomocą polecenia:

sudo systemctl restart nfs-kernel-server

Wyjdź z maszyny wirtualnej serwera NFS.

4. Wdrożenie poda testowego w klastrze

Upewnij się, że masz dostęp do klastra za pomocą kubectl. Przygotuj plik test-pod.yaml z następującą zawartością:

test-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
  namespace: default
spec:
  containers:
  - image: nginx
    name: test-container
    volumeMounts:
    - mountPath: /my-nfs-data
      name: test-volume
  volumes:
  - name: test-volume
    nfs:
      server: 10.0.0.118
      path: /mnt/myshare

Blok serwera NFS odnosi się do prywatnego adresu IP maszyny serwera NFS, która znajduje się w sieci klastra. Zastosuj manifest yaml za pomocą polecenia:

kubectl apply -f test-pod.yaml

Następnie można wejść do powłoki test-pod za pomocą poniższego polecenia:

kubectl exec -it test-pod -- sh

i sprawdzić, czy katalog my-nfs-data został poprawnie zamontowany:

../_images/image2023-6-1_17-6-31.png

Aby to sprawdzić, należy utworzyć w tym katalogu plik testfile, a następnie zamknąć kontener. Następnie można połączyć się ponownie przez SSH do serwera NFS i sprawdzić, czy plik testfile jest dostępny w katalogu /mnt/myshare.

../_images/image2023-6-1_17-8-51.png