Wdrażanie aplikacji bezstanowej Kubernetes za pomocą narzędzia kubectl na urządzeniu z procesorem GPU Usługi Azure Stack Edge Pro
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.
Urządzenie Azure Stack Edge Pro ma serwer klastra Kubernetes z uruchomioną wersją 1.9 lub nowszą. Aby uzyskać więcej informacji, zobacz Tworzenie klastra Kubernetes i zarządzanie nim na urządzeniu Microsoft Azure Stack Edge Pro.
Zainstalowano program
kubectl
.
Wdrażanie aplikacji bezstanowej
Przed rozpoczęciem należy mieć:
- Utworzono klaster Kubernetes.
- Konfigurowanie przestrzeni nazw.
- Skojarzył użytkownika z przestrzenią nazw.
- 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 kubectl
programu 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:kubectl version
Poniżej przedstawiono przykładowe dane wyjściowe:
PS C:\WINDOWS\system32> C:\windows\system32\kubectl.exe version Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.2", GitCommit:"f6278300bebbb750328ac16ee6dd3aa7d3549568", GitTreeState:"clean", BuildDate:"2019-08-05T09:23:26Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"windows/amd64"} Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.1", GitCommit:"4485c6f18cee9a5d3c3b4e523bd27972b1b53892", GitTreeState:"clean", BuildDate:"2019-07-18T09:09:21Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
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.
kubectl get pods -n <namespace-string>
Poniżej przedstawiono przykład użycia poleceń:
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:
PS C:\Users\username> ls .kube Directory: C:\Users\user\.kube Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2/18/2020 11:05 AM cache d----- 2/18/2020 11:04 AM http-cache -a---- 2/18/2020 10: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:
kubectl apply -f <yaml-file> -n <namespace-string>
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:
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:
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:
kubectl describe deployment nginx-deployment -n <namespace-string>
Poniżej przedstawiono przykładowe użycie polecenia z danymi wyjściowymi:
PS C:\Users\user> kubectl describe deployment nginx-deployment -n "test1" Name: nginx-deployment Namespace: test1 CreationTimestamp: Tue, 18 Feb 2020 13: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:
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:
kubectl get pods -l app=nginx -n <namespace-string>
Poniżej przedstawiono przykładowe użycie polecenia z danymi wyjściowymi:
PS C:\Users\user> kubectl get pods -l app=nginx -n "test1" NAME READY STATUS RESTARTS AGE nginx-deployment-5754944d6c-7wqjd 1/1 Running 0 3m13s nginx-deployment-5754944d6c-nfj2h 1/1 Running 0 3m13s
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:
kubectl describe pod <podname-string> -n <namespace-string>
Poniżej przedstawiono przykładowe użycie polecenia z danymi wyjściowymi:
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 2020 13: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 2020 13: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 for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
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:
PS C:\WINDOWS\system32> kubectl apply -f https://k8s.io/examples/application/deployment-scale.yaml -n "test1"
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:
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:
kubectl get pods -l app=nginx
Poniżej przedstawiono przykładowe dane wyjściowe wdrożenia skalowania z dwóch do czterech zasobników:
PS C:\WINDOWS\system32> kubectl get pods -l app=nginx
NAME READY STATUS RESTARTS AGE
nginx-deployment-148880595-4zdqq 1/1 Running 0 25s
nginx-deployment-148880595-6zgi1 1/1 Running 0 25s
nginx-deployment-148880595-fxcez 1/1 Running 0 2m
nginx-deployment-148880595-rwovn 1/1 Running 0 2m
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:
kubectl delete deployment nginx-deployment -n <namespace-string>
Poniżej przedstawiono przykład użycia polecenia z danymi wyjściowymi:
PS C:\Users\user> kubectl delete deployment nginx-deployment -n "test1"
deployment.extensions "nginx-deployment" deleted