Kubernetes 'te Azure SQL Edge kapsayıcısı dağıtma
Azure SQL Edge bir Kubernetes kümesine, Kubernetes üzerinde çalışan Azure IoT Edge veya tek başına kapsayıcı Pod olarak bir IoT Edge modülü olarak dağıtılabilir. Bu makalenin geri kalanında, bir Kubernetes kümesinde tek başına kapsayıcı dağıtımına odaklanacağız. Kubernetes üzerinde Azure IoT Edge dağıtma hakkında daha fazla bilgi için, Kubernetes (Önizleme) üzerinde Azure IoT Edgebakın.
Bu öğreticide, bir Kubernetes kümesindeki bir kapsayıcıda yüksek kullanılabilirliğe sahip bir Azure SQL Edge örneğinin nasıl yapılandırılacağı gösterilmektedir.
- SA parolası oluşturma
- Depolama oluşturma
- Dağıtımı oluşturma
- SQL Server Management Studio (SSMS) ile bağlanma
- Hata ve kurtarmayı doğrulama
Kubernetes 1,6 ve üzeri, Depolama sınıfları, kalıcı birim taleplerive Azure disk birimi türüiçin destek içerir. 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ılabilirliğe sahip bir yapılandırmaya ulaşmak üzere bir dağıtım oluşturma işlemi gösterilmektedir. Bu yapılandırmada Kubernetes, küme Orchestrator rolünü yürütür. Bir kapsayıcıda bir Azure SQL Edge örneği başarısız olduğunda, Orchestrator aynı kalıcı depolamaya bağlanan kapsayıcının başka bir örneğini önyükleme.

Yukarıdaki diyagramda, azure-sql-edge Podiçindeki bir kapsayıcıdır. Kubernetes kümedeki kaynakları düzenler. Bir çoğaltma kümesi , bir 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 temsil eder azure-sql-edge .
Aşağıdaki diyagramda azure-sql-edge kapsayıcı başarısız oldu. Orchestrator olarak Kubernetes, çoğaltma kümesindeki sağlıklı örneklerin doğru sayısını garanti eder ve yapılandırmaya göre yeni bir kapsayıcı başlatır. Orchestrator aynı düğümde yeni bir pod başlatır ve azure-sql-edge aynı kalıcı depolamaya yeniden bağlanır. Hizmet yeniden oluşturulmuş olarak bağlanır azure-sql-edge .

Aşağıdaki diyagramda, kapsayıcıyı barındıran düğüm azure-sql-edge başarısız oldu. Orchestrator yeni Pod 'u farklı bir düğümde başlatır ve azure-sql-edge aynı kalıcı depolamaya yeniden bağlanır. Hizmet yeniden oluşturulmuş olarak bağlanır azure-sql-edge .

Önkoşullar
Kubernetes kümesi
Öğretici bir Kubernetes kümesi gerektirir. Bu adımlar, kümeyi yönetmek için kubectl kullanır.
Bu öğreticinin amacı doğrultusunda Azure Kubernetes hizmetini kullanarak Azure SQL Edge 'i dağıtacağız. İle AKS 'de tek düğümlü bir Kubernetes kümesi oluşturup bağlamak için bkz. Azure Kubernetes Service (AKS) kümesi dağıtma
kubectl.
Not
Düğüm hatasına karşı korunmak için, bir Kubernetes kümesi birden fazla düğüm gerektirir.
Azure CLI
- Bu öğreticideki yönergeler, Azure CLı 2.10.1 ile onaylanı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 ve tüm gerekli yapıtları dağıtmak için kullanılacaktı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 gizliyapılandırma bilgilerini yönetebilir.
Aşağıdaki komut, SA hesabı için bir parola oluşturur:
kubectl create secret generic mssql --from-literal=SA_PASSWORD="MyC0m9l&xP@ssw0rd" -n <namespace name>
MyC0m9l&xP@ssw0rdKarmaşık bir parolayla değiştirin.
Depolama oluşturma
Kubernetes kümesinde kalıcı bir 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 talebini tanımlamak için bir bildirim oluşturun. Bildirim, depolama alanı hazırlayıcısı, parametreleri ve geri kazanma ilkesinibelirtir. 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.
azure-diskBu Kubernetes kümesi Azure 'da olduğundan depolama sınıfı hazırlayıcı. Depolama hesabı türüStandard_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: 8GiDosyayı 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ğlanır.

