Nasazení kontejneru Azure SQL Edge v Kubernetes

Důležité

Azure SQL Edge už nepodporuje platformu ARM64.

Azure SQL Edge je možné nasadit do clusteru Kubernetes jako modul IoT Edge prostřednictvím Azure IoT Edge spuštěného v Kubernetes nebo jako samostatný pod kontejneru. Ve zbývající části tohoto článku se zaměříme na nasazení samostatného kontejneru v clusteru Kubernetes. Informace o nasazení Azure IoT Edge v Kubernetes najdete v tématu Azure IoT Edge v Kubernetes (Preview).

Tento kurz ukazuje, jak nakonfigurovat vysoce dostupnou instanci Azure SQL Edge v kontejneru v clusteru Kubernetes.

  • Vytvoření hesla SA
  • Vytvoření úložiště
  • Vytvoření nasazení
  • Připojení pomocí SQL Server Management Studio (SSMS)
  • Ověření selhání a obnovení

Kubernetes 1.6 a novější podporuje třídy úložiště, trvalé deklarace identity svazků a typ svazku disku Azure. Instance Azure SQL Edge můžete vytvářet a spravovat nativně v Kubernetes. Příklad v tomto článku ukazuje, jak vytvořit nasazení pro dosažení konfigurace vysoké dostupnosti podobné instanci clusteru s podporou převzetí služeb při selhání sdíleného disku. V této konfiguraci hraje Kubernetes roli orchestrátora clusteru. Když instance Azure SQL Edge v kontejneru selže, orchestrátor spustí jinou instanci kontejneru, která se připojí ke stejnému trvalému úložišti.

Diagram Azure SQL Edge v clusteru Kubernetes

V předchozím diagramu azure-sql-edge je kontejner v podu. Kubernetes orchestruje prostředky v clusteru. Sada replik zajišťuje, že se pod po selhání uzlu automaticky obnoví. Aplikace se připojují ke službě. V tomto případě služba představuje nástroj pro vyrovnávání zatížení, který hostuje IP adresu, která zůstane stejná i po selhání azure-sql-edgenástroje .

V následujícím diagramu došlo k selhání kontejneru azure-sql-edge . Kubernetes jako orchestrátor zaručuje v sadě replik správný počet instancí, které jsou v pořádku, a podle konfigurace spustí nový kontejner. Orchestrátor spustí nový pod na stejném uzlu a azure-sql-edge znovu se připojí ke stejnému trvalému úložišti. Služba se připojí k znovu vytvořenému azure-sql-edgeobjektu .

Diagram Azure SQL Edge v clusteru Kubernetes po selhání podu

V následujícím diagramu došlo k selhání uzlu hostujícího azure-sql-edge kontejner. Orchestrátor spustí nový pod na jiném uzlu a azure-sql-edge znovu se připojí ke stejnému trvalému úložišti. Služba se připojí k znovu vytvořenému azure-sql-edgeobjektu .

Diagram Azure SQL Edge v clusteru Kubernetes po selhání uzlu

Požadavky

  • Cluster Kubernetes

    • Tento kurz vyžaduje cluster Kubernetes. V těchto krocích se ke správě clusteru používá kubectl .

    • Pro účely tohoto kurzu používáme Azure Kubernetes Service k nasazení Azure SQL Edge. Informace o vytvoření clusteru Kubernetes s jedním uzlem a připojení k němu v AKS najdete v tématu Nasazení clusteru Azure Kubernetes Service (AKS) pomocí kubectl.

    Poznámka

    Kvůli ochraně před selháním uzlu vyžaduje cluster Kubernetes více než jeden uzel.

  • Azure CLI

    • Pokyny v tomto kurzu byly ověřeny pomocí Azure CLI 2.10.1.

Vytvoření oboru názvů Kubernetes pro nasazení SQL Edge

Vytvořte nový obor názvů v clusteru Kubernetes. Tento obor názvů se používá k nasazení SQL Edge a všech požadovaných artefaktů. Další informace o oborech názvů Kubernetes najdete v tématu Obory názvů.

kubectl create namespace <namespace name>

Vytvoření hesla SA

Vytvořte heslo SA v clusteru Kubernetes. Kubernetes může spravovat citlivé konfigurační informace, jako jsou hesla jako tajné kódy.

Následující příkaz vytvoří heslo pro účet SA:

kubectl create secret generic mssql --from-literal=SA_PASSWORD="MyC0m9l&xP@ssw0rd" -n <namespace name>

Nahraďte MyC0m9l&xP@ssw0rd složitým heslem.

Vytvoření úložiště

