Udostępnij za pośrednictwem


Wdrażanie kontenera usługi Azure SQL Edge na platformie Kubernetes

Ważne

Usługa Azure SQL Edge zostanie wycofana 30 września 2025 r. Aby uzyskać więcej informacji i opcji migracji, zobacz powiadomienie o wycofaniu.

Uwaga

Usługa Azure SQL Edge nie obsługuje już platformy ARM64.

Usługę Azure SQL Edge można wdrożyć w klastrze Kubernetes zarówno jako moduł usługi IoT Edge za pośrednictwem usługi Azure IoT Edge działającej na platformie Kubernetes, jak i jako autonomicznego zasobnika kontenera. W pozostałej części tego artykułu skupimy się na autonomicznym wdrożeniu kontenera w klastrze Kubernetes. Aby uzyskać informacje na temat wdrażania usługi Azure IoT Edge na platformie Kubernetes, zobacz Artykuł Azure IoT Edge on Kubernetes (wersja zapoznawcza).

W tym samouczku pokazano, jak skonfigurować wystąpienie usługi Azure SQL Edge o wysokiej dostępności w kontenerze w klastrze Kubernetes.

  • Tworzenie hasła zabezpieczeń
  • Tworzenie magazynu
  • Tworzenie wdrożenia
  • Nawiązywanie połączenia z programem SQL Server Management Studio (SSMS)
  • Weryfikowanie niepowodzenia i odzyskiwania

Platforma Kubernetes 1.6 lub nowsza ma obsługę klas magazynu, oświadczeń trwałych woluminów i typu woluminu dysku platformy Azure. Wystąpienia usługi Azure SQL Edge można tworzyć i zarządzać nimi natywnie na platformie Kubernetes. W przykładzie w tym artykule pokazano, jak utworzyć wdrożenie w celu uzyskania konfiguracji wysokiej dostępności podobnej do udostępnionego wystąpienia klastra trybu failover dysku. W tej konfiguracji platforma Kubernetes odgrywa rolę orkiestratora klastra. Gdy wystąpienie usługi Azure SQL Edge w kontenerze zakończy się niepowodzeniem, program orchestrator uruchamia inne wystąpienie kontenera, które jest dołączane do tego samego magazynu trwałego.

Diagram usługi Azure SQL Edge w klastrze Kubernetes.

Na powyższym diagramie azure-sql-edge jest kontenerem w zasobniku. Platforma Kubernetes organizuje zasoby w klastrze. Zestaw replik gwarantuje, że zasobnik zostanie automatycznie odzyskany po awarii węzła. Aplikacje łączą się z usługą. W takim przypadku usługa reprezentuje moduł równoważenia obciążenia hostujący adres IP, który pozostaje taki sam po awarii .azure-sql-edge

Na poniższym diagramie azure-sql-edge kontener uległ awarii. Jako koordynator kubernetes gwarantuje poprawną liczbę wystąpień w dobrej kondycji w zestawie replik i uruchamia nowy kontener zgodnie z konfiguracją. Koordynator uruchamia nowy zasobnik w tym samym węźle i azure-sql-edge ponownie łączy się z tym samym magazynem trwałym. Usługa łączy się z utworzonym ponownie elementem azure-sql-edge.

Diagram usługi Azure SQL Edge w klastrze Kubernetes po awarii zasobnika.

Na poniższym diagramie węzeł hostowany azure-sql-edge kontener nie powiódł się. Koordynator uruchamia nowy zasobnik w innym węźle i azure-sql-edge ponownie łączy się z tym samym magazynem trwałym. Usługa łączy się z utworzonym ponownie elementem azure-sql-edge.

Diagram usługi Azure SQL Edge w klastrze Kubernetes po awarii węzła.

Wymagania wstępne

  • Klaster Kubernetes

    Uwaga

    Aby chronić przed awarią węzła, klaster Kubernetes wymaga więcej niż jednego węzła.

  • Interfejs wiersza polecenia platformy Azure

    • Instrukcje opisane w tym samouczku zostały zweryfikowane w interfejsie wiersza polecenia platformy Azure 2.10.1.

Tworzenie przestrzeni nazw kubernetes dla wdrożenia usługi SQL Edge

Utwórz nową przestrzeń nazw w klastrze kubernetes. Ta przestrzeń nazw służy do wdrażania przeglądarki SQL Edge i wszystkich wymaganych artefaktów. Aby uzyskać więcej informacji na temat przestrzeni nazw platformy Kubernetes, zobacz przestrzenie nazw.

kubectl create namespace <namespace name>

Tworzenie hasła zabezpieczeń

Utwórz hasło sa w klastrze Kubernetes. Platforma Kubernetes może zarządzać poufnymi informacjami o konfiguracji, takimi jak hasła jako wpisy tajne.

Następujące polecenie tworzy hasło dla konta sa:

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

Zastąp MyC0m9l&xP@ssw0rd ciąg złożonym hasłem.

Tworzenie magazynu

Konfigurowanie trwałego woluminu i trwałego oświadczenia woluminu w klastrze Kubernetes. Zakończ poniższe kroki:

  1. Utwórz manifest, aby zdefiniować klasę magazynu i trwałe oświadczenie woluminu. Manifest określa aprowizator magazynu, parametry i zasady odzyskiwania. Klaster Kubernetes używa tego manifestu do utworzenia magazynu trwałego.

    Poniższy przykład yaml definiuje klasę magazynu i trwałe oświadczenie woluminu. Aprowizacja klas magazynu to azure-disk, ponieważ ten klaster Kubernetes znajduje się na platformie Azure. Typ konta magazynu to Standard_LRS. Trwałe oświadczenie woluminu nosi nazwę mssql-data. Metadane trwałego oświadczenia woluminu zawierają adnotację łączącą ją z powrotem z klasą magazynu.

    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
    

    Zapisz plik (na przykład pvc.yaml).

  2. Utwórz trwałe oświadczenie woluminu na platformie Kubernetes.

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

    <Path to pvc.yaml file> to lokalizacja, w której zapisano plik.

    Wolumin trwały jest tworzony automatycznie jako konto usługi Azure Storage i powiązany z trwałym oświadczeniem woluminu.

    Zrzut ekranu przedstawiający trwałe polecenie oświadczenia woluminu.

  3. Sprawdź trwałe oświadczenie woluminu.

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

    <PersistentVolumeClaim> to nazwa oświadczenia trwałego woluminu.

    W poprzednim kroku oświadczenie trwałego woluminu nosi nazwę mssql-data. Aby wyświetlić metadane dotyczące trwałego oświadczenia woluminu, uruchom następujące polecenie:

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

    Zwrócone metadane zawierają wartość o nazwie Volume. Ta wartość mapuje na nazwę obiektu blob.

    Zrzut ekranu przedstawiający zwrócone metadane, w tym wolumin.

  4. Sprawdź wolumin trwały.

    kubectl describe pv -n <namespace name>
    

    kubectl Zwraca metadane dotyczące woluminu trwałego, który został automatycznie utworzony i powiązany z trwałym oświadczeniem woluminu.

Tworzenie wdrożenia

W tym przykładzie kontener hostujący wystąpienie usługi Azure SQL Edge jest opisany jako obiekt wdrożenia platformy Kubernetes. Wdrożenie tworzy zestaw replik. Zestaw replik tworzy zasobnik.

W tym kroku utwórz manifest opisujący kontener na podstawie obrazu platformy Docker usługi Azure SQL Edge. Manifest odwołuje się do trwałego oświadczenia woluminu i mssql wpisu tajnegomssql-data, który został już zastosowany do klastra Kubernetes. Manifest opisuje również usługę. Ta usługa jest modułem równoważenia obciążenia. Moduł równoważenia obciążenia gwarantuje, że adres IP będzie się powtarzać po odzyskaniu wystąpienia usługi Azure SQL Edge.

  1. Utwórz manifest (plik YAML), aby opisać wdrożenie. W poniższym przykładzie opisano wdrożenie, w tym kontener na podstawie obrazu kontenera usługi 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
    

    Skopiuj powyższy kod do nowego pliku o nazwie sqldeployment.yaml. Zaktualizuj następujące wartości:

    • value: "Developer"MSSQL_PID: ustawia kontener do uruchamiania wersji Azure SQL Edge Developer. Wersja developer nie jest licencjonowana na dane produkcyjne. Jeśli wdrożenie jest używane w środowisku produkcyjnym, ustaw wersję na Premiumwartość .

      Uwaga

      Aby uzyskać więcej informacji, zobacz Jak licencjonować usługę Azure SQL Edge.

    • persistentVolumeClaim: Ta wartość wymaga wpisu mapowania claimName: na nazwę używaną dla trwałego oświadczenia woluminu. W tym samouczku użyto regionu mssql-data.

    • name: MSSQL_SA_PASSWORD: konfiguruje obraz kontenera, aby ustawić hasło sa zgodnie z definicją w tej sekcji.

      valueFrom:
        secretKeyRef:
          name: mssql
          key: MSSQL_SA_PASSWORD
      

      Gdy platforma Kubernetes wdraża kontener, odwołuje się do wpisu tajnego o nazwie mssql , aby uzyskać wartość hasła.

    Uwaga

    Przy użyciu LoadBalancer typu usługi wystąpienie usługi Azure SQL Edge jest dostępne zdalnie (za pośrednictwem Internetu) na porcie 1433.

    Zapisz plik (na przykład sqledgedeploy.yaml).

  2. Utwórz wdrożenie.

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

    <Path to sqldeployment.yaml file> to lokalizacja, w której zapisano plik.

    Zrzut ekranu przedstawiający polecenie wdrożenia.

    Zostanie utworzone wdrożenie i usługa. Wystąpienie usługi Azure SQL Edge znajduje się w kontenerze połączonym z magazynem trwałym.

    Aby wyświetlić stan zasobnika, wpisz kubectl get pod -n <namespace name>.

    Zrzut ekranu przedstawiający polecenie get pod.

    Na powyższym obrazie zasobnik ma stan Running. Ten stan wskazuje, że kontener jest gotowy. Może to potrwać kilka minut.

    Uwaga

    Po utworzeniu wdrożenia może upłynąć kilka minut, zanim zasobnik będzie widoczny. Opóźnienie jest spowodowane tym, że klaster ściąga obraz kontenera usługi Azure SQL Edge z centrum Platformy Docker. Po pierwszym ściągnięciu obrazu kolejne wdrożenia mogą być szybsze, jeśli wdrożenie znajduje się w węźle, który ma już zapisany obraz w pamięci podręcznej.

  3. Sprawdź, czy usługi są uruchomione. Uruchom następujące polecenie:

    kubectl get services -n <namespace name>
    

    To polecenie zwraca uruchomione usługi, a także wewnętrzne i zewnętrzne adresy IP dla usług. Zanotuj zewnętrzny adres mssql-deployment IP usługi. Użyj tego adresu IP, aby nawiązać połączenie z usługą Azure SQL Edge.

    Zrzut ekranu przedstawiający polecenie get service.

    Aby uzyskać więcej informacji na temat stanu obiektów w klastrze Kubernetes, uruchom polecenie:

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

Nawiązywanie połączenia z wystąpieniem usługi Azure SQL Edge

Jeśli skonfigurowano kontener zgodnie z opisem, możesz nawiązać połączenie z aplikacją spoza sieci wirtualnej platformy Azure. sa Użyj konta i zewnętrznego adresu IP dla usługi. Użyj hasła skonfigurowanego jako wpis tajny platformy Kubernetes. Aby uzyskać więcej informacji na temat nawiązywania połączenia z wystąpieniem usługi Azure SQL Edge, zobacz Nawiązywanie połączenia z usługą Azure SQL Edge.

Weryfikowanie niepowodzenia i odzyskiwania

Aby zweryfikować niepowodzenie i odzyskiwanie, możesz usunąć zasobnik. Wykonaj poniższe kroki:

  1. Wyświetl listę zasobników z uruchomioną usługą Azure SQL Edge.

    kubectl get pods -n <namespace name>
    

    Zanotuj nazwę zasobnika z uruchomioną usługą Azure SQL Edge.

  2. Usuń zasobnik.

    kubectl delete pod sqledge-deployment-7df66c9999-rc9xl
    

    sqledge-deployment-7df66c9999-rc9xl to wartość zwracana z poprzedniego kroku dla nazwy zasobnika.

Platforma Kubernetes automatycznie ponownie tworzy zasobnik w celu odzyskania wystąpienia usługi Azure SQL Edge i nawiązania połączenia z magazynem trwałym. Użyj polecenia kubectl get pods , aby sprawdzić, czy nowy zasobnik jest wdrożony. Użyj polecenia kubectl get services , aby sprawdzić, czy adres IP nowego kontenera jest taki sam.

Podsumowanie

W tym samouczku przedstawiono sposób wdrażania kontenerów usługi Azure SQL Edge w klastrze Kubernetes w celu zapewnienia wysokiej dostępności.

  • Tworzenie hasła zabezpieczeń
  • Tworzenie magazynu
  • Tworzenie wdrożenia
  • Nawiązywanie połączenia z usługą Azure SQL Edge Management Studios (SSMS)
  • Weryfikowanie niepowodzenia i odzyskiwania