Použití kubectl ke spuštění stavové aplikace Kubernetes s trvalýmvolume na zařízení Azure Stack Edge Pro
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í trvalých prostředků (PV) 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.
Azure Stack Edge Pro také podporuje spouštění kontejnerů Azure SQL Edge a tyto kontejnery je možné nasadit podobným způsobem, jak je popsáno zde pro MySQL. Další informace najdete v tématu Azure SQL Edge.
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.
Zřízení statické pv
Pokud chcete staticky zřídit pv, musíte na svém zařízení vytvořit sdílenou složku. Pomocí těchto kroků zřiďte pv pro sdílenou složku SMB.
Poznámka:
- Konkrétní příklad použitý v tomto článku s postupy nefunguje se sdílenými složkami NFS. Obecně platí, že sdílené složky NFS je možné zřídit na zařízení Azure Stack Edge s nekonfázovými aplikacemi.
- Pokud chcete nasadit stavové aplikace, které používají svazky úložiště k zajištění trvalého úložiště, doporučujeme použít
StatefulSet
. Tento příklad se používáDeployment
pouze s jednou replikou a je vhodný pro vývoj a testování.
Zvolte, jestli chcete vytvořit sdílenou složku Edge nebo místní sdílenou složku Edge. Podle pokynů v části Přidat sdílenou složku vytvořte sdílenou složku. Nezapomeňte zaškrtnout políčko Použít sdílenou složku s výpočetními prostředky Edge.
Pokud se rozhodnete použít existující sdílenou složku, nemusíte vytvářet novou sdílenou složku, ale budete ji muset připojit.
Na webu Azure Portal pro váš prostředek Azure Stack Edge přejděte na Sdílené složky. V existujícím seznamu sdílených složek vyberte a klikněte na sdílenou složku, kterou chcete použít.
Po zobrazení výzvy vyberte Připojit a potvrďte připojení.
Poznamenejte si název sdílené složky. Po vytvoření této sdílené složky se v clusteru Kubernetes automaticky vytvoří objekt trvalého svazku odpovídající vytvořené sdílené složce SMB.
Nasazení MySQL
Teď spustíte stavovou aplikaci tak, že vytvoříte nasazení Kubernetes a připojíte ji k pv, kterou jste vytvořili v předchozím kroku pomocí 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.Tato deklarace identity je splněna všemi existujícími pv, které byly staticky zřízeny při vytváření sdílené složky v předchozím kroku. Na vašem zařízení se pro každou sdílenou složku vytvoří velká PV 32 TB. PV splňuje požadavky stanovené PVC a PVC by měly být vázány 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
Zkopírujte a uložte jako
mysql-pv.yml
soubor do stejné složky, do které jste uložilimysql-deployment.yml
soubor . Chcete-li použít sdílenou složku SMB, kterou jste vytvořilikubectl
dříve, nastavtevolumeName
pole v objektu PVC na název sdílené složky.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 spec: volumeName: <smb-share-name-here> storageClassName: "" accessModes: - ReadWriteOnce resources: requests: storage: 20Gi
mysql-pv.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-pv.yml" -n userns1 persistentvolumeclaim/mysql-pv-claim created C:\Users\user>
Poznamenejte si název vytvořeného PVC. 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
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: Tue, 18 Aug 2020 09:44:58 -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 ReadOnly: false Conditions: Type Status Reason ---- ------ ------ Progressing True NewReplicaSetAvailable Available True MinimumReplicasAvailable OldReplicaSets: <none> NewReplicaSet: mysql-c85f7f79c (1/1 replicas created) Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ScalingReplicaSet 10m deployment-controller Scaled up replica set mysql-c85f7f79c 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-c85f7f79c-vzz7j 1/1 Running 1 14m 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 -n userns1 Name: mysql-pv-claim Namespace: userns1 StorageClass: Status: Bound Volume: mylocalsmbshare1 Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{},"name":"mysql-pv-claim","namespace":"userns1"},"spec":{"acc... pv.kubernetes.io/bind-completed: yes Finalizers: [kubernetes.io/pvc-protection] Capacity: 32Ti Access Modes: RWO,RWX VolumeMode: Filesystem Mounted By: mysql-c85f7f79c-vzz7j Events: <none> C:\Users\user>
Ověření, že je MySQL spuštěný
Pokud chcete spustit příkaz proti kontejneru v podu, na kterém běží MySQL, zadejte:
kubectl exec <your-pod-with-the-app> -i -t -n <your-namespace> -- mysql
Tady je ukázkový výstup.
C:\Users\user>kubectl exec mysql-c85f7f79c-vzz7j -i -t -n userns1 -- mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
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 -n userns1
persistentvolumeclaim "mysql-pv-claim" deleted
C:\Users\user>
Pv již není vázán na PVC, protože PVC byl odstraněn. S tím, jak byla pv zřízena při vytvoření sdílené složky, budete muset sdílenou složku odstranit. Postupujte následovně:
Odpojte sdílenou složku. Na webu Azure Portal přejděte do sdílených složek prostředků > Azure Stack Edge a vyberte a klikněte na sdílenou složku, kterou chcete odpojit. Vyberte Odpojit a potvrďte operaci. Počkejte, až se sdílená složka neodpojí. Odpojení uvolní sdílenou složku (a proto přidruženou trvalouvolume) z clusteru Kubernetes.
Teď můžete vybrat Odstranit a potvrdit odstranění a odstranit sdílenou složku. To by také mělo odstranit sdílenou složku a odpovídající pv.
Další kroky
Pokud chcete zjistit, jak dynamicky zřizovat úložiště, přečtěte si téma Nasazení stavové aplikace prostřednictvím dynamického zřizování na zařízení Azure Stack Edge Pro.