Sdílet prostřednictvím


Použití kubectl ke spuštění stavové aplikace Kubernetes s trvalýmvolume na zařízení Azure Stack Edge Pro

PLATÍ PRO:Ano pro skladovou položku Pro GPU Azure Stack Edge Pro – GPUAno pro skladovou položku Pro 2Azure Stack Edge Pro 2Ano pro skladovou položku Pro RAzure Stack Edge Pro RAno pro SKU Mini 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í

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řístup userns1 prostřednictvím Grant-HcsKubernetesNamespaceAccess příkazu.
      • Nainstalovaný kubectl v klientovi a uložení kubeconfig souboru s konfigurací uživatele do složky C:\Users\<username>\.kube.
    • 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.

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í.
  1. 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.

    Místní sdílená složka Edge pro PV

    1. 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.

      Výběr existující místní sdílené složky pro pv

    2. Po zobrazení výzvy vyberte Připojit a potvrďte připojení.

      Připojení existující místní sdílené složky pro pv

  2. 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>.

  1. 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.

  2. 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/mysqla 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
    
  3. Zkopírujte a uložte jako mysql-pv.yml soubor do stejné složky, do které jste uložili mysql-deployment.ymlsoubor . Chcete-li použít sdílenou složku SMB, kterou jste vytvořili kubectldříve, nastavte volumeName 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
    
  4. 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.

  5. 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
    
  6. 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>
    
  7. 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>
    
  8. 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ě:

  1. 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.

    Odpojení místní sdílené složky pro pv

  2. 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.

    Odstranění místní sdílené složky pro 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.