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:
Creating, accessing and using virtual machines 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 pływających adresów 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 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.
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:
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.