Kalıcı birim talebini doğrulayın.
kubectl describe pvc <PersistentVolumeClaim> -n <name of the namespace><PersistentVolumeClaim>, kalıcı birim talebinin adıdır.Önceki adımda, kalıcı birim talebi olarak adlandırılmıştır
mssql-data. Kalıcı birim talebi hakkındaki meta verileri görmek için şu komutu çalıştırın:kubectl describe pvc mssql-data -n <namespace name>Döndürülen meta veriler adlı bir değer içerir
Volume. Bu değer, Blobun adıyla eşlenir.
Kalıcı birimi doğrulayın.
kubectl describe pv -n <namespace name>kubectlotomatik olarak oluşturulan ve kalıcı birim talebine bağlanan kalıcı birimle ilgili 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çıklanmaktadır. Dağıtım bir çoğaltma kümesi oluşturur. Çoğaltma kümesi Pod öğesini oluşturur.
Bu adımda, Azure SQL Edge Docker görüntüsüne göre kapsayıcıyı açıklamaya yönelik bir bildirim oluşturun. Bildirim, mssql-data kalıcı birim talebine ve mssql Kubernetes kümesine zaten uyguladığınız gizli dizi öğesine başvurur. Bildirim Ayrıca bir hizmetiaçıklar. Bu hizmet bir yük dengeleyicidir. Yük dengeleyici, Azure SQL Edge örneği kurtarıldıktan sonra IP adresinin devam edilmesini sağlar.
- Dağıtımı anlatmak için bir bildirim (YAML dosyası) oluşturun. Aşağıdaki örnek, Azure SQL Edge kapsayıcı görüntüsünü temel alan bir kapsayıcı da dahil olmak üzere bir dağıtımı açıklamaktadı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: 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
Önceki kodu adlı yeni bir dosyaya kopyalayın sqldeployment.yaml . Aşağıdaki değerleri güncelleştirin:
MSSQL_PID
value: "Developer": kapsayıcıyı Azure SQL Edge Developer Edition çalıştıracak şekilde ayarlar. Geliştirici sürümü üretim verileri için lisanslanmaz. Dağıtım üretim kullanımı için ise, sürümünü olarak ayarlayınPremium.Not
Daha fazla bilgi için bkz. Azure SQL Edge 'i lisanslayın.
persistentVolumeClaim: Bu değer, Bu eşlemeler içinclaimName:kalıcı birim talebi için kullanılan ad için bir giriş gerektirir. Bu öğreticidemssql-datakullanılır.name: SA_PASSWORD: Bu bölümde tanımlandığı gibi, SA parolasını ayarlamak için kapsayıcı görüntüsünü yapılandırır.valueFrom: secretKeyRef: name: mssql key: SA_PASSWORDKubernetes kapsayıcıyı dağıttığında, parola değerini almak için adlı gizli dizi anlamına gelir
mssql.
Not
LoadBalancerHizmet türünü kullanarak, 1433 numaralı bağlantı noktasında Azure SQL Edge örneğine uzaktan erişilebilir (Internet üzerinden).
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ıda bulunur.
Pod 'un durumunu görüntülemek için, yazın
kubectl get pod -n <namespace name>.
Önceki görüntüde Pod 'ın durumu vardır
Running. Bu durum kapsayıcının hazırlandığını gösterir. Bu işlem birkaç dakika sürebilir.Not
Dağıtım oluşturulduktan sonra Pod 'ın görünür olması birkaç dakika sürebilir. Gecikme, kümenin Azure SQL Edge kapsayıcı görüntüsünü Docker Hub 'ından çekmesi nedeniyle oluşur. Görüntü ilk kez çekildikten sonra, dağıtım görüntünün üzerine önbelleğe alınmış bir düğüm ise 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ıştıran Hizmetleri ve hizmetlerin iç ve dış IP adreslerini döndürür. Hizmetin dış IP adresini aklınızda 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ığı şekilde yapılandırdıysanız Azure sanal ağı dışından bir uygulamayla bağlantı oluşturabilirsiniz. saHizmet için hesabı ve dış IP adresini kullanın. Kubernetes gizli anahtarı olarak yapılandırdığınız parolayı kullanın. Azure SQL Edge örneğine bağlanma hakkında daha fazla bilgi için Azure SQL Edge 'e bağlanmabölümüne bakın.
Hata ve kurtarmayı doğrulama
Hata ve kurtarmayı doğrulamak için pod 'yi silebilirsiniz. Aşağıdaki adımları uygulayın:
Azure SQL Edge çalıştıran Pod 'ın listesini listeleyin.
kubectl get pods -n <namespace name>Azure SQL Edge çalıştıran Pod 'ın adını aklınızda edin.
Pod öğesini silin.
kubectl delete pod sqledge-deployment-7df66c9999-rc9xlsqledge-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 pod 'yi otomatik olarak yeniden oluşturur. kubectl get podsYeni bir pod 'ın dağıtıldığını doğrulamak için kullanın. kubectl get servicesYeni KAPSAYıCıNıN IP adresinin aynı olduğunu doğrulamak için kullanın.
Ö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
- Hata ve kurtarmayı doğrulama