Menyebarkan kontainer Azure SQL Edge di Kubernetes
Penting
Azure SQL Edge akan dihentikan pada 30 September 2025. Untuk informasi selengkapnya dan opsi migrasi, lihat Pemberitahuan penghentian.
Catatan
Azure SQL Edge tidak lagi mendukung platform ARM64.
Azure SQL Edge dapat disebarkan pada kluster Kubernetes baik sebagai modul IoT Edge melalui Azure IoT Edge yang berjalan di Kubernetes, atau sebagai pod kontainer mandiri. Untuk sisa artikel ini, kami akan fokus pada penyebaran kontainer mandiri pada kluster Kubernetes. Untuk informasi tentang menyebarkan Azure IoT Edge di Kubernetes, lihat Azure IoT Edge di Kubernetes (pratinjau).
Tutorial ini menunjukkan cara mengonfigurasi instans Azure SQL Edge yang sangat tersedia dalam kontainer pada kluster Kubernetes.
- Membuat kata sandi SA
- Membuat penyimpanan
- Membuat penyebaran
- Terhubung dengan SQL Server Management Studio (SSMS)
- Memverifikasi kegagalan dan pemulihan
Kubernetes 1.6 dan yang lebih baru memiliki dukungan untuk kelas penyimpanan, klaim volume persisten, dan jenis volume disk Azure. Anda dapat membuat dan mengelola instans Azure SQL Edge secara natif di Kubernetes. Contoh dalam artikel ini menunjukkan cara membuat penyebaran untuk mencapai konfigurasi ketersediaan tinggi yang mirip dengan instans kluster failover disk bersama. Dalam konfigurasi ini, Kubernetes berperan sebagai orkestrator kluster. Ketika instans Azure SQL Edge dalam kontainer gagal, orkestrator bootstrap instans lain dari kontainer yang terpasang ke penyimpanan persisten yang sama.
Pada diagram sebelumnya, azure-sql-edge
adalah kontainer dalam pod. Kubernetes mengatur sumber daya dalam kluster. Set replika memastikan bahwa pod secara otomatis pulih setelah kegagalan node. Aplikasi terhubung ke layanan. Dalam hal ini, layanan mewakili load balancer yang menghosting alamat IP yang tetap sama setelah kegagalan azure-sql-edge
.
Dalam diagram berikut, kontainer azure-sql-edge
telah gagal. Sebagai orkestrator, Kubernetes menjamin jumlah instans sehat yang benar dalam set replika, dan memulai kontainer baru sesuai dengan konfigurasi. Orkestrator memulai pod baru pada node yang sama, dan azure-sql-edge
terhubung kembali ke penyimpanan persisten yang sama. Layanan ini terhubung ke azure-sql-edge
yang dibuat ulang.
Dalam diagram berikut, node yang menghosting kontainer azure-sql-edge
telah gagal. Orkestrator memulai pod baru pada node yang berbeda, dan azure-sql-edge
terhubung kembali ke penyimpanan persisten yang sama. Layanan ini terhubung ke azure-sql-edge
yang dibuat ulang.
Prasyarat
Kluster Kubernetes
Tutorial ini memerlukan kluster Kubernetes. Langkah-langkahnya menggunakan kubectl untuk mengelola kluster.
Untuk tujuan tutorial ini, kami menggunakan Azure Kubernetes Service untuk menyebarkan Azure SQL Edge. Lihat Menyebarkan kluster Azure Kubernetes Service (AKS) untuk membuat dan terhubung ke kluster Kubernetes node tunggal di AKS dengan
kubectl
.
Catatan
Untuk menghindari kegagalan node, kluster Kubernetes memerlukan lebih dari satu node.
Azure CLI
- Instruksi dalam tutorial ini telah divalidasi terhadap Azure CLI 2.10.1.
Membuat namespace Layanan Kubernetes untuk penyebaran SQL Edge
Buat namespace baru di kluster kubernetes. Namespace layanan ini digunakan untuk menyebarkan SQL Edge dan semua artefak yang diperlukan. Untuk informasi selengkapnya tentang namespace Layanan Kubernetes, lihat namespace layanan.
kubectl create namespace <namespace name>
Membuat kata sandi SA
Buat kata sandi SA di kluster Kubernetes. Kubernetes dapat mengelola informasi konfigurasi sensitif, seperti kata sandi sebagai rahasia.
Perintah berikut membuat kata sandi untuk akun SA:
kubectl create secret generic mssql --from-literal=MSQL_SA_PASSWORD="<password>" -n <namespace name>
Ganti MyC0m9l&xP@ssw0rd
dengan kata sandi yang kompleks.
Membuat penyimpanan
Konfigurasikan volume persisten dan klaim volume persisten di kluster Kubernetes. Selesaikan langkah-langkah berikut:
Buat manifes untuk menentukan kelas penyimpanan dan klaim volume persisten. Manifes menentukan provisioner penyimpanan, parameter, dan kebijakan klaim ulang. Kluster Kubernetes menggunakan manifes ini untuk membuat penyimpanan persisten.
Contoh yaml berikut menentukan kelas penyimpanan dan klaim volume persisten. Provisioner kelas penyimpanan adalah
azure-disk
, karena kluster Kubernetes ini ada di Azure. Jenis akun penyimpanan adalahStandard_LRS
. Klaim volume persisten diberi namamssql-data
. Metadata klaim volume persisten mencakup anotasi yang menghubungkannya kembali ke kelas penyimpanan.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
Simpan file (misalnya, pvc.yaml).
Buat klaim volume persisten di Kubernetes.
kubectl apply -f <Path to pvc.yaml file> -n <namespace name>
<Path to pvc.yaml file>
adalah lokasi tempat Anda menyimpan file.Volume persisten secara otomatis dibuat sebagai akun penyimpanan Azure, dan terikat dengan klaim volume persisten.
Verifikasi klaim volume persisten.
kubectl describe pvc <PersistentVolumeClaim> -n <name of the namespace>
<PersistentVolumeClaim>
adalah nama klaim volume persisten.Pada langkah sebelumnya, klaim volume persisten diberi nama
mssql-data
. Untuk melihat metadata tentang klaim volume persisten, jalankan perintah berikut:kubectl describe pvc mssql-data -n <namespace name>
Metadata yang dikembalikan menyertakan nilai yang disebut
Volume
. Nilai ini memetakan ke nama blob.Verifikasi volume persisten.
kubectl describe pv -n <namespace name>
kubectl
mengembalikan metadata tentang volume persisten yang secara otomatis dibuat dan terikat pada klaim volume persisten.
Membuat penyebaran
Dalam contoh ini, kontainer yang menghosting instans Azure SQL Edge digambarkan sebagai objek penyebaran Kubernetes. Penyebaran membuat set replika. Set replika membuat pod.
Dalam langkah ini, buat manifes untuk menggambarkan kontainer berdasarkan citra Azure SQL Edge Docker. Manifes mereferensikan klaim volume persisten mssql-data
, dan rahasia mssql
yang sudah Anda terapkan pada kluster Kubernetes. Manifes juga menjelaskan layanan. Layanan ini adalah load balancer. Load balancer menjamin bahwa alamat IP tetap ada setelah instans Azure SQL Edge dipulihkan.
Buat manifes (file YAML) untuk menjelaskan penyebaran. Contoh berikut menjelaskan penyebaran, termasuk kontainer berdasarkan citra kontainer 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
Salin kode sebelumnya ke file baru, bernama
sqldeployment.yaml
. Perbarui nilai berikut ini:MSSQL_PID
value: "Developer"
: Mengatur kontainer untuk menjalankan edisi Azure SQL Edge Developer. Edisi pengembang tidak dilisensikan untuk data produksi. Jika penyebaran untuk penggunaan produksi, atur edisi kePremium
.Catatan
Untuk informasi selengkapnya, lihat Cara melisensikan Azure SQL Edge.
persistentVolumeClaim
: Nilai ini memerlukan entri untukclaimName:
yang memetakan ke nama yang digunakan untuk klaim volume persisten. Tutorial ini menggunakanmssql-data
.name: MSSQL_SA_PASSWORD
: Mengonfigurasi citra kontainer untuk mengatur kata sandi SA, seperti yang ditentukan di bagian ini.valueFrom: secretKeyRef: name: mssql key: MSSQL_SA_PASSWORD
Ketika Kubernetes menyebarkan kontainer, Kubernetes mengacu pada rahasia yang dinamai
mssql
untuk mendapatkan nilai kata sandi.
Catatan
Dengan menggunakan jenis layanan
LoadBalancer
, instans Azure SQL Edge dapat diakses dari jarak jauh (melalui internet) di port 1433.Simpan file (misalnya,
sqledgedeploy.yaml
).Buat penyebaran.
kubectl apply -f <Path to sqledgedeploy.yaml file> -n <namespace name>
<Path to sqldeployment.yaml file>
adalah lokasi tempat Anda menyimpan file.Penyebaran dan layanan dibuat. Instans Azure SQL Edge berada dalam kontainer, terhubung ke penyimpanan persisten.
Untuk melihat status pod, ketik
kubectl get pod -n <namespace name>
.Pada citra sebelumnya, pod memiliki status
Running
. Status ini menunjukkan bahwa kontainer sudah siap. Proses ini mungkin memerlukan waktu beberapa menit.Catatan
Setelah penyebaran dibuat, dibutuhkan beberapa menit sebelum pod terlihat. Penundaan ini karena kluster menarik citra kontainer Azure SQL Edge dari hub Docker. Setelah citra ditarik pertama kalinya, penyebaran berikutnya mungkin lebih cepat jika penyebaran dilakukan ke node yang sudah memiliki citra yang di-cache di atasnya.
Pastikan layanan sedang berjalan. Jalankan perintah berikut:
kubectl get services -n <namespace name>
Perintah ini mengembalikan layanan yang sedang berjalan, serta alamat IP internal dan eksternal untuk layanan. Perhatikan alamat IP eksternal untuk layanan
mssql-deployment
. Gunakan alamat IP ini untuk menyambungkan ke Azure SQL Edge.Untuk informasi selengkapnya tentang status objek di kluster Kubernetes, jalankan:
az aks browse --resource-group <MyResourceGroup> --name <MyKubernetesClustername>
Menyambungkan ke instans Azure SQL Edge
Jika Anda mengonfigurasi kontainer seperti yang dijelaskan, Anda dapat terhubung dengan aplikasi dari luar jaringan virtual Azure. Gunakan akun sa
dan alamat IP eksternal untuk layanan. Gunakan kata sandi yang dikonfigurasi sebagai rahasia Kubernetes. Untuk informasi selengkapnya tentang menyambungkan ke instans Azure SQL Edge, lihat Menyambungkan ke Azure SQL Edge.
Memverifikasi kegagalan dan pemulihan
Untuk memverifikasi kegagalan dan pemulihan, Anda dapat menghapus pod. Lakukan langkah-langkah berikut:
Cantumkan pod yang menjalankan Azure SQL Edge.
kubectl get pods -n <namespace name>
Perhatikan nama pod yang menjalankan Azure SQL Edge.
Hapus pod.
kubectl delete pod sqledge-deployment-7df66c9999-rc9xl
sqledge-deployment-7df66c9999-rc9xl
adalah nilai yang dikembalikan dari langkah sebelumnya untuk nama pod.
Kubernetes secara otomatis membuat ulang pod untuk memulihkan instans Azure SQL Edge, dan terhubung ke penyimpanan persisten. Gunakan kubectl get pods
untuk memverifikasi bahwa sebuah pod baru disebarkan. Gunakan kubectl get services
untuk memverifikasi bahwa alamat IP untuk kontainer baru adalah sama.
Ringkasan
Dalam tutorial ini, kamu belajar cara menyebarkan kontainer Azure SQL Edge ke kluster Kubernetes untuk ketersediaan tinggi.
- Membuat kata sandi SA
- Membuat penyimpanan
- Membuat penyebaran
- Terhubung dengan Azure SQL Edge Management Studios (SSMS)
- Memverifikasi kegagalan dan pemulihan