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:
Tworzenie, dostęp i korzystanie z maszyn wirtualnych Jak utworzyć nową maszynę wirtualną Linux w OpenStack Dashboard Horizon na NSIS Cloud
Tworzenie grup zabezpieczeń Jak używać grup bezpieczeństwa w Horizon na NSIS Cloud
Dołączanie adresów floating IP Jak dodać lub usunąć Floating IP maszyny wirtualnej w 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.
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:
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.