نشر حاوية Azure SQL Edge في Kubernetes
هام
سيتم إيقاف Azure SQL Edge في 30 سبتمبر 2025. لمزيد من المعلومات وخيارات الترحيل، راجع إشعار الإيقاف.
إشعار
لم يعد Azure SQL Edge يدعم النظام الأساسي ARM64.
يمكن نشر Azure SQL Edge على مجموعة Kubernetes سواء كوحدة IoT Edge من خلال Azure IoT Edge الذي يعمل على Kubernetes، أو كحجيرة حاوية مستقلة. بالنسبة لبقية هذه المقالة، سنركز على نشر الحاوية المستقلة على مجموعة Kubernetes. للحصول على معلومات حول نشر Azure IoT Edge على Kubernetes، راجع Azure IoT Edge على Kubernetes (معاينة).
يوضح هذا البرنامج التعليمي كيفية تكوين مثيل Azure SQL Edge عالي التوفر في حاوية على مجموعة Kubernetes.
- إنشاء كلمة مرور مسؤول النظام
- إنشاء مساحة تخزين
- إنشاء النشر
- التواصل باستخدامSQL Server Management Studio
- التحقق من الفشل والاسترداد
يدعم الإصدار 1.6 من Kubernetes والإصدارات الأحدث فئات التخزين و مطالبات وحدة التخزين الثابتة و نوع وحدة تخزين قرص Azure . يمكنك إنشاء مثيلات Azure SQL Edge وإدارتها محليًا في Kubernetes. يوضح المثال في هذه المقالة طريقة إنشاء نشر تحقيق تكوين توفر عالٍ مشابه لمثيل مجموعة تجاوز فشل القرص المشترك. في هذا التكوين، يلعب Kubernetes دور منسق المجموعة. عندما يفشل مثيل Azure SQL Edge في حاوية، يُشغل المنسق مثيلاً آخر من الحاوية المرفقة بنفس التخزين الدائم.
في الرسم التخطيطي السابق، azure-sql-edge
عبارة عن حاوية في قرن . Kubernetes تنسق الموارد في الكتلة. تضمن مجموعة النسخ المتماثلة استرداد الجراب تلقائيًا بعد فشل العقدة. تتصل التطبيقات بالخدمة. في هذه الحالة، تمثل الخدمة موزع حمل يستضيف عنوان IP يظل كما هو بعد فشل azure-sql-edge
.
في الرسم التخطيطي التالي، فشلت حاوية azure-sql-edge
. بصفته المنسق، يضمن Kubernetes العدد الصحيح للمثيلات السليمة في مجموعة النسخ المتماثلة، ويبدأ حاوية جديدة وفقًا للتهيئة. يبدأ المنظم حجرة جديدة على نفس العقدة، وazure-sql-edge
يعيد الاتصال بنفس التخزين الدائم. تتصل الخدمة بـ azure-sql-edge
المعاد إنشاؤه.
في الرسم التخطيطي التالي، فشلت العقدة التي تستضيف الحاوية azure-sql-edge
. يبدأ المنظم الجراب الجديد على عقدة مختلفة، وazure-sql-edge
يعيد الاتصال بنفس التخزين الدائم. تتصل الخدمة بـ azure-sql-edge
المعاد إنشاؤه.
المتطلبات الأساسية
مجموعة Kubernetes
البرنامج التعليمي يتطلب مجموعة Kubernetes. تستخدم الخطوات kubectl لإدارة المجموعة.
لغرض هذا البرنامج التعليمي، نستخدم خدمة Azure Kubernetes لنشر Azure SQL Edge. يرجى النظر إلى نشر مجموعة Azure Kubernetes Service(AKS) لإنشاء مجموعة Kubernetes أحادية العقدة والاتصال بها في AKS باستخدام
kubectl
.
إشعار
للحماية من فشل العقدة، تتطلب مجموعة Kubernetes أكثر من عقدة واحدة.
Azure CLI
- التحقق من صحة الإرشادات الواردة في هذا البرنامج التعليمي مقابل Azure CLI 2.10.1.
إنشاء مساحة اسم Kubernetes لنشر SQL Edge
إنشاء مساحة اسم جديدة في مجموعة kubernetes. يتم استخدام مساحة الاسم هذه لنشر SQL Edge وجميع البيانات الاصطناعية المطلوبة. لمزيد من المعلومات حول مساحات أسماء Kubernetes، راجع مساحات الأسماء.
kubectl create namespace <namespace name>
إنشاء كلمة مرور مسؤول النظام
إنشاء كلمة مرور مسؤول النظام في كتلة Kubernetes. يمكن لنظام Kubernetes إدارة معلومات التهيئة الحساسة، مثل كلمات المرور باعتبارها معلومات سرية .
يُنشئ الأمر التالي كلمة مرور لحساب مسؤول النظام:
kubectl create secret generic mssql --from-literal=MSQL_SA_PASSWORD="<password>" -n <namespace name>
استبدل MyC0m9l&xP@ssw0rd
بكلمة مرور معقدة.
إنشاء مساحة تخزين
تهيئة وحدة تخزين ثابتة و مطالبة وحدة تخزين ثابتة في مجموعة Kubernetes. أكمل الخطوات التالية:
إنشاء بيان لتحديد فئة التخزين والمطالبة بوحدة التخزين الدائمة. يحدد البيان موجه التخزين والمعلمات و سياسة الاسترداد . تستخدم مجموعة Kubernetes هذا البيان لإنشاء التخزين الدائم.
يعرّف مثال yaml التالي فئة التخزين والمطالبة بالحجم الثابت. موجه فئة التخزين هو
azure-disk
، لأن مجموعة Kubernetes موجودة في Azure. نوع حساب التخزين هوStandard_LRS
. سُميت مطالبة المجلد الدائمة باسمmssql-data
. تتضمن بيانات التعريف لمطالبة وحدة التخزين الثابتة تعليقًا توضيحيًا يربطها مرة أخرى بفئة التخزين.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
حفظ الملف (على سبيل المثال، pvc.yaml ).
إنشاء مطالبة وحدة التخزين الدائمة في Kubernetes.
kubectl apply -f <Path to pvc.yaml file> -n <namespace name>
<Path to pvc.yaml file>
هو المكان الذي حُفظ فيه الملف.إنشاء وحدة التخزين الدائمة تلقائيًا كحساب تخزين Azure، وتكون مرتبطة بمطالبة وحدة التخزين الدائمة.
تحقق من مطالبة الحجم المستمرة.
kubectl describe pvc <PersistentVolumeClaim> -n <name of the namespace>
<PersistentVolumeClaim>
هو اسم مطالبة المجلد الدائمة.في الخطوة السابقة، سُميت مطالبة المجلد الدائمة باسم
mssql-data
. لمشاهدة بيانات التعريف حول مطالبة وحدة التخزين الدائمة، يجب تشغيل الأمر التالي:kubectl describe pvc mssql-data -n <namespace name>
تتضمن بيانات التعريف التي أُرجعت قيمة تسمى
Volume
. تعيين القيمة هذه إلى اسم كائن ثنائي كبير الحجم.التحقق من مستوى الصوت الثابت.
kubectl describe pv -n <namespace name>
يعرض
kubectl
بيانات التعريف حول وحدة التخزين الدائمة التي أُنشئت تلقائيًا ورُبطت بمطالبة وحدة التخزين الدائمة.
إنشاء النشر
في هذا المثال، تُوصف الحاوية التي تستضيف مثيل Azure SQL Edge على أنها كائن نشر Kubernetes. يؤدي النشر إلى إنشاء مجموعة نسخ متماثلة. تُنشئ مجموعة النسخ المتماثلة الجراب.
في هذه الخطوة، إنشاء بيان لوصف الحاوية بناءً على صورة Azure SQL Edge Docker. يشير البيان إلى mssql-data
مطالبة وحدة التخزين الدائمة و mssql
السر الذي طُبق بالفعل على مجموعة Kubernetes. يصف البيان أيضًا خدمة . هذه الخدمة عبارة عن موزع حمل. يضمن موزع الحمل استمرار عنوان IP بعد استرداد مثيل Azure SQL Edge.
إنشاء بيان (ملف YAML) لوصف النشر. يصف المثال التالي عملية نشر، بما في ذلك حاوية تستند إلى صورة حاوية 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
نسخ الكود السابق في ملف جديد باسم
sqldeployment.yaml
. حدّث القيم التالية:MSSQL_PID
value: "Developer"
: تعيين الحاوية لتشغيل إصدار Azure SQL Edge Developer. إصدار المطور غير مرخص لبيانات الإنتاج. إذا كان النشر للاستخدام الإنتاجي، فيجب تعيين الإصدار علىPremium
.إشعار
لمزيد من المعلومات، يرجى الرجوع إلى كيفية ترخيص Azure SQL Edge .
persistentVolumeClaim
: تتطلب هذه القيمة إدخالاً لـclaimName:
يعيّن الاسم المستخدم لمطالبة وحدة التخزين الدائمة. يستخدم هذا البرنامج التعليميmssql-data
.name: MSSQL_SA_PASSWORD
: تكوين صورة الحاوية لتعيين كلمة مرور مسؤول النظام، على النحو المحدد في هذا القسم.valueFrom: secretKeyRef: name: mssql key: MSSQL_SA_PASSWORD
عند نشر Kubernetes للحاوية، فإن هذا يشير إلى المعلومات السرية المسماة
mssql
للحصول على قيمة كلمة المرور.
إشعار
باستخدام نوع الخدمة
LoadBalancer
، يمكن الوصول إلى مثيل Azure SQL Edge عن بُعد (عبر الإنترنت) في المنفذ 1433.احفظ الملف (على سبيل المثال،
sqledgedeploy.yaml
).إنشاء النشر.
kubectl apply -f <Path to sqledgedeploy.yaml file> -n <namespace name>
<Path to sqldeployment.yaml file>
هو المكان الذي حُفظ فيه الملف.إنشاء النشر والخدمة. مثيل Azure SQL Edge موجود في حاوية، ومتصل بالتخزين الدائم.
لعرض حالة الجراب، اكتب
kubectl get pod -n <namespace name>
.في الصورة السابقة، تكون للجراب حالة
Running
. تشير هذه الحالة إلى أن الحاوية جاهزة. قد يستغرق الأمر عدة دقائق.إشعار
بعد إنشاء النشر، يمكن أن يستغرق الأمر بضع دقائق قبل أن يصبح الجراب مرئياً. يرجع التأخير إلى قيام نظام المجموعة بسحب صورة حاوية Azure SQL Edge من لوحة Docker. بعد سحب الصورة في المرة الأولى، قد تكون عمليات النشر اللاحقة أسرع إذا كان النشر إلى عقدة تحتوي بالفعل على الصورة المخزنة مؤقتاً عليها.
تحقق من تشغيل الخدمات. شغّل الأمر التالي:
kubectl get services -n <namespace name>
يقوم هذا الأمر بإرجاع الخدمات قيد التشغيل، بالإضافة إلى عناوين IP الداخلية والخارجية للخدمات. ملاحظة عنوان IP الخارجي لخدمة
mssql-deployment
. استخدام عنوان IP هذا للاتصال بـ Azure SQL Edge.لمزيد من المعلومات حول حالة الكائنات في مجموعة Kubernetes، يجب تشغيل:
az aks browse --resource-group <MyResourceGroup> --name <MyKubernetesClustername>
الاتصال بمثيل Azure SQL Edge
إذا كونت الحاوية كما هو موضح، يمكن الاتصال بتطبيق من خارج شبكة Azure الظاهرية. استخدام حساب sa
وعنوان IP الخارجي للخدمة. استخدام كلمة المرور التي كونت على أنها سر Kubernetes. لمزيد من المعلومات حول الاتصال بمثيل Azure SQL Edge، راجع الاتصال ب Azure SQL Edge.
التحقق من الفشل والاسترداد
للتحقق من الفشل والاسترداد، يمكن حذف الجراب. قم بالخطوات التالية:
تقويم جراب تشغيل Azure SQL Edge.
kubectl get pods -n <namespace name>
لاحظ اسم الجراب الذي يُشغل Azure SQL Edge.
حذف الجراب.
kubectl delete pod sqledge-deployment-7df66c9999-rc9xl
sqledge-deployment-7df66c9999-rc9xl
هي القيمة التي أُرجعت من الخطوة السابقة لاسم المجموعة.
يُعيد Kubernetes تلقائياً إنشاء الجراب لاستعادة مثيل Azure SQL Edge والاتصال بالتخزين الدائم. استخدام kubectl get pods
للتحقق من نشر الجراب الجديد. استخدام kubectl get services
للتحقق من أن عنوان IP للحاوية الجديدة هو نفسه.
الملخص
في هذا البرنامج التعليمي، نتعلم طريقة نشر حاويات Azure SQL Edge إلى مجموعة Kubernetes عالية التوفر.
- إنشاء كلمة مرور مسؤول النظام
- إنشاء مساحة تخزين
- إنشاء النشر
- الاتصال بـAzure SQL Edge Management Studios (SSMS)
- التحقق من الفشل والاسترداد