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.
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
.
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
.
Wymagania wstępne
Klaster Kubernetes
Samouczek wymaga klastra Kubernetes. W krokach użyj narzędzia kubectl do zarządzania klastrem.
Na potrzeby tego samouczka używamy usługi Azure Kubernetes Service do wdrażania usługi Azure SQL Edge. Zobacz Deploy an Azure Kubernetes Service (AKS) cluster to create and connect to a single-node Kubernetes cluster in AKS
kubectl
with .
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:
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 toStandard_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).
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.
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.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.
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ę naPremium
wartość .Uwaga
Aby uzyskać więcej informacji, zobacz Jak licencjonować usługę Azure SQL Edge.
persistentVolumeClaim
: Ta wartość wymaga wpisu mapowaniaclaimName:
na nazwę używaną dla trwałego oświadczenia woluminu. W tym samouczku użyto regionumssql-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
).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.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>
.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.
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.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:
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.
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