Nakonfigurujte trvalý svazek a deklaraci identity trvalého svazku v clusteru Kubernetes. Dokončete následující kroky:

  1. Vytvořte manifest, který definuje třídu úložiště a deklaraci identity trvalého svazku. Manifest určuje zřizovatel úložiště, parametry a zásady uvolnění. Cluster Kubernetes používá tento manifest k vytvoření trvalého úložiště.

    Následující příklad yaml definuje třídu úložiště a deklaraci trvalého svazku. Zřizovacím serverem třídy úložiště je azure-disk, protože tento cluster Kubernetes je v Azure. Typ účtu úložiště je Standard_LRS. Deklarace trvalého svazku má název mssql-data. Metadata trvalých deklarací identity svazku obsahují poznámku, která ho připojuje zpět ke třídě úložiště.

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
         name: azure-disk
    provisioner: kubernetes.io/azure-disk
    parameters:
      storageaccounttype: Standard_LRS
      kind: managed
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: mssql-data
      annotations:
        volume.beta.kubernetes.io/storage-class: azure-disk
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 8Gi
    

    Uložte soubor (například pvc.yaml).

  2. Vytvořte deklaraci identity trvalého svazku v Kubernetes.

    kubectl apply -f <Path to pvc.yaml file> -n <namespace name>
    

    <Path to pvc.yaml file> je umístění, kam jste soubor uložili.

    Trvalý svazek se automaticky vytvoří jako účet úložiště Azure a je svázán s trvalou deklarací identity svazku.

    Snímek obrazovky s příkazem trvalé deklarace identity svazku

  3. Ověřte trvalou deklaraci identity svazku.

    kubectl describe pvc <PersistentVolumeClaim>  -n <name of the namespace>
    

    <PersistentVolumeClaim> je název trvalé deklarace identity svazku.

    V předchozím kroku má trvalá deklarace identity svazku název mssql-data. Pokud chcete zobrazit metadata o trvalé deklaraci identity svazku, spusťte následující příkaz:

    kubectl describe pvc mssql-data  -n <namespace name>
    

    Vrácená metadata obsahují hodnotu s názvem Volume. Tato hodnota se mapuje na název objektu blob.

    Snímek obrazovky s vrácená metadata, včetně svazku

  4. Ověřte trvalý svazek.

    kubectl describe pv -n <namespace name>
    

    kubectl vrátí metadata o trvalém svazku, který byl automaticky vytvořen a svázán s trvalou deklarací identity svazku.

Vytvoření nasazení

V tomto příkladu se kontejner hostující instanci Azure SQL Edge popisuje jako objekt nasazení Kubernetes. Nasazení vytvoří sadu replik. Sada replik vytvoří pod.

V tomto kroku vytvořte manifest, který popisuje kontejner na základě image Dockeru Azure SQL Edge. Manifest odkazuje na trvalou mssql-data deklaraci identity svazku mssql a tajný klíč, který jste už použili v clusteru Kubernetes. Manifest také popisuje službu. Tato služba je nástroj pro vyrovnávání zatížení. Nástroj pro vyrovnávání zatížení zaručuje, že IP adresa zůstane zachována i po obnovení instance Azure SQL Edge.

  1. Vytvořte manifest (soubor YAML), který popisuje nasazení. Následující příklad popisuje nasazení, včetně kontejneru založeného na imagi kontejneru Azure SQL Edge.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: sqledge-deployment
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: sqledge
      template:
        metadata:
          labels:
            app: sqledge
        spec:
          volumes:
            - name: sqldata
              persistentVolumeClaim:
                claimName: mssql-data
          containers:
            - name: azuresqledge
              image: mcr.microsoft.com/azure-sql-edge:latest
              ports:
                - containerPort: 1433
              volumeMounts:
                - name: sqldata
                  mountPath: /var/opt/mssql
              env:
                - name: MSSQL_PID
                  value: "Developer"
                - name: ACCEPT_EULA
                  value: "Y"
                - name: SA_PASSWORD
                  valueFrom:
                    secretKeyRef:
                      name: mssql
                      key: SA_PASSWORD
                - name: MSSQL_AGENT_ENABLED
                  value: "TRUE"
                - name: MSSQL_COLLATION
                  value: "SQL_Latin1_General_CP1_CI_AS"
                - name: MSSQL_LCID
                  value: "1033"
          terminationGracePeriodSeconds: 30
          securityContext:
            fsGroup: 10001
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: sqledge-deployment
    spec:
      selector:
        app: sqledge
      ports:
        - protocol: TCP
          port: 1433
          targetPort: 1433
          name: sql
      type: LoadBalancer
    

    Zkopírujte předchozí kód do nového souboru s názvem sqldeployment.yaml. Aktualizujte následující hodnoty:

    • value: "Developer"MSSQL_PID: Nastaví kontejner tak, aby běžel Azure SQL edici Edge Developer. Edice Developer není licencovaná pro produkční data. Pokud je nasazení určené pro produkční použití, nastavte edici na Premium.

      Poznámka

      Další informace najdete v tématu Jak licencovat Azure SQL Edge.

    • persistentVolumeClaim: Tato hodnota vyžaduje záznam, claimName: který se mapuje na název použitý pro deklaraci trvalého svazku. Tento kurz používá oblast mssql-data.

    • name: SA_PASSWORD: Nakonfiguruje image kontejneru tak, aby nastavil heslo SA, jak je definováno v této části.

      valueFrom:
        secretKeyRef:
          name: mssql
          key: SA_PASSWORD
      

      Když Kubernetes nasadí kontejner, odkazuje na tajný kód s názvem mssql , aby získal hodnotu pro heslo.

    Poznámka

    Při použití LoadBalancer typu služby je instance Azure SQL Edge přístupná vzdáleně (přes internet) na portu 1433.

    Uložte soubor (například sqledgedeploy.yaml).

  2. Vytvořte nasazení.

    kubectl apply -f <Path to sqledgedeploy.yaml file> -n <namespace name>
    

    <Path to sqldeployment.yaml file> je umístění, kam jste soubor uložili.

    Snímek obrazovky s příkazem pro nasazení

    Vytvoří se nasazení a služba. Instance Azure SQL Edge je v kontejneru připojeném k trvalému úložišti.

    Pokud chcete zobrazit stav podu, zadejte kubectl get pod -n <namespace name>.

    Snímek obrazovky s příkazem get pod

    Na předchozím obrázku má pod stav Running. Tento stav znamená, že kontejner je připravený. To může trvat několik minut.

    Poznámka

    Po vytvoření nasazení může trvat několik minut, než se pod zobrazí. Zpoždění je způsobené tím, že cluster načítá image kontejneru Azure SQL Edge z centra Dockeru. Po prvním nahrání image můžou být další nasazení rychlejší, pokud je nasazení na uzlu, který už má image uloženou v mezipaměti.

  3. Ověřte, že jsou služby spuštěné. Spusťte následující příkaz:

    kubectl get services -n <namespace name>
    

    Tento příkaz vrátí spuštěné služby a interní a externí IP adresy služeb. Poznamenejte si externí IP adresu mssql-deployment služby. Tuto IP adresu použijte pro připojení k Azure SQL Edge.

    Snímek obrazovky s příkazem get service

    Další informace o stavu objektů v clusteru Kubernetes potřebujete spuštěním příkazu:

    az aks browse --resource-group <MyResourceGroup> --name <MyKubernetesClustername>
    

Připojení k instanci Azure SQL Edge

Pokud jste kontejner nakonfigurovali podle popisu, můžete se připojit k aplikaci mimo virtuální síť Azure. sa Použijte účet a externí IP adresu pro službu. Použijte heslo, které jste nakonfigurovali jako tajný klíč Kubernetes. Další informace o připojení k instanci Azure SQL Edge najdete v tématu Připojení k Azure SQL Edge.

Ověření selhání a obnovení

Pokud chcete ověřit selhání a obnovení, můžete pod odstranit. Proveďte následující kroky:

  1. Vypište pod, na kterém běží Azure SQL Edge.

    kubectl get pods -n <namespace name>
    

    Poznamenejte si název podu, na kterém běží Azure SQL Edge.

  2. Odstraňte pod.

    kubectl delete pod sqledge-deployment-7df66c9999-rc9xl
    

    sqledge-deployment-7df66c9999-rc9xl je hodnota vrácená v předchozím kroku pro název podu.

Kubernetes automaticky znovu vytvoří pod, aby se obnovila instance Azure SQL Edge a připojila se k trvalému úložišti. Pomocí příkazu kubectl get pods ověřte, že je nasazený nový pod. Pomocí příkazu kubectl get services ověřte, že IP adresa nového kontejneru je stejná.

Souhrn

V tomto kurzu jste zjistili, jak nasadit kontejnery Azure SQL Edge do clusteru Kubernetes pro zajištění vysoké dostupnosti.

  • Vytvoření hesla SA
  • Vytvoření úložiště
  • Vytvoření nasazení
  • Připojení s Azure SQL Edge Management Studios (SSMS)
  • Ověření selhání a obnovení

Další kroky