Het implementeren van een Azure SQL Edge-container in Kubernetes
Belangrijk
Azure SQL Edge wordt op 30 september 2025 buiten gebruik gesteld. Zie de kennisgeving buitengebruikstelling voor meer informatie en migratieopties.
Notitie
Azure SQL Edge biedt geen ondersteuning meer voor het ARM64-platform.
Azure SQL Edge kan worden geïmplementeerd in een Kubernetes-cluster, zowel als een IoT Edge-module via Azure IoT Edge die wordt uitgevoerd op Kubernetes, of als een zelfstandige containerpod. Voor de rest van dit artikel richten we ons op de zelfstandige containerimplementatie op een Kubernetes-cluster. Zie Azure IoT Edge in Kubernetes (preview) voor meer informatie over het implementeren van Azure IoT Edge in Kubernetes.
Deze zelfstudie laat zien hoe u een maximaal beschikbare Azure SQL Edge-instantie configureert in een container in een Kubernetes-cluster.
- Een SA-wachtwoord maken
- Opslag maken
- De implementatie maken
- Verbinding maken met SQL Server Management Studio (SSMS)
- Fout en herstel verifiëren
Kubernetes 1.6 en hoger biedt ondersteuning voor opslagklassen, permanente volumeclaimsen het soort Azure-schijfvolume. U kunt uw Azure SQL Edge-instanties systeemeigen maken en beheren in Kubernetes. In het voorbeeld in dit artikel ziet u hoe u een implementatie maakt om een configuratie met hoge beschikbaarheid te maken, vergelijkbaar met een clusterexemplaar van een gedeelde schijf. In deze configuratie speelt Kubernetes de rol van de cluster-orchestrator. Wanneer er een fout optreedt in een Azure SQL Edge-instantie in een container, bootstrapt de orchestrator een andere instantie van de container die wordt gekoppeld aan dezelfde permanente opslag.
In het voorgaande diagram is azure-sql-edge
een container in een pod. Kubernetes organiseert de resources in het cluster. Een replicaset ervoor zorgt dat de pod automatisch wordt hersteld na een storing in een knooppunt. Toepassingen maken verbinding met de service. In dit geval vertegenwoordigt de service een load balancer die als host fungeert voor een IP-adres dat niet hetzelfde is na het mislukken van de azure-sql-edge
.
De azure-sql-edge
-container is mislukt in het volgende diagram. Als orchestrator garandeert Kubernetes het juiste aantal gezonde instanties in de replicaset en wordt een nieuwe container gestart op basis van de configuratie. De orchestrator start een nieuwe pod op hetzelfde knooppunt en azure-sql-edge
maakt opnieuw verbinding met dezelfde permanente opslag. De service maakt verbinding met de opnieuw gemaakte azure-sql-edge
.
In het volgende diagram is het knooppunt dat als host fungeert voor de azure-sql-edge
-container mislukt. De orchestrator start de nieuwe pod op een ander knooppunt en azure-sql-edge
maakt opnieuw verbinding met dezelfde permanente opslag. De service maakt verbinding met de opnieuw gemaakte azure-sql-edge
.
Vereisten
Kubernetes-cluster
Voor de zelfstudie is een Kubernetes-cluster vereist. De stappen gebruiken kubectl om het cluster te beheren.
Voor deze zelfstudie gebruiken we Azure Kubernetes Service om Azure SQL Edge te implementeren. Zie Een AKS-cluster (Azure Kubernetes service) implementeren voor het maken en verbinden met een Kubernetes-cluster met één knooppunt in AKS met
kubectl
.
Notitie
Ter bescherming tegen storingen in een knooppunt heeft een Kubernetes-cluster meer dan één knooppunt nodig.
Azure-CLI
- De instructies in deze zelfstudie zijn gevalideerd voor Azure CLI 2.10.1.
Een Kubernetes-naamruimte maken voor SQL Edge-implementatie
Maak een nieuwe naamruimte in het kubernetes-cluster. Deze naamruimte wordt gebruikt om SQL Edge en alle vereiste artefacten te implementeren. Zie naamruimten voor meer informatie over Kubernetes-naamruimten.
kubectl create namespace <namespace name>
Een SA-wachtwoord maken
Maak een SA-wachtwoord in het Kubernetes-cluster. Kubernetes kan gevoelige configuratie-informatie, zoals wachtwoorden, beheren als geheimen.
Met de volgende opdracht maakt u een wachtwoord voor het SA-account:
kubectl create secret generic mssql --from-literal=MSQL_SA_PASSWORD="MyC0m9l&xP@ssw0rd" -n <namespace name>
Vervang MyC0m9l&xP@ssw0rd
door een complex wachtwoord.
Opslag maken
Configureer een permanent volume en permanente volumeclaim in het Kubernetes-cluster. Voltooi de volgende stappen:
Maak een manifest om de opslagklasse en de permanente volumeclaim te definiëren. In het manifest worden de opslaginrichtings-,-parameters- en -claimbeleid bepaald. Het Kubernetes-cluster gebruikt dit manifest voor het maken van de permanente opslag.
In het volgende YAML-voorbeeld worden een opslagklasse en een permanente volumeclaim gedefinieerd. De inrichting van de opslagklasse is
azure-disk
, omdat dit Kubernetes-cluster zich in Azure bevindt. Het type opslagaccount isStandard_LRS
. De naam van de permanente volumeclaim ismssql-data
. De metagegevens van de permanente volumeclaim bevatten een aantekening die wordt gekoppeld aan de opslagklasse.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
Sla het bestand op (bijvoorbeeld pvc.yaml).
Maak de permanente volumeclaim in Kubernetes.
kubectl apply -f <Path to pvc.yaml file> -n <namespace name>
<Path to pvc.yaml file>
is de locatie waar u het bestand hebt opgeslagen.Het permanente volume wordt automatisch gemaakt als een Azure Storage-account en is gebonden aan de permanente volumeclaim.
Controleer de claim voor de permanente volumeclaim.
kubectl describe pvc <PersistentVolumeClaim> -n <name of the namespace>
De naam van de permanente volumeclaim is
<PersistentVolumeClaim>
.In de vorige stap heeft de permanente volumeclaim de naam
mssql-data
. Voer de volgende opdracht uit om de metagegevens van de permanente volumeclaim te bekijken:kubectl describe pvc mssql-data -n <namespace name>
De geretourneerde metagegevens bevatten een waarde met de naam
Volume
. Deze waarde wordt toegewezen aan de naam van de blob.Controleer het permanente volume.
kubectl describe pv -n <namespace name>
kubectl
retourneert metagegevens over het permanente volume dat automatisch is gemaakt en is gebonden aan de permanente volumeclaim.
De implementatie maken
In dit voorbeeld wordt de container die de Azure SQL Edge-instantie host, beschreven als een Kubernetes-implementatieobject. De implementatie maakt een replicaset. De replicaset maakt de pod.
In deze stap maakt u een manifest om de container te beschrijven op basis van de Azure SQL Edge Docker-installatiekopie. Het manifest verwijst naar de mssql-data
-permanente volumeclaim en het mssql
-geheim dat u al hebt toegepast op het Kubernetes-cluster. In het manifest wordt ook een servicebeschreven. Deze service is een load balancer. De load balancer zorgt ervoor dat het IP-adres blijft bestaan nadat het Azure SQL Edge-exemplaar is hersteld.
Maak een manifest (een YAML-bestand) om de implementatie te beschrijven. In het volgende voorbeeld wordt een implementatie beschreven, inclusief een container op basis van de installatiekopie van de Azure SQL Edge-container.
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
Kopieer de voorgaande code naar een nieuw bestand met de naam
sqldeployment.yaml
. Werk de volgende waarden bij:value: "Developer"
MSSQL_PID: hiermee stelt u de container in voor het uitvoeren van de Azure SQL Edge Developer-editie. Developer Edition heeft geen licentie voor productiegegevens. Als de implementatie voor productiegebruik is, stelt u de editie in opPremium
.Notitie
Zie Licenties voor Azure SQL Edgevoor meer informatie.
persistentVolumeClaim
: Deze waarde vereist een vermelding voorclaimName:
die toewijzing aan de naam die wordt gebruikt voor de permanente volumeclaim. In deze zelfstudie wordtmssql-data
gebruikt.name: MSSQL_SA_PASSWORD
: Hiermee configureert u de containerinstallatiekopieën om het SA-wachtwoord in te stellen, zoals gedefinieerd in deze sectie.valueFrom: secretKeyRef: name: mssql key: MSSQL_SA_PASSWORD
Wanneer Kubernetes de container implementeert, verwijst deze naar het geheim met de naam
mssql
om de waarde voor het wachtwoord op te halen.
Notitie
Met behulp van het servicetype
LoadBalancer
is de Azure SQL Edge-instantie extern toegankelijk (via internet) op poort 1433.Sla het bestand op (bijvoorbeeld
sqledgedeploy.yaml
).Maak de implementatie.
kubectl apply -f <Path to sqledgedeploy.yaml file> -n <namespace name>
<Path to sqldeployment.yaml file>
is de locatie waar u het bestand hebt opgeslagen.De implementatie en de service worden gemaakt. Het exemplaar van Azure SQL Edge bevindt zich in een container die is verbonden met de permanente opslag.
Als u de status van de pod wilt weergeven, typt u
kubectl get pod -n <namespace name>
.In de voorgaande afbeelding heeft de pod de status
Running
. Deze status geeft aan dat de container klaar is. Dit kan enkele minuten duren.Notitie
Nadat de implementatie is gemaakt, kan het enkele minuten duren voordat de pod zichtbaar is. De vertraging komt doordat het cluster de Azure SQL Edge-container-installatiekopie ophaalt van de docker-hub. Nadat de installatiekopie de eerste keer is opgehaald, kunnen volgende implementaties sneller zijn als de implementatie een knooppunt is waarop de installatiekopie al in de cache is opgeslagen.
Controleer of de services worden uitgevoerd. Voer de volgende opdracht uit:
kubectl get services -n <namespace name>
Met deze opdracht worden services geretourneerd die worden uitgevoerd, evenals de interne en externe IP-adressen voor de services. Noteer het externe IP-adres voor de
mssql-deployment
-service. Gebruik dit IP-adres om verbinding te maken met Azure SQL Edge.Voor meer informatie over de status van de objecten in het Kubernetes-cluster voert u de volgende handelingen uit:
az aks browse --resource-group <MyResourceGroup> --name <MyKubernetesClustername>
Verbinding maken met de SQL Database in de Azure SQL Edge-instantie
Als u de container hebt geconfigureerd zoals beschreven, kunt u verbinding maken met een toepassing van buiten het virtuele netwerk van Azure. Gebruik het sa
-account en het externe IP-adres voor de service. Gebruik het wachtwoord dat u hebt geconfigureerd als Kubernetes-geheim. Zie Verbinding maken met Azure SQL Edge voor meer informatie over het maken van verbinding met een Azure SQL Edge-exemplaar.
Fout en herstel verifiëren
Als u de fout en het herstel wilt controleren, kunt u de pod verwijderen. Voer de volgende stappen uit:
Vermeld de pod waarop Azure SQL Edge wordt uitgevoerd.
kubectl get pods -n <namespace name>
Noteer de naam van de pod waarop Azure SQL Edge wordt uitgevoerd.
Verwijder de pod.
kubectl delete pod sqledge-deployment-7df66c9999-rc9xl
sqledge-deployment-7df66c9999-rc9xl
is de waarde die wordt geretourneerd door de vorige stap voor de naam van de pod.
Kubernetes maakt de pod automatisch opnieuw om een Azure SQL Edge-instantie te herstellen en maakt verbinding met de permanente opslag. Gebruik kubectl get pods
om te controleren of een nieuwe pod is geïmplementeerd. Gebruik kubectl get services
om te controleren of het IP-adres voor de nieuwe container hetzelfde is.
Samenvatting
In deze zelfstudie hebt u geleerd hoe u Azure SQL Edge-containers kunt implementeren in een Kubernetes-cluster voor hoge beschikbaarheid.
- Een SA-wachtwoord maken
- Opslag maken
- De implementatie maken
- Verbinding maken met Azure SQL Edge Management Studio (SSMS)
- Fout en herstel verifiëren