Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:Linux üzerinde SQL Server
Bu hızlı başlangıçta, Azure Kubernetes Service (AKS) veya Red Hat OpenShift üzerinde kalıcı depolamaya sahip bir kapsayıcıda yüksek oranda kullanılabilir bir SQL Server örneğinin nasıl yapılandırleneceği gösterilmektedir. SQL Server örneği başarısız olursa, düzenleyici bunu yeni bir podda otomatik olarak yeniden oluşturur. Küme hizmeti ayrıca düğüm hatasına karşı dayanıklılık sağlar.
Bu hızlı başlangıçta kümeyi yönetmek için aşağıdaki komut satırı araçları kullanılır.
| Küme hizmeti | Komut satırı aracı |
|---|---|
| Azure Kubernetes Hizmeti (AKS) | kubectl (Kubernetes CLI) |
| Azure Red Hat OpenShift | oc (OpenShift CLI) |
Önkoşullar
Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
Kubernetes kümesi.
kubectlile AKS'de kubernetes kümesi oluşturma ve bu kümeye bağlanma hakkında daha fazla bilgi için bkz. Azure Kubernetes Service (AKS) kümesini dağıtma.Uyarı
Düğüm hatasına karşı koruma sağlamak için Kubernetes kümesi birden fazla düğüm gerektirir.
Azure CLI. Azure CLI'nin en son sürümünü yüklemek için, Azure CLI yükleme kılavuzuna bakın .
SA parolası oluşturma
Sistem yöneticisi (sa) hesabının güvenliği güçlü bir parolayla sağlanmalıdır. Parolanız,SQL Server varsayılan
Kubernetes kümesinde bir
saparolası oluşturun. Kubernetes, parola gibi gizli bilgiler içeren hassas yapılandırma bilgilerini yönetebilir.Kubernetes'te
mssqliçin<password>değerini tutanMSSQL_SA_PASSWORDadlı bir gizli dizi oluşturmak için aşağıdaki komutu çalıştırın.<password>'ı karmaşık parolanızla değiştirin.Önemli
SA_PASSWORDortam değişkeni kullanım dışıdır. Bunun yerineMSSQL_SA_PASSWORDkullanın.kubectl create secret generic mssql --from-literal=MSSQL_SA_PASSWORD="<password>"
Depolama oluşturma
Kubernetes kümesindeki bir veritabanı için kalıcı depolama kullanmanız gerekir. Aşağıdaki adımları kullanarak Kubernetes kümesinde kalıcı birim talebi kalıcı birim ve kalıcı birim talebi yapılandırabilirsiniz:
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 isteğimssql-dataolarak adlandırılır. 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; burada
<path to pvc.yaml file>dosyayı kaydettiğiniz konumdur:kubectl apply -f <path to pvc.yaml file>Kalıcı birim otomatik olarak bir Azure depolama hesabı olarak oluşturulur ve kalıcı birim talebine bağlıdır.
storageclass "azure-disk" created persistentvolumeclaim "mssql-data" createdKalıcı birim talebi olduğunu doğrulayın, burada
<persistentVolumeClaim>kalıcı birim talebi adıdır:kubectl describe pvc <persistentVolumeClaim>Ö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-dataDöndürülen meta veriler,
Volumeadlı bir değer içerir. Bu değer blob'un adıyla ilişkilendirilir.Name: mssql-data Namespace: default StorageClass: azure-disk Status: Bound Volume: pvc-d169b88e-f26d-11e7-bc3e-0a58ac1f09a4 Labels: ‹none> Annotations: kubectl.kubernetes.io/last-applied-configuration-{"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{"volume.beta. kubernetes.io/storage-class":"azure-disk"},"name":"mssq1-data... pv.kubernetes.io/bind-completed-yes pv.kubernetes.io/bound-by-controller=yes volume.beta.kubernetes.io/storage-class=azure-disk volume.beta.kubernetes.io/storage-provisioner=kubernetes.io/azure-disk Capacity: 8Gi Access Modes: RWO Events: <none>Hacim için belirlenen değer, Azure portalındaki blob adının bir bölümüne denk gelir.
Kalıcı hacmi doğrulayın.
kubectl describe pvkubectlotomatik 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şturun
SQL Server örneğini barındıran kapsayıcı, Kubernetesdağıtım nesnesi olarak tanımlanır. Dağıtım, çoğaltma kümesioluşturur. Çoğaltma kümesi podunuoluşturur.
SQL Server mssql-server-linux Docker görüntüsünü temel alarak kapsayıcıyı açıklamak için bir bildirim oluşturursunuz.
- Bildirim, kalıcı birim talebine
mssql-serverve Kubernetes kümesinemssqlzaten uyguladığınız gizli diziye başvurur. - Bildirimde bir hizmet de açıklanır. Bu hizmet bir yük dengeleyicidir. Yük dengeleyici, SQL Server örneği kurtarıldıktan sonra IP adresinin kalıcı olduğunu garanti eder.
- Bildirim, kaynak isteklerini ve sınırlarını açıklar. Bu gereksinimler, en düşük sistem gereksinimlerine dayanmaktadır.
Dağıtımı açıklamak için bir bildirim (YAML dosyası) oluşturun. Aşağıdaki örnekte, SQL Server kapsayıcı görüntüsünü temel alan bir kapsayıcı da dahil olmak üzere bir dağıtım açıklanmaktadır.
apiVersion: apps/v1 kind: Deployment metadata: name: mssql-deployment spec: replicas: 1 selector: matchLabels: app: mssql template: metadata: labels: app: mssql spec: terminationGracePeriodSeconds: 30 hostname: mssqlinst securityContext: fsGroup: 10001 containers: - name: mssql image: mcr.microsoft.com/mssql/server:2022-latest resources: requests: memory: "2G" cpu: "2000m" limits: memory: "2G" cpu: "2000m" ports: - containerPort: 1433 env: - name: MSSQL_PID value: "Developer" - name: ACCEPT_EULA value: "Y" - name: MSSQL_SA_PASSWORD valueFrom: secretKeyRef: name: mssql key: MSSQL_SA_PASSWORD volumeMounts: - name: mssqldb mountPath: /var/opt/mssql volumes: - name: mssqldb persistentVolumeClaim: claimName: mssql-data --- apiVersion: v1 kind: Service metadata: name: mssql-deployment spec: selector: app: mssql ports: - protocol: TCP port: 1433 targetPort: 1433 type: LoadBalancerÖnceki kodu adlı
sqldeployment.yamlyeni bir dosyaya kopyalayın. Aşağıdaki değerleri güncelleştirin:Parametre Değer Description MSSQL_PIDDeveloperKapsayıcıyı SQL Server 2022 (16.x) Developer 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 amaçlıysa, uygun sürümü ( Enterprise,StandardveyaExpress) ayarlayın. Daha fazla bilgi için bkz . SQL Server'ı lisans etme.persistentVolumeClaimmssql-dataBu değer, kalıcı birim talebi için claimNamekullanılan ada eşleyen bir giriş gerektirir. Bu öğreticimssql-datakullanır.nameMSSQL_SA_PASSWORDKapsayıcı görüntüsünü, bu bölümde tanımlandığı gibi parolayı saayaracak şekilde yapılandırır.valueFrom: secretKeyRef: name: mssql key: MSSQL_SA_PASSWORDKubernetes kapsayıcıyı dağıttığında, parolanın değerini almak için
mssqladlı sırra başvurur.Parametre Description securityContextPod veya kapsayıcı için ayrıcalık ve erişim denetimi ayarlarını tanımlar. Bu durumda, pod düzeyinde belirtilir, bu nedenle tüm kapsayıcılar bu güvenlik bağlamını kullanır. Güvenlik bağlamında, fsGroupgrubunun Grup Kimliği (GID) olan10001değeriylemssqltanımlarız. Bu değer, kapsayıcının tüm işlemlerinin aynı zamanda tamamlayıcı GID10001(mssql) parçası olduğu anlamına gelir. Birim/var/opt/mssqlve bu birimde oluşturulan tüm dosyaların sahibi GID10001(mssqlgrubu) olacaktır.Uyarı
LoadBalancerhizmet türü kullanılarak SQL Server örneğine 1433 numaralı bağlantı noktasından uzaktan (İnternet üzerinden) erişilebilir.Dosyayı kaydedin. Örneğin,
sqldeployment.yaml.Dosyayı kaydettiğiniz yer olan
<path to sqldeployment.yaml file>'da dağıtımı oluşturun.kubectl apply -f <path to sqldeployment.yaml file>Dağıtım ve hizmet oluşturulur. SQL Server örneği, kalıcı depolamaya bağlı bir kapsayıcıdadır.
deployment "mssql-deployment" created service "mssql-deployment" createdDağıtım ve hizmet oluşturulur. SQL Server ö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.NAME READY STATUS RESTARTS AGE mssql-deployment-3813464711-h312s 1/1 Running 0 17mPodun durumu
Runningolarak görünüyor. Bu durum kapsayıcının hazır olduğunu gösterir. Dağıtım oluşturulduktan sonra, pod'un görünür hale gelmesi birkaç dakika sürebilir. Gecikmenin nedeni, kümenin mssql-server-linux görüntüsünü Microsoft Artifact Registry'den çekmesidir. Görüntü ilk kez çekildikten sonra, dağıtım yapılan düğümde görüntü zaten önbelleğe alınmışsa sonraki dağıtımlar daha hızlı olabilir.Hizmetlerin çalıştığını doğrulayın. Aşağıdaki komutu çalıştırın:
kubectl get servicesBu komut, çalışan hizmetleri ve hizmetlerin iç ve dış IP adreslerini döndürür. Hizmetin dış IP adresini not edin
mssql-deployment. SQL Server'a bağlanmak için bu IP adresini kullanın.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 52m mssql-deployment LoadBalancer 10.0.113.96 52.168.26.254 1433:30619/TCP 2mKubernetes kümesindeki nesnelerin durumu hakkında daha fazla bilgi için aşağıdaki komutu çalıştırın.
<MyResourceGroup>ve<MyKubernetesClustername>’i kaynak grubunuz ve Kubernetes küme adınız ile değiştirmeyi unutmayın.az aks browse --resource-group <MyResourceGroup> --name <MyKubernetesClustername>Ayrıca aşağıdaki komutu çalıştırarak kapsayıcının kök olmayan olarak çalıştığını doğrulayabilirsiniz; burada
<nameOfSqlPod>SQL Server podunuzun adıdır:kubectl.exe exec <nameOfSqlPod> -it -- /bin/bashmssqlçalıştırırsanız kullanıcı adınıwhoamiolarak görebilirsiniz.mssqlkök olmayan bir kullanıcıdır.whoami
SQL Server örneğine bağlanma
sa hesabını ve hizmetin dış IP adresini kullanarak Azure sanal ağının dışından bir uygulamaya bağlanabilirsiniz. OpenShift sırrı olarak yapılandırdığınız parolayı kullanın.
SQL Server örneğine bağlanmak için aşağıdaki uygulamaları kullanabilirsiniz.
- Visual Studio Code için MSSQL uzantısını
- SQL Server Management Studio (SSMS)
- SQL Server Veri Araçları (SSDT)
sqlcmd ile bağlanma
sqlcmdile bağlanmak için aşağıdaki komutu çalıştırın.
sqlcmd -S <External IP address> -U sa -P "<password>"
<External IP address>
mssql-deployment hizmetinin IP adresiyle ve <password> karmaşık parolanızla değiştirin.
Dikkat
Parolanız,SQL Server varsayılan
Hata ve kurtarma doğrulaması yapın
Başarısızlığı ve kurtarmayı doğrulamak için podu aşağıdaki adımlarla silebilirsiniz:
SQL Server çalıştıran podu listeleyin.
kubectl get podsSQL Server çalıştıran podun adını not edin.
Podu silin.
kubectl delete pod mssql-deployment-0mssql-deployment-0, pod adı için önceki adımda döndürülen değerdir.
Kubernetes, bir SQL Server örneğini kurtarmak için pod'u otomatik olarak yeniden oluşturur ve kalıcı depolamaya bağlanır.
kubectl get pods kullanarak yeni bir pod dağıtıldığını doğrulayın. Yeni kapsayıcının IP adresinin aynı olduğunu doğrulamak için kullanın kubectl get services .
Kaynakları temizleme
Takip eden eğitimleri izlemeyecekseniz, gereksiz kaynaklarınızı temizleyin. Kaynak grubunu, kapsayıcı hizmetini ve tüm ilgili kaynakları kaldırmak için az group delete komutunu kullanın.
<MyResourceGroup> değerini kümenizi içeren kaynak grubunun adıyla değiştirin.
az group delete --name <MyResourceGroup> --yes --no-wait
İlgili içerik
- Kubernetes'e giriş
- Hızlı Başlangıç: Docker ile SQL Server Linux kapsayıcı görüntülerini çalıştırma
- Kubernetes'da DH2i DxEnterprise ile kullanılabilirlik gruplarını dağıtma