Używanie narzędzia kubectl do uruchamiania aplikacji stanowej Kubernetes z klasą StorageClass 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 pokazano, jak wdrożyć aplikację stanową pojedynczego wystąpienia na platformie Kubernetes przy użyciu klasy StorageClass w celu dynamicznego aprowizowania magazynu i wdrożenia. Wdrożenie używa kubectl
poleceń w istniejącym klastrze Kubernetes i wdraża aplikację MySQL.
Ta procedura jest przeznaczona dla tych, którzy przejrzeli magazyn Kubernetes na urządzeniu Azure Stack Edge Pro i zapoznali się z pojęciami dotyczącymi magazynu Kubernetes.
Wymagania wstępne
Przed wdrożeniem aplikacji stanowej należy spełnić następujące wymagania wstępne na urządzeniu i klienta, który będzie używany do uzyskiwania dostępu do urządzenia:
Na potrzeby urządzenia
- Masz poświadczenia logowania do urządzenia Azure Stack Edge Pro z 1 węzłem.
- Urządzenie jest aktywowane. Zobacz Aktywowanie urządzenia.
- Urządzenie ma rolę obliczeniową skonfigurowaną za pośrednictwem witryny Azure Portal i ma klaster Kubernetes. Zobacz Konfigurowanie obliczeń.
W przypadku uzyskiwania dostępu do urządzenia przez klienta
- Masz system kliencki z systemem Windows, który będzie używany do uzyskiwania dostępu do urządzenia Azure Stack Edge Pro.
Klient korzysta z programu Windows PowerShell 5.0 lub nowszego. Aby pobrać najnowszą wersję programu Windows PowerShell, przejdź do sekcji Instalowanie programu Windows PowerShell.
Możesz również mieć dowolnego innego klienta z obsługiwanym systemem operacyjnym. W tym artykule opisano procedurę korzystania z klienta systemu Windows.
Wykonano procedurę opisaną w artykule Uzyskiwanie dostępu do klastra Kubernetes na urządzeniu Azure Stack Edge Pro. Masz:
- Utworzono
userns1
przestrzeń nazw za pomocąNew-HcsKubernetesNamespace
polecenia . - Utworzono użytkownika
user1
za pomocąNew-HcsKubernetesUser
polecenia . - Udzielono
user1
dostępu zauserns1
pośrednictwemGrant-HcsKubernetesNamespaceAccess
polecenia . - Zainstalowano na kliencie i zapisano
kubectl
kubeconfig
plik z konfiguracją użytkownika w folderze C:\Users\<username>\.kube.
- Utworzono
Upewnij się, że
kubectl
wersja klienta nie jest niesymetryczna niż jedna wersja z wersji głównej platformy Kubernetes uruchomionej na urządzeniu Azure Stack Edge Pro.- Użyj
kubectl version
polecenia , aby sprawdzić wersję narzędzia kubectl uruchomioną na kliencie. Zanotuj pełną wersję. - W lokalnym interfejsie użytkownika urządzenia Azure Stack Edge Pro przejdź do pozycji Przegląd i zanotuj numer oprogramowania Kubernetes.
- Sprawdź te dwie wersje pod kątem zgodności z mapowaniem podanym w obsługiwanej wersji rozwiązania Kubernetes.
- Użyj
Wszystko jest gotowe do wdrożenia aplikacji stanowej na urządzeniu Azure Stack Edge Pro.
Wdrażanie bazy danych MySQL
Teraz uruchomisz aplikację stanową, tworząc wdrożenie Kubernetes i łącząc ją z wbudowaną klasą StorageClass przy użyciu elementu PersistentVolumeClaim (PVC).
Wszystkie kubectl
polecenia używane do tworzenia wdrożeń aplikacji stanowych i zarządzania nimi muszą określać przestrzeń nazw skojarzoną z konfiguracją. Aby określić przestrzeń nazw w poleceniu kubectl, użyj polecenia kubectl <command> -n <your-namespace>
.
Pobierz listę zasobników uruchomionych w klastrze Kubernetes w przestrzeni nazw. Zasobnik to kontener aplikacji lub proces uruchomiony w klastrze Kubernetes.
kubectl get pods -n <your-namespace>
Oto przykład użycia poleceń:
C:\Users\user>kubectl get pods -n "userns1" No resources found in userns1 namespace. C:\Users\user>
Dane wyjściowe nie powinny zawierać żadnych zasobów (zasobników), ponieważ w klastrze nie są uruchomione żadne aplikacje.
Użyjesz następujących plików YAML. W
mysql-deployment.yml
pliku opisano wdrożenie, które uruchamia program MySQL i odwołuje się do pvc. Plik definiuje instalację woluminu dla/var/lib/mysql
programu , a następnie tworzy pvc, który szuka woluminu 20 GB. Aprowizowana jest dynamiczna sieć PV, a PVC jest powiązana z tym pv.Skopiuj i zapisz następujący
mysql-deployment.yml
plik w folderze na kliencie systemu Windows, którego używasz do uzyskiwania dostępu do urządzenia Azure Stack Edge Pro.apiVersion: v1 kind: Service metadata: name: mysql spec: ports: - port: 3306 selector: app: mysql clusterIP: None --- apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2 kind: Deployment metadata: name: mysql spec: selector: matchLabels: app: mysql strategy: type: Recreate template: metadata: labels: app: mysql spec: containers: - image: mysql:5.6 name: mysql env: # Use secret in real usage - name: MYSQL_ROOT_PASSWORD value: password ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim-sc
Skopiuj i zapisz jako
mysql-pvc.yml
plik w tym samym folderze, w którym zapisanomysql-deployment.yml
plik . Aby użyć wbudowanej klasy StorageClass urządzenia Azure Stack Edge Pro na dołączonym dysku danych, ustawstorageClassName
pole w obiekcie PVC naase-node-local
wartość i wartość accessModes powinna mieć wartośćReadWriteOnce
.Uwaga
Upewnij się, że pliki YAML mają poprawne wcięcie. Aby sprawdzić poprawność, a następnie zapisać, możesz sprawdzić lint YAML.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pv-claim-sc spec: storageClassName: ase-node-local accessModes: - ReadWriteOnce resources: requests: storage: 20Gi
mysql-pvc.yaml
Wdróż plik.kubectl apply -f <URI path to the mysql-pv.yml file> -n <your-user-namespace>
Oto przykładowe dane wyjściowe wdrożenia.
C:\Users\user>kubectl apply -f "C:\stateful-application\mysql-pvc.yml" -n userns1 persistentvolumeclaim/mysql-pv-claim-sc created C:\Users\user>
Zanotuj nazwę utworzonego pvc — w tym przykładzie
mysql-pv-claim-sc
. Będzie on używany w późniejszym kroku.Wdróż zawartość
mysql-deployment.yml
pliku.kubectl apply -f <URI path to mysql-deployment.yml file> -n <your-user-namespace>
Oto przykładowe dane wyjściowe wdrożenia.
C:\Users\user>kubectl apply -f "C:\stateful-application\mysql-deployment.yml" -n userns1 service/mysql created deployment.apps/mysql created C:\Users\user>
Wyświetl informacje o wdrożeniu.
kubectl describe deployment <app-label> -n <your-user-namespace>
C:\Users\user>kubectl describe deployment mysql -n userns1 Name: mysql Namespace: userns1 CreationTimestamp: Thu, 20 Aug 2020 11:14:25 -0700 Labels: <none> Annotations: deployment.kubernetes.io/revision: 1 kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"name":"mysql","namespace":"userns1"},"spec":{"selector":{"matchL... Selector: app=mysql Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable StrategyType: Recreate MinReadySeconds: 0 Pod Template: Labels: app=mysql Containers: mysql: Image: mysql:5.6 Port: 3306/TCP Host Port: 0/TCP Environment: MYSQL_ROOT_PASSWORD: password Mounts: /var/lib/mysql from mysql-persistent-storage (rw) Volumes: mysql-persistent-storage: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: mysql-pv-claim-sc ReadOnly: false Conditions: Type Status Reason ---- ------ ------ Available True MinimumReplicasAvailable Progressing True NewReplicaSetAvailable OldReplicaSets: <none> NewReplicaSet: mysql-695c4d9dcd (1/1 replicas created) Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ScalingReplicaSet 24s deployment-controller Scaled up replica set mysql-695c4d9dcd to 1 C:\Users\user>
Wyświetl listę zasobników utworzonych przez wdrożenie.
kubectl get pods -l <app=label> -n <your-user-namespace>
Oto przykładowe dane wyjściowe.
C:\Users\user>kubectl get pods -l app=mysql -n userns1 NAME READY STATUS RESTARTS AGE mysql-695c4d9dcd-rvzff 1/1 Running 0 40s C:\Users\user>
Sprawdź element PersistentVolumeClaim.
kubectl describe pvc <your-pvc-name>
Oto przykładowe dane wyjściowe.
C:\Users\user>kubectl describe pvc mysql-pv-claim-sc -n userns1 Name: mysql-pv-claim-sc Namespace: userns1 StorageClass: ase-node-local Status: Bound Volume: pvc-dc48253c-82dc-42a4-a7c6-aaddc97c9b8a Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{},"name":"mysql-pv-claim-sc","namespace":"userns1"},"spec":{"... pv.kubernetes.io/bind-completed: yes pv.kubernetes.io/bound-by-controller: yes volume.beta.kubernetes.io/storage-provisioner: rancher.io/local-path volume.kubernetes.io/selected-node: k8s-3q7lhq2cl-3q7lhq2 Finalizers: [kubernetes.io/pvc-protection] Capacity: 20Gi Access Modes: RWO VolumeMode: Filesystem Mounted By: mysql-695c4d9dcd-rvzff Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal WaitForFirstConsumer 71s (x2 over 77s) persistentvolume-controller waiting for first consumer to be created before binding Normal ExternalProvisioning 62s persistentvolume-controller waiting for a volume to be created, either by external provisioner "rancher.io/local-path" or manually created by system administrator Normal Provisioning 62s rancher.io/local-path_local-path-provisioner-6b84988bf9-tx8mz_1896d824-f862-4cbf-912a-c8cc0ca05574 External provisioner is provisioning volume for claim "userns1/mysql-pv-claim-sc" Normal ProvisioningSucceeded 60s rancher.io/local-path_local-path-provisioner-6b84988bf9-tx8mz_1896d824-f862-4cbf-912a-c8cc0ca05574 Successfully provisioned volume pvc-dc48253c-82dc-42a4-a7c6-aaddc97c9b8a C:\Users\user>
Sprawdzanie, czy program MySQL jest uruchomiony
Aby sprawdzić, czy aplikacja jest uruchomiona, wpisz:
kubectl exec <your-pod-with-the-app> -i -t -n <your-namespace> -- mysql -p
Po wyświetleniu monitu podaj hasło. Hasło znajduje się w pliku mysql-deployment
.
Oto przykładowe dane wyjściowe.
C:\Users\user>kubectl exec mysql-695c4d9dcd-rvzff -i -t -n userns1 -- mysql -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.49 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Usuwanie wdrożenia
Aby usunąć wdrożenie, usuń wdrożone obiekty według nazwy. Te obiekty obejmują wdrożenie, usługę i PVC.
kubectl delete deployment <deployment-name>,svc <service-name> -n <your-namespace>
kubectl delete pvc <your-pvc-name> -n <your-namespace>
Oto przykładowe dane wyjściowe polecenia podczas usuwania wdrożenia i usługi.
C:\Users\user>kubectl delete deployment,svc mysql -n userns1
deployment.apps "mysql" deleted
service "mysql" deleted
C:\Users\user>
Poniżej przedstawiono przykładowe dane wyjściowe danych wyjściowych po usunięciu pcv.
C:\Users\user>kubectl delete pvc mysql-pv-claim-sc -n userns1
persistentvolumeclaim "mysql-pv-claim-sc" deleted
C:\Users\user>
Następne kroki
Aby dowiedzieć się, jak skonfigurować sieć za pomocą narzędzia kubectl, zobacz Deploy a stateless application on an Azure Stack Edge Pro device (Wdrażanie aplikacji bezstanowej na urządzeniu Azure Stack Edge Pro)