Wdrażanie aplikacji bezstanowej Kubernetes za pomocą narzędzia kubectl na urządzeniu z procesorem GPU Usługi Azure Stack Edge Pro
Artykuł
DOTYCZY:Azure Stack Edge Pro — GPUAzure Stack Edge Pro 2Azure Stack Edge Pro R Azure Stack Edge Mini R
W tym artykule opisano sposób wdrażania aplikacji bezstanowej przy użyciu poleceń kubectl w istniejącym klastrze Kubernetes. W tym artykule przedstawiono również proces tworzenia i konfigurowania zasobników w aplikacji bezstanowej.
Wymagania wstępne
Przed utworzeniem klastra Kubernetes i użyciem kubectl narzędzia wiersza polecenia należy upewnić się, że:
Masz poświadczenia logowania do urządzenia Azure Stack Edge Pro z 1 węzłem.
Program Windows PowerShell 5.0 lub nowszy jest zainstalowany w systemie klienckim systemu Windows w celu uzyskania dostępu do urządzenia Azure Stack Edge Pro. Możesz również mieć dowolnego innego klienta z obsługiwanym systemem operacyjnym. W tym artykule opisano procedurę korzystania z klienta systemu Windows. Aby pobrać najnowszą wersję programu Windows PowerShell, przejdź do sekcji Instalowanie programu Windows PowerShell.
Środowisko obliczeniowe jest włączone na urządzeniu Azure Stack Edge Pro. Aby włączyć obliczenia, przejdź do strony Obliczenia w lokalnym interfejsie użytkownika urządzenia. Następnie wybierz interfejs sieciowy, który chcesz włączyć dla obliczeń. Wybierz opcję Włącz. Włączenie obliczeń powoduje utworzenie przełącznika wirtualnego na urządzeniu w tym interfejsie sieciowym. Aby uzyskać więcej informacji, zobacz Włączanie sieci obliczeniowej w usłudze Azure Stack Edge Pro.
Zapisano konfigurację użytkownika na .C:\Users\<username>\.kube
Zainstalowano plik kubectl.
Teraz możesz rozpocząć uruchamianie wdrożeń aplikacji bezstanowych i zarządzanie nimi na urządzeniu Azure Stack Edge Pro. Przed rozpoczęciem korzystania z kubectlprogramu należy sprawdzić, czy masz poprawną wersję programu kubectl.
Sprawdź, czy masz poprawną wersję narzędzia kubectl i skonfiguruj konfigurację
Aby sprawdzić wersję programu kubectl:
Sprawdź, czy wersja elementu kubectl jest większa lub równa 1.9:
W takim przypadku wersja klienta narzędzia kubectl jest w wersji 1.15.2 i jest zgodna, aby kontynuować.
Pobierz listę zasobników uruchomionych w klastrze Kubernetes. Zasobnik to kontener aplikacji lub proces uruchomiony w klastrze Kubernetes.
PowerShell
kubectl get pods -n <namespace-string>
Poniżej przedstawiono przykład użycia poleceń:
PowerShell
PS C:\WINDOWS\system32> kubectl get pods -n"test1"
No resources found.
PS C:\WINDOWS\system32>
Dane wyjściowe nie powinny zawierać żadnych zasobów (zasobników), ponieważ w klastrze nie są uruchomione żadne aplikacje.
Polecenie wypełni strukturę katalogu "C:\Users\<username>\.kube" plikami konfiguracji. Narzędzie wiersza polecenia kubectl użyje tych plików do tworzenia aplikacji bezstanowych i zarządzania nimi w klastrze Kubernetes.
Ręcznie sprawdź strukturę katalogu "C:\Users\<username>\.kube", aby sprawdzić, czy narzędzie kubectl wypełniło go następującymi podfolderami:
PowerShell
PS C:\Users\username> ls .kube
Directory: C:\Users\user\.kube
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2/18/202011:05 AM cache
d----- 2/18/202011:04 AM http-cache
-a----2/18/202010:41 AM 5377 config
Uwaga
Aby wyświetlić listę wszystkich poleceń kubectl, wpisz kubectl --help.
Tworzenie aplikacji bezstanowej przy użyciu wdrożenia
Po sprawdzeniu, czy wersja wiersza polecenia kubectl jest poprawna i masz wymagane pliki konfiguracji, możesz utworzyć bezstanowe wdrożenie aplikacji.
Zasobnik to podstawowa jednostka wykonywania aplikacji Kubernetes, najmniejszej i najprostszej jednostki w modelu obiektów Kubernetes, który tworzysz lub wdrażasz. Zasobnik hermetyzuje również zasoby magazynu, unikatowy adres IP sieci i opcje, które określają sposób działania kontenerów.
Typ tworzonej aplikacji bezstanowej to wdrożenie serwera internetowego nginx.
Wszystkie polecenia kubectl używane do tworzenia wdrożeń aplikacji bezstanowych i zarządzania nimi muszą określać przestrzeń nazw skojarzoną z konfiguracją. Przestrzeń nazw została utworzona podczas nawiązywania połączenia z klastrem na urządzeniu Azure Stack Edge Pro w samouczku Tworzenie klastra Kubernetes i zarządzanie nim na urządzeniu Microsoft Azure Stack Edge Pro za pomocą polecenia New-HcsKubernetesNamespace.
Aby określić przestrzeń nazw w poleceniu kubectl, użyj polecenia kubectl <command> -n <namespace-string>.
Wykonaj następujące kroki, aby utworzyć wdrożenie serwera nginx:
Zastosuj aplikację bezstanową, tworząc obiekt wdrożenia kubernetes:
W tym przykładzie ścieżka do pliku YAML aplikacji jest źródłem zewnętrznym.
Oto przykładowe użycie polecenia i jego danych wyjściowych:
PowerShell
PS C:\WINDOWS\system32> kubectl apply -f https://k8s.io/examples/application/deployment.yaml -n"test1"
deployment.apps/nginx-deployment created
Alternatywnie możesz zapisać następujący kod markdown na komputerze lokalnym i zastąpić ścieżkę i nazwę pliku w parametrze -f . Na przykład "C:\Kubernetes\deployment.yaml". Konfiguracja wdrożenia aplikacji to:
markdown
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels: app: nginx
replicas: 2 # tells deployment to run 2 pods matching the template
template:
metadata: labels: app: nginx spec: containers: - name: nginx
image: nginx:1.7.9 ports: - containerPort: 80
To polecenie tworzy domyślne wdrożenie nginx, które ma dwa zasobniki do uruchomienia aplikacji.
Uzyskaj opis utworzonego wdrożenia rozwiązania Kubernetes nginx:
Poniżej przedstawiono przykładowe użycie polecenia z danymi wyjściowymi:
PowerShell
PS C:\Users\user> kubectl describe deployment nginx-deployment -n"test1"
Name: nginx-deployment
Namespace: test1
CreationTimestamp: Tue, 18 Feb 202013:35:29 -0800
Labels: <none>
Annotations: deployment.kubernetes.io/revision: 1
kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"name":"nginx-deployment","namespace":"test1"},"spec":{"repl...
Selector: app=nginx
Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app=nginx
Containers:
nginx:
Image: nginx:1.7.9
Port: 80/TCP
Host Port: 0/TCP
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing True NewReplicaSetAvailable
OldReplicaSets: <none>
NewReplicaSet: nginx-deployment-5754944d6c (2/2 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 2m22s deployment-controller Scaled up replica set nginx-deployment-5754944d6c to 2
W przypadku ustawienia replik zobaczysz:
PowerShell
Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable
Ustawienie replik wskazuje, że specyfikacja wdrożenia wymaga dwóch zasobników i że te zasobniki zostały utworzone i zaktualizowane i są gotowe do użycia.
Uwaga
Zestaw replik zastępuje zasobniki, które są usuwane lub przerywane z jakiegokolwiek powodu, takie jak w przypadku awarii węzła urządzenia lub przerwania uaktualniania urządzenia. Z tego powodu zalecamy użycie zestawu replik, nawet jeśli aplikacja wymaga tylko jednego zasobnika.
Aby wyświetlić listę zasobników we wdrożeniu:
PowerShell
kubectl get pods -l app=nginx -n <namespace-string>
Poniżej przedstawiono przykładowe użycie polecenia z danymi wyjściowymi:
PowerShell
PS C:\Users\user> kubectl get pods -l app=nginx -n"test1"
NAME READY STATUS RESTARTS AGE
nginx-deployment-5754944d6c-7wqjd 1/1 Running 03m13s
nginx-deployment-5754944d6c-nfj2h 1/1 Running 03m13s
Dane wyjściowe weryfikują, czy mamy dwa zasobniki o unikatowych nazwach, do których możemy się odwołać przy użyciu narzędzia kubectl.
Aby wyświetlić informacje o pojedynczym zasobniku we wdrożeniu:
PowerShell
kubectl describe pod <podname-string> -n <namespace-string>
Poniżej przedstawiono przykładowe użycie polecenia z danymi wyjściowymi:
PowerShell
PS C:\Users\user> kubectl describe pod "nginx-deployment-5754944d6c-7wqjd" -n"test1"
Name: nginx-deployment-5754944d6c-7wqjd
Namespace: test1
Priority: 0
Node: k8s-1d9qhq2cl-n1/10.128.46.184
Start Time: Tue, 18 Feb 202013:35:29 -0800
Labels: app=nginx
pod-template-hash=5754944d6c
Annotations: <none>
Status: Running
IP: 172.17.246.200
Controlled By: ReplicaSet/nginx-deployment-5754944d6c
Containers:
nginx:
Container ID: docker://280b0f76bfdc14cde481dc4f2b8180cf5fbfc90a084042f679d499f863c66979
Image: nginx:1.7.9
Image ID: docker-pullable://nginx@sha256:e3456c851a152494c3e4ff5fcc26f240206abac0c9d794affb40e0714846c451
Port: 80/TCP
Host Port: 0/TCP
State: Running
Started: Tue, 18 Feb 202013:35:35 -0800
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-8gksw (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
default-token-8gksw:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-8gksw
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for300s
node.kubernetes.io/unreachable:NoExecute for300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 4m58s default-scheduler Successfully assigned test1/nginx-deployment-5754944d6c-7wqjd to k8s-1d9qhq2cl-n1
Normal Pulling 4m57s kubelet, k8s-1d9qhq2cl-n1 Pulling image "nginx:1.7.9"
Normal Pulled 4m52s kubelet, k8s-1d9qhq2cl-n1 Successfully pulled image "nginx:1.7.9"
Normal Created 4m52s kubelet, k8s-1d9qhq2cl-n1 Created container nginx
Normal Started 4m52s kubelet, k8s-1d9qhq2cl-n1 Started container nginx
Ponowne skalowanie wdrożenia aplikacji przez zwiększenie liczby replik
Każdy zasobnik ma uruchamiać pojedyncze wystąpienie danej aplikacji. Jeśli chcesz skalować aplikację w poziomie w celu uruchamiania wielu wystąpień, możesz zwiększyć liczbę zasobników do jednego dla każdego wystąpienia. W rozwiązaniu Kubernetes jest to nazywane replikacją.
Możesz zwiększyć liczbę zasobników we wdrożeniu aplikacji, stosując nowy plik YAML. Plik YAML zmienia ustawienie replik na 4, co zwiększa liczbę zasobników we wdrożeniu na cztery zasobniki. Aby zwiększyć liczbę zasobników z zakresu od 2 do 4:
Alternatywnie możesz zapisać następujący kod markdown na komputerze lokalnym i zastąpić ścieżkę i nazwę pliku parametru -f parametru .kubectl apply Na przykład "C:\Kubernetes\deployment-scale.yaml". Konfiguracja skali wdrożenia aplikacji to:
markdown
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels: app: nginx
replicas: 4 # Update the replicas from 2 to 4
template:
metadata: labels: app: nginx spec: containers: - name: nginx
image: nginx:1.8 ports: - containerPort: 80
Aby sprawdzić, czy wdrożenie ma cztery zasobniki:
PowerShell
kubectl get pods -l app=nginx
Poniżej przedstawiono przykładowe dane wyjściowe wdrożenia skalowania z dwóch do czterech zasobników:
PowerShell
PS C:\WINDOWS\system32> kubectl get pods -l app=nginx
NAME READY STATUS RESTARTS AGE
nginx-deployment-148880595-4zdqq 1/1 Running 025s
nginx-deployment-148880595-6zgi1 1/1 Running 025s
nginx-deployment-148880595-fxcez 1/1 Running 02m
nginx-deployment-148880595-rwovn 1/1 Running 02m
Jak widać z danych wyjściowych, masz teraz cztery zasobniki we wdrożeniu, które mogą uruchamiać aplikację.
Usuwanie wdrożenia
Aby usunąć wdrożenie, w tym wszystkie zasobniki, należy uruchomić kubectl delete deployment określenie nazwy wdrożenia nginx-deployment i nazwy przestrzeni nazw. Aby usunąć wdrożenie:
W tym module poznasz podstawowe składniki infrastruktury Kubernetes, w tym węzły płaszczyzny sterowania, pule węzłów i zasoby obciążenia, takie jak pody, wdrożenia i zbiory.
Dowiedz się, jak wdrożyć środowisko uruchomieniowe usługi IoT Edge i uruchomić moduł usługi IoT Edge na maszynie wirtualnej z systemem Ubuntu uruchomionej na urządzeniu z procesorem GPU Usługi Azure Stack Edge Pro.
Opisuje sposób tworzenia klastra Kubernetes i zarządzania nim na urządzeniu GPU Usługi Azure Stack Edge Pro za pośrednictwem interfejsu programu Windows PowerShell.