Sdílet prostřednictvím


Nasazení kontejneru Azure SQL Edge v Kubernetes

Důležité

Azure SQL Edge bude vyřazeno 30. září 2025. Další informace a možnosti migrace najdete v oznámení o vyřazení.

Poznámka:

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 samostatné nasazení 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í aplikace 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 svazku 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 s vysokou dostupností podobnou instanci clusteru s podporou převzetí služeb při selhání sdíleného disku. V této konfiguraci hraje Kubernetes roli orchestrátoru clusteru. Když instance Azure SQL Edge v kontejneru selže, orchestrátor spustí další 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á po selhání azure-sql-edge.

V následujícím diagramu došlo k selhání kontejneru azure-sql-edge . Jako orchestrátor kubernetes zaručuje správný počet instancí, které jsou v pořádku v sadě replik, 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é azure-sql-edgeslužbě .

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é azure-sql-edgeslužbě .

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

Požadavky

  • Cluster Kubernetes

    • Tento kurz vyžaduje cluster Kubernetes. Kroky používají ke správě clusteru kubectl .

    • Pro účely tohoto kurzu používáme službu Azure Kubernetes Service k nasazení Azure SQL Edge. Viz Nasazení clusteru Azure Kubernetes Service (AKS) pro vytvoření a připojení ke clusteru Kubernetes s jedním uzlem v 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 v 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ů slouží 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é informace o konfiguraci, jako jsou hesla jako tajné kódy.

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

kubectl create secret generic mssql --from-literal=MSQL_SA_PASSWORD="<password>" -n <namespace name>

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

Vytvoření úložiště

Nakonfigurujte trvalý svazek a trvalou deklaraci identity svazku v clusteru Kubernetes. Proveďte následující kroky:

  1. Vytvořte manifest pro definování třídy úložiště a trvalé deklarace identity svazku. Manifest určuje zřizovací nástroj úložiště, parametry a zásady uvolnění paměti. 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 trvalou deklaraci identity svazku. Zřizování tříd ú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 deklarace identity trvalého svazku obsahují poznámku, která ji připojí 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 v Kubernetes trvalou deklaraci identity svazku.

    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 vázaný na trvalou deklaraci identity svazku.

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

  3. Ověřte trvalou deklaraci identity svazku.

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

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

    V předchozím kroku má deklarace trvalého 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 vrácených metadat 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 pro popis kontejneru na základě image Dockeru Azure SQL Edge. Manifest odkazuje na trvalou mssql-data deklaraci identity svazku a tajný mssql 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 přetrvává 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: MSSQL_SA_PASSWORD
                  valueFrom:
                    secretKeyRef:
                      name: mssql
                      key: MSSQL_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 pro spuštění edice Azure SQL Edge Developer. Edice developer není licencovaná pro produkční data. Pokud je nasazení určené pro produkční použití, nastavte edici na Premiumhodnotu .

      Poznámka:

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

    • persistentVolumeClaim: Tato hodnota vyžaduje položku, claimName: která se mapuje na název použitý pro trvalou deklaraci identity svazku. Tento kurz používá oblast mssql-data.

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

      valueFrom:
        secretKeyRef:
          name: mssql
          key: MSSQL_SA_PASSWORD
      

      Když Kubernetes nasadí kontejner, odkazuje na tajný kód s názvem mssql získat hodnotu hesla.

    Poznámka:

    LoadBalancer Pomocí 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 nasazení

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

    Chcete-li 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 označuje, ž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í spočívá v tom, že cluster načítá image kontejneru Azure SQL Edge z centra Dockeru. Po prvním načítání image může být následné nasazení rychlejší, pokud je nasazení na uzel, 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í služby, které jsou spuštěné, a také interní a externí IP adresy služeb. Poznamenejte si externí IP adresu služby mssql-deployment . Pomocí této IP adresy se připojte k Azure SQL Edge.

    Snímek obrazovky s příkazem get service

    Další informace o stavu objektů v clusteru Kubernetes potřebujete spustit:

    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. Vypíše pod se spuštěným Azure SQL Edgem.

    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á z předchozího kroku pro název podu.

Kubernetes automaticky znovu vytvoří pod pro obnovení instance Azure SQL Edge a připojí se k trvalému úložišti. Slouží kubectl get pods k ověření nasazení nového podu. Slouží kubectl get services k ověření, že IP adresa nového kontejneru je stejná.

Shrnutí

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í pomocí Azure SQL Edge Management Studios (SSMS)
  • Ověření selhání a obnovení