Kubernetes'te Azure SQL Edge kapsayıcısı dağıtma
Önemli
Azure SQL Edge 30 Eylül 2025'te kullanımdan kaldırılacaktır. Daha fazla bilgi ve geçiş seçenekleri için Bkz . Kullanımdan kaldırma bildirimi.
Not
Azure SQL Edge artık ARM64 platformunu desteklememektedir.
Azure SQL Edge, Kubernetes kümesinde hem Kubernetes üzerinde çalışan Azure IoT Edge aracılığıyla IoT Edge modülü olarak hem de tek başına kapsayıcı podu olarak dağıtılabilir. Bu makalenin geri kalanında Kubernetes kümesinde tek başına kapsayıcı dağıtımına odaklanacağız. Kubernetes'te Azure IoT Edge'i dağıtma hakkında bilgi için bkz . Kubernetes'te Azure IoT Edge (önizleme).
Bu öğreticide, Kubernetes kümesindeki bir kapsayıcıda yüksek oranda kullanılabilir bir Azure SQL Edge örneğinin nasıl yapılandırılır gösterilmektedir.
- SA parolası oluşturma
- Depolama oluşturma
- Dağıtımı oluşturma
- SQL Server Management Studio (SSMS) ile bağlanma
- Hatayı ve kurtarmayı doğrulama
Kubernetes 1.6 ve üzeri depolama sınıfları, kalıcı birim talepleri ve Azure disk birimi türü desteğine sahiptir. Azure SQL Edge örneklerinizi Kubernetes'te yerel olarak oluşturabilir ve yönetebilirsiniz. Bu makaledeki örnekte, paylaşılan disk yük devretme kümesi örneğine benzer yüksek kullanılabilirlik yapılandırması elde etmek için dağıtımın nasıl oluşturulacağı gösterilmektedir. Bu yapılandırmada Kubernetes, küme düzenleyici rolünü üstlenir. Kapsayıcıdaki bir Azure SQL Edge örneği başarısız olduğunda, orchestrator kapsayıcının aynı kalıcı depolamaya bağlanan başka bir örneğini önyükler.
Yukarıdaki diyagramda, azure-sql-edge
pod içindeki bir kapsayıcıdır. Kubernetes, kümedeki kaynakları düzenler. Çoğaltma kümesi, düğüm hatasından sonra pod'un otomatik olarak kurtarılmasını sağlar. Uygulamalar hizmete bağlanır. Bu durumda hizmet, hatasından sonra aynı kalan bir IP adresini barındıran bir yük dengeleyiciyi azure-sql-edge
temsil eder.
Aşağıdaki diyagramda azure-sql-edge
kapsayıcı başarısız oldu. Düzenleyici olarak Kubernetes, çoğaltma kümesindeki iyi durumdaki örneklerin doğru sayısını garanti eder ve yapılandırmaya göre yeni bir kapsayıcı başlatır. Düzenleyici aynı düğümde yeni bir pod başlatır ve azure-sql-edge
aynı kalıcı depolama alanına yeniden bağlanır. Hizmet yeniden oluşturulan azure-sql-edge
öğesine bağlanır.
Aşağıdaki diyagramda kapsayıcıyı azure-sql-edge
barındıran düğüm başarısız oldu. Düzenleyici yeni podu farklı bir düğümde başlatır ve azure-sql-edge
aynı kalıcı depolama alanına yeniden bağlanır. Hizmet yeniden oluşturulan azure-sql-edge
öğesine bağlanır.
Önkoşullar
Kubernetes kümesi
Öğretici bir Kubernetes kümesi gerektirir. Bu adımlarda kümeyi yönetmek için kubectl kullanılır.
Bu öğreticinin amacı doğrultusunda Azure SQL Edge'i dağıtmak için Azure Kubernetes Service'i kullanıyoruz. ile
kubectl
AKS'de tek düğümlü bir Kubernetes kümesi oluşturmak ve bu kümeye bağlanmak için bkz. Azure Kubernetes Service (AKS) kümesi dağıtma.
Not
Düğüm hatasına karşı koruma sağlamak için Kubernetes kümesi birden fazla düğüm gerektirir.
Azure CLI
- Bu öğreticideki yönergeler Azure CLI 2.10.1'de doğrulanmıştır.
SQL Edge dağıtımı için Kubernetes ad alanı oluşturma
kubernetes kümesinde yeni bir ad alanı oluşturun. Bu ad alanı SQL Edge'i ve gerekli tüm yapıtları dağıtmak için kullanılır. Kubernetes ad alanları hakkında daha fazla bilgi için bkz . ad alanları.
kubectl create namespace <namespace name>
SA parolası oluşturma
Kubernetes kümesinde bir SA parolası oluşturun. Kubernetes parolalar gibi gizli diziler gibi hassas yapılandırma bilgilerini yönetebilir.
Aşağıdaki komut, SA hesabı için bir parola oluşturur:
kubectl create secret generic mssql --from-literal=MSQL_SA_PASSWORD="<password>" -n <namespace name>
değerini karmaşık bir parolayla değiştirin MyC0m9l&xP@ssw0rd
.
Depolama oluşturma
Kubernetes kümesinde kalıcı birim ve kalıcı birim talebi yapılandırın. Aşağıdaki adımları tamamlayın:
Depolama sınıfını ve kalıcı birim talebi tanımlamak için bir bildirim oluşturun. Bildirim depolama sağlamayı, parametreleri ve geri kazanma ilkesini belirtir. Kubernetes kümesi, kalıcı depolamayı oluşturmak için bu bildirimi kullanır.
Aşağıdaki yaml örneği bir depolama sınıfı ve kalıcı birim talebi tanımlar. Bu Kubernetes kümesi Azure'da olduğundan depolama sınıfı hazırlayıcısı
azure-disk
şeklindedir. Depolama hesabı türü şeklindedirStandard_LRS
. Kalıcı birim talebi olarak adlandırılırmssql-data
. Kalıcı birim talebi meta verileri, depolama sınıfına geri bağlayan bir ek açıklama içerir.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
Dosyayı kaydedin (örneğin, pvc.yaml).
Kubernetes'te kalıcı birim talebi oluşturun.
kubectl apply -f <Path to pvc.yaml file> -n <namespace name>
<Path to pvc.yaml file>
, dosyayı kaydettiğiniz konumdur.Kalıcı birim otomatik olarak bir Azure depolama hesabı olarak oluşturulur ve kalıcı birim talebine bağlıdır.
Kalıcı birim talebi doğrulayın.
kubectl describe pvc <PersistentVolumeClaim> -n <name of the namespace>
<PersistentVolumeClaim>
kalıcı birim talebi adıdır.Önceki adımda kalıcı birim talebi olarak adlandırılır
mssql-data
. Kalıcı birim talebi hakkındaki meta verileri görmek için aşağıdaki komutu çalıştırın:kubectl describe pvc mssql-data -n <namespace name>
Döndürülen meta veriler adlı
Volume
bir değer içerir. Bu değer blobun adıyla eşler.Kalıcı birimi doğrulayın.
kubectl describe pv -n <namespace name>
kubectl
otomatik olarak oluşturulan ve kalıcı birim talebine bağlı kalıcı birim hakkındaki meta verileri döndürür.
Dağıtımı oluşturma
Bu örnekte, Azure SQL Edge örneğini barındıran kapsayıcı bir Kubernetes dağıtım nesnesi olarak açıklanmıştır. Dağıtım bir çoğaltma kümesi oluşturur. Çoğaltma kümesi pod'unu oluşturur.
Bu adımda, Azure SQL Edge Docker görüntüsünü temel alan kapsayıcıyı açıklamak için bir bildirim oluşturun. Bildirim, kalıcı birim talebine mssql-data
ve Kubernetes kümesine mssql
zaten uyguladığınız gizli diziye başvurur. Bildirimde bir hizmet de açıklanır. Bu hizmet bir yük dengeleyicidir. Yük dengeleyici, Azure SQL Edge örneği kurtarıldıktan sonra IP adresinin kalıcı olduğunu garanti eder.
Dağıtımı açıklamak için bir bildirim (YAML dosyası) oluşturun. Aşağıdaki örnekte, Azure SQL Edge kapsayıcı görüntüsünü temel alan bir kapsayıcı dahil olmak üzere bir dağıtım açıklanmaktadır.
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
Önceki kodu adlı
sqldeployment.yaml
yeni bir dosyaya kopyalayın. Aşağıdaki değerleri güncelleştirin:value: "Developer"
MSSQL_PID: Kapsayıcıyı Azure SQL Edge Geliştirici sürümünü çalıştıracak şekilde ayarlar. Geliştirici sürümü üretim verileri için lisanslı değildir. Dağıtım üretim kullanımına yönelikse, sürümü olarakPremium
ayarlayın.Not
Daha fazla bilgi için bkz . Azure SQL Edge'i lisans etme.
persistentVolumeClaim
: Bu değer, kalıcı birim talebi içinclaimName:
kullanılan ada eşleyen bir girdi gerektirir. Bu öğreticidemssql-data
kullanılır.name: MSSQL_SA_PASSWORD
: Kapsayıcı görüntüsünü, bu bölümde tanımlandığı gibi SA parolasını ayaracak şekilde yapılandırır.valueFrom: secretKeyRef: name: mssql key: MSSQL_SA_PASSWORD
Kubernetes kapsayıcıyı dağıttığında, parolanın değerini almak için adlı
mssql
gizli diziye başvurur.
Not
Hizmet türü kullanılarak
LoadBalancer
Azure SQL Edge örneğine 1433 numaralı bağlantı noktasından uzaktan (İnternet üzerinden) erişilebilir.Dosyayı kaydedin (örneğin,
sqledgedeploy.yaml
).Dağıtımı oluşturun.
kubectl apply -f <Path to sqledgedeploy.yaml file> -n <namespace name>
<Path to sqldeployment.yaml file>
, dosyayı kaydettiğiniz konumdur.Dağıtım ve hizmet oluşturulur. Azure SQL Edge örneği, kalıcı depolamaya bağlı bir kapsayıcıdadır.
Podun durumunu görüntülemek için yazın
kubectl get pod -n <namespace name>
.Yukarıdaki görüntüde podun durumu şeklindedir
Running
. Bu durum kapsayıcının hazır olduğunu gösterir. Bu işlem birkaç dakika sürebilir.Not
Dağıtım oluşturulduktan sonra pod'un görünmesi birkaç dakika sürebilir. Gecikmenin nedeni, kümenin Docker hub'ından Azure SQL Edge kapsayıcı görüntüsünü çekmesidir. Görüntü ilk kez çekildikten sonra, dağıtım görüntünün zaten önbelleğe alınmış olduğu bir düğümdeyse sonraki dağıtımlar daha hızlı olabilir.
Hizmetlerin çalıştığını doğrulayın. Şu komutu çalıştırın:
kubectl get services -n <namespace name>
Bu komut, çalışan hizmetlerin yanı sıra hizmetlerin iç ve dış IP adreslerini döndürür. Hizmetin dış IP adresini not edin
mssql-deployment
. Azure SQL Edge'e bağlanmak için bu IP adresini kullanın.Kubernetes kümesindeki nesnelerin durumu hakkında daha fazla bilgi için şunu çalıştırın:
az aks browse --resource-group <MyResourceGroup> --name <MyKubernetesClustername>
Azure SQL Edge örneğine bağlanma
Kapsayıcıyı açıklandığı gibi yapılandırdıysanız Azure sanal ağının dışından bir uygulamaya bağlanabilirsiniz. sa
Hizmet için hesabı ve dış IP adresini kullanın. Kubernetes gizli dizisi olarak yapılandırdığınız parolayı kullanın. Azure SQL Edge örneğine bağlanma hakkında daha fazla bilgi için bkz . Azure SQL Edge'e bağlanma.
Hatayı ve kurtarmayı doğrulama
Hatayı ve kurtarmayı doğrulamak için podu silebilirsiniz. Aşağıdaki adımları yapın:
Azure SQL Edge çalıştıran podları listeleyin.
kubectl get pods -n <namespace name>
Azure SQL Edge çalıştıran podun adını not edin.
Podu silin.
kubectl delete pod sqledge-deployment-7df66c9999-rc9xl
sqledge-deployment-7df66c9999-rc9xl
pod adı için önceki adımdan döndürülen değerdir.
Kubernetes, bir Azure SQL Edge örneğini kurtarmak ve kalıcı depolamaya bağlanmak için podu otomatik olarak yeniden oluşturur. Yeni bir pod dağıtıldığını doğrulamak için kullanın kubectl get pods
. Yeni kapsayıcının IP adresinin aynı olduğunu doğrulamak için kullanın kubectl get services
.
Özet
Bu öğreticide, yüksek kullanılabilirlik için Azure SQL Edge kapsayıcılarını bir Kubernetes kümesine dağıtmayı öğrendiniz.
- SA parolası oluşturma
- Depolama oluşturma
- Dağıtımı oluşturma
- Azure SQL Edge Management Studios (SSMS) ile bağlanma
- Hatayı ve kurtarmayı doğrulama
İlgili içerik
- Kubernetes'e giriş
- SQL Edge'de ONNX ile Makine Öğrenmesi ve Yapay Zeka.
- IoT Edge kullanarak SQL Edge ile uçtan uca IoT Çözümü oluşturma.
- Azure SQL Edge'de Veri Akışı