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.
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-edge
ná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-edge
objektu .
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-edge
objektu .
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:
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ě jeStandard_LRS
. Deklarace trvalého svazku má názevmssql-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).
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.
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.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.
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 naPremium
.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á oblastmssql-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
).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.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>
.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.
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.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:
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.
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í