Skip to main content
  • »
  • KUBERNETES »
  • Tworzenie i dostęp do serwera NFS z Kubernetes na NSIS

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

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

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

Co będziemy omawiać

  • Konfiguracja serwera NFS na maszynie wirtualnej

  • Skonfiguruj folder udostępniony na serwerze NFS

  • Udostępnianie udziału

  • Wdrożenie kapsuły testowej w klastrze

Wymagania wstępne

Nr 1 Hosting

Potrzebne 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-cloud-innovation.cloudferro.com/login.

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

Zakładamy, że znasz podstawy systemu Linux i 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 Jak utworzyć klaster Kubernetes przy użyciu NSIS OpenStack Magnum.

Nr 4 kubectl dostęp do chmury Kubernetes

Jak zwykle podczas pracy z klastrami Kubernetes, konieczne będzie użycie polecenia kubectl: 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

Jako warunek wstępny do utworzenia serwera NFS na maszynie wirtualnej, najpierw na karcie Sieć w Horizon utwórz grupę zabezpieczeń zezwalającą na ruch przychodzący z portu 2049.

Następnie utwórz maszynę wirtualną Ubuntu z Horizon. W oknie dialogowym wyboru Sieci 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_2049.png

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

Skonfiguruj pływający adres IP na serwerze maszyny wirtualnej, aby włączyć SSH do tej maszyny wirtualnej.

2. Skonfiguruj folder udostępniony na serwerze NFS

SSH do maszyny wirtualnej, a następnie uruchom:

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

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

sudo mkdir /mnt/myshare

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

sudo chown nobody:nogroup /mnt/myshare

Zmień również uprawnienia folderu, aby każdy mógł modyfikować pliki:

sudo chmod 777 /mnt/myshare

Edytuj 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 mogą uzyskać dostęp do tego udziału z podfolderami 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ą:

sudo systemctl restart nfs-kernel-server

Wyjście z maszyny wirtualnej serwera NFS.

4. Wdrożenie kapsuły testowej w klastrze

Upewnij się, że masz dostęp do klastra za pomocą kubectl. Miej 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 naszej sieci klastra. Zastosuj manifest yaml z:

kubectl apply -f test-pod.yaml

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

kubectl exec -it test-pod -- sh

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

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

Aby to sprawdzić, należy utworzyć plik testfile w tym folderze, a następnie zamknąć kontener. Następnie można wrócić SSH do serwera NFS i sprawdzić, czy plik testfile jest dostępny w folderze /mnt/myshare.

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