Sdílet prostřednictvím


Použití kubectl ke spuštění stavové aplikace Kubernetes se službou StorageClass na zařízení Azure Stack Edge Pro GPU

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

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.

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

  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. 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
    
  3. Zkopírujte a uložte jako mysql-pvc.yml soubor do stejné složky, do které jste uložili mysql-deployment.ymlsoubor . Pokud chcete použít integrovanou třídu StorageClass, kterou zařízení Azure Stack Edge Pro na připojeném datovém disku, nastavte storageClassName pole v objektu PVC na ase-node-local a přístupModes by mělo být ReadWriteOnce.

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

  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
    C:\Users\user>
    
  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:  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>
    
  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-695c4d9dcd-rvzff   1/1     Running   0          40s
    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-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.