Použití kubectl ke spuštění stavové aplikace Kubernetes se službou StorageClass na zařízení Azure Stack Edge Pro GPU
PLATÍ PRO: Azure Stack Edge Pro – GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
V tomto článku se dozvíte, jak nasadit stavovou aplikaci s jednou instancí v Kubernetes pomocí třídy StorageClass k dynamickému zřizování úložiště a nasazení. Nasazení používá kubectl
příkazy v existujícím clusteru Kubernetes a nasadí aplikaci MySQL.
Tento postup je určený pro ty, kteří si prošli úložiště Kubernetes na zařízení Azure Stack Edge Pro a znají koncepty úložiště Kubernetes.
Požadavky
Než budete moct nasadit stavovou aplikaci, dokončete na zařízení následující požadavky a klienta, který použijete pro přístup k zařízení:
Zařízení
- Máte přihlašovací údaje k zařízení Azure Stack Edge Pro s 1 uzly.
- Zařízení je aktivované. Viz Aktivace zařízení.
- Zařízení má nakonfigurovanou výpočetní roli prostřednictvím webu Azure Portal a má cluster Kubernetes. Viz Konfigurace výpočetních prostředků.
Pro klienty přistupující k zařízení
- Máte klientský systém Windows, který se použije pro přístup k zařízení Azure Stack Edge Pro.
Klient používá Windows PowerShell 5.0 nebo novější. Pokud si chcete stáhnout nejnovější verzi Windows PowerShellu, přejděte do části Instalace Windows PowerShellu.
Můžete mít i jakéhokoli jiného klienta s podporovaným operačním systémem . Tento článek popisuje postup při použití klienta systému Windows.
Dokončili jste postup popsaný v accessovém clusteru Kubernetes na zařízení Azure Stack Edge Pro. Máte:
- Vytvořili jste
userns1
obor názvů pomocíNew-HcsKubernetesNamespace
příkazu. - Vytvořili jste uživatele
user1
pomocíNew-HcsKubernetesUser
příkazu. user1
Byl udělen přístupuserns1
prostřednictvímGrant-HcsKubernetesNamespaceAccess
příkazu.- Nainstalovaný
kubectl
v klientovi a uloženíkubeconfig
souboru s konfigurací uživatele do složky C:\Users\<username>\.kube.
- Vytvořili jste
Ujistěte se, že
kubectl
verze klienta není více než jedna verze z hlavní verze Kubernetes spuštěné na vašem zařízení Azure Stack Edge Pro.- Slouží
kubectl version
ke kontrole verze kubectl spuštěné v klientovi. Poznamenejte si plnou verzi. - V místním uživatelském rozhraní vašeho zařízení Azure Stack Edge Pro přejděte na Přehled a poznamenejte si číslo softwaru Kubernetes.
- Ověřte, jestli tyto dvě verze nejsou kompatibilní s mapováním, které je součástí podporované verze Kubernetes.
- Slouží
Jste připraveni nasadit stavovou aplikaci na zařízení Azure Stack Edge Pro.
Nasazení MySQL
Teď spustíte stavovou aplikaci tak, že vytvoříte nasazení Kubernetes a připojíte ji k integrované třídě StorageClass pomocí třídy PersistentVolumeClaim (PVC).
Všechny kubectl
příkazy, které používáte k vytváření a správě nasazení stavových aplikací, musí určovat obor názvů přidružený ke konfiguraci. Chcete-li zadat obor názvů v příkazu kubectl, použijte kubectl <command> -n <your-namespace>
.
Získejte seznam podů spuštěných v clusteru Kubernetes ve vašem oboru názvů. Pod je kontejner aplikace nebo proces spuštěný v clusteru Kubernetes.
kubectl get pods -n <your-namespace>
Tady je příklad použití příkazů:
C:\Users\user>kubectl get pods -n "userns1" No resources found in userns1 namespace. C:\Users\user>
Výstup by měl uvést, že se nenašly žádné prostředky (pody), protože v clusteru nejsou spuštěné žádné aplikace.
Použijete následující soubory YAML. Tento
mysql-deployment.yml
soubor popisuje nasazení, na kterém běží MySQL, a odkazuje na PVC. Soubor definuje připojení svazku pro/var/lib/mysql
a pak vytvoří PVC, který hledá 20GB svazek. Dynamická PV je zřízena a PVC je vázána na tuto PV.Zkopírujte a uložte následující
mysql-deployment.yml
soubor do složky v klientovi Windows, který používáte pro přístup k zařízení 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
Zkopírujte a uložte jako
mysql-pvc.yml
soubor do stejné složky, do které jste uložilimysql-deployment.yml
soubor . Pokud chcete použít integrovanou třídu StorageClass, kterou zařízení Azure Stack Edge Pro na připojeném datovém disku, nastavtestorageClassName
pole v objektu PVC naase-node-local
a přístupModes by mělo býtReadWriteOnce
.Poznámka:
Ujistěte se, že soubory YAML mají správné odsazení. Ověření a uložení můžete ověřit pomocí 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
Nasaďte soubor.kubectl apply -f <URI path to the mysql-pv.yml file> -n <your-user-namespace>
Tady je ukázkový výstup nasazení.
C:\Users\user>kubectl apply -f "C:\stateful-application\mysql-pvc.yml" -n userns1 persistentvolumeclaim/mysql-pv-claim-sc created C:\Users\user>
Poznamenejte si název PVC vytvořený - v tomto příkladu .
mysql-pv-claim-sc
Použijete ho v pozdějším kroku.Nasaďte obsah
mysql-deployment.yml
souboru.kubectl apply -f <URI path to mysql-deployment.yml file> -n <your-user-namespace>
Tady je ukázkový výstup nasazení.
C:\Users\user>kubectl apply -f "C:\stateful-application\mysql-deployment.yml" -n userns1 service/mysql created deployment.apps/mysql created C:\Users\user>
Zobrazí informace o nasazení.
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>
Zobrazí seznam podů vytvořených nasazením.
kubectl get pods -l <app=label> -n <your-user-namespace>
Tady je ukázkový výstup.
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>
Zkontrolujte PersistentVolumeClaim.
kubectl describe pvc <your-pvc-name>
Tady je ukázkový výstup.
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>
Ověření, že je MySQL spuštěný
Pokud chcete ověřit, že je aplikace spuštěná, zadejte:
kubectl exec <your-pod-with-the-app> -i -t -n <your-namespace> -- mysql -p
Po zobrazení výzvy zadejte heslo. Heslo je v mysql-deployment
souboru.
Tady je ukázkový výstup.
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>
Odstranění nasazení
Pokud chcete nasazení odstranit, odstraňte nasazené objekty podle názvu. Mezi tyto objekty patří nasazení, služba a PVC.
kubectl delete deployment <deployment-name>,svc <service-name> -n <your-namespace>
kubectl delete pvc <your-pvc-name> -n <your-namespace>
Tady je ukázkový výstup odstranění nasazení a služby.
C:\Users\user>kubectl delete deployment,svc mysql -n userns1
deployment.apps "mysql" deleted
service "mysql" deleted
C:\Users\user>
Tady je ukázkový výstup při odstranění PVC.
C:\Users\user>kubectl delete pvc mysql-pv-claim-sc -n userns1
persistentvolumeclaim "mysql-pv-claim-sc" deleted
C:\Users\user>
Další kroky
Informace o konfiguraci sítě přes kubectl najdete v tématu Nasazení bezstavové aplikace na zařízení Azure Stack Edge Pro.