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.
Kullanılabilirlik alanları , uygulamalarınızın ve verilerinizin veri merkezi hatalarından korunmasına yardımcı olur. Bölgeler, bir Azure bölgesi içindeki benzersiz fiziksel konumlardır. Her bölge bağımsız güç, soğutma ve ağ ile donatılmış bir veya daha fazla veri merkezi içerir.
Azure Kubernetes Service'in (AKS) kullanılabilirlik alanlarıyla kullanılması, kaynakları tek bir bölgedeki farklı kullanılabilirlik alanlarına fiziksel olarak dağıtarak güvenilirliği artırır. Düğümleri birden çok bölgeye dağıtmak ekstra maliyet doğurmuyor. Bu makalede AKS kaynaklarını Azure CLI veya Terraform kullanarak kullanılabilirlik alanlarını kullanacak şekilde yapılandırma adımları gösterilmektedir.
Önkoşullar
Etkin bir Azure aboneliği. Eğer bir Azure aboneliğiniz yoksa, başlamadan önce ücretsiz bir hesap oluşturun.
komutunu kullanarak
az account setabonelik bağlamınızı ayarlayın. Örneğin:az account set --subscription "00000000-0000-0000-0000-000000000000"Azure CLI yüklü ve yapılandırılmış. Yükleme yönergeleri için bkz. Azure CLI'yi yükleme.
kubectl yüklendi. komutunu kullanarak
az aks install-cliyerel olarak yükleyebilirsiniz.
- Terraform yerel olarak yüklendi. Yükleme yönergeleri için bkz . Terraform'u yükleme.
Sınırlamalar ve Dikkat Edilecek Hususlar
AKS'de kullanılabilirlik alanlarını kullanırken aşağıdaki sınırlamaları ve dikkate alınacak noktaları göz önünde bulundurun:
- AKS'deki kotalar, sanal makine boyutu kısıtlamaları ve bölge kullanılabilirliğini inceleyin.
- Çoğu Azure bölgesi kullanılabilirlik alanlarını destekler. Daha fazla bilgi için bkz. Azure bölgeleri listesi.
- Kullanılabilirlik bölgelerinin sayısını değiştiremezsiniz düğüm havuzu oluşturduktan sonra. Kullanılabilirlik alanı sayısını değiştirmek için, istenen sayıda bölge içeren yeni bir düğüm havuzu oluşturmanız ve iş yüklerinizi yeni düğüm havuzuna geçirmeniz gerekir.
AKS kümesi bileşenleri
Aşağıdaki diyagramda, Microsoft tarafından barındırılan AKS bileşenleri ve Azure aboneliğinizdeki AKS bileşenleri dahil olmak üzere AKS kümesinin çeşitli bileşenleri gösterilmektedir:
AKS kontrol düzlemi
Microsoft AKS denetim düzlemini, Kubernetes API sunucusunu ve ve yönetilen hizmetler gibi scheduleretcd hizmetleri barındırmaktadır. Microsoft, denetim düzlemini birden çok bölgede çoğaltır.
Kümenizin diğer kaynakları, Azure aboneliğinizdeki yönetilen bir kaynak grubunda dağıtılır. Varsayılan olarak, bu kaynak grubuna MC_ ( yönetilen küme için) ön eki eklenmiştir ve aşağıdaki bölümlerde açıklanan kaynakları içerir.
Düğüm havuzları
Düğüm havuzları, Azure aboneliğinizde sanal makine ölçek kümeleri olarak oluşturulur.
AKS kümesi oluşturduğunuzda bir sistem düğümü havuzu gerekir. Bu düğüm havuzu otomatik olarak oluşturulur ve CoreDNS ile metrics-server gibi kritik sistem podlarını barındırır. Uygulamalarınızı barındırmak için AKS kümenize daha fazla kullanıcı düğümü havuzu ekleyebilirsiniz.
Düğüm havuzlarını üç yolla dağıtabilirsiniz: bölgeye yayılan, bölgeye hizalanmış veya bölgesel (kullanılabilirlik alanlarını kullanmaz)..
Aşağıdaki diyagramda üç modelin her birinde kullanılabilirlik alanları arasında düğüm dağılımı gösterilmektedir:
Sistem düğümü havuz bölgeleri, bir küme veya düğüm havuzu oluşturduğunuzda yapılandırılır.
Bölgeye yayılan düğüm havuzları
Bölgelere yayılan düğüm havuzlarında düğümler tüm seçili bölgelere yayılır. AKS, bölgeler arasındaki düğüm sayısını otomatik olarak dengeler. Bir bölge kesintisi oluşursa, etkilenen bölge içindeki düğümler etkilenebilir, ancak diğer kullanılabilirlik alanlarındaki düğümler etkilenmez.
Bölgeye hizalanmış düğüm havuzları
Uyarı
Düğüm havuzları arasında tek bir iş yükü dağıtılacağında, ölçek artırma işlemlerinde iş yüklerinizin bölgeler arasında dengeli bir şekilde dağıtılması için --balance-similar-node-groups ayarını true olarak ayarlamanızı öneririz.
Bu yapılandırmada, her düğüm belirli bir bölgeye hizalanır (sabitlenir). Düğümler arasında daha düşük gecikme süresine, ölçeklendirme işlemleri üzerinde daha ayrıntılı denetime ihtiyacınız olduğunda veya küme otomatik ölçeklendiricisini kullanırken bu yapılandırmayı kullanabilirsiniz.
Bölgesel düğüm havuzları
Bölgesel mod, dağıtım şablonunda bir bölge ataması ayarlamadığınızda (örneğin, "zones"=[] veya "zones"=null) kullanılır.
Bu yapılandırmada düğüm havuzu bölgesel (bölgeye sabitlenmemiş) örnekler oluşturur ve örnekleri bölge genelinde örtük olarak yerleştirir. Örneklerin dengeli veya farklı bölgelere yayıldığı ya da örneklerin aynı kullanılabilirlik alanında yer alacağı garanti değildir. Nadir durumlarda, bir tam bölge kesintisi meydana geldiğinde, düğüm havuzu içindeki örneklerin herhangi biri veya tümü etkilenebilir.
Dağıtımlar
Azure Kubernetes Service (AKS), uygulamalarınız için yüksek kullanılabilirlik sağlamak için bölgeler arasında podları, depolama birimlerini ve yük dengeleyicileri kullanır.
Kapsül
Kubernetes, Azure kullanılabilirlik alanlarının farkındadır ve farklı bölgelerdeki düğümler arasında podları dengeleyebilir. Bir bölgenin kullanılamaz duruma gelmesi durumunda Kubernetes, podları etkilenen düğümlerden otomatik olarak uzaklaştırır.
Kubernetes referansındaki 'Well-Known Etiketler, Ek Açıklamalar ve Taint'ler' bölümünde belgelenmiş olduğu gibi, Kubernetes topology.kubernetes.io/zone etiketini kullanarak çoğaltma denetleyicisindeki veya hizmetteki podları mevcut çeşitli bölgeler arasında otomatik olarak dağıtır.
parametresi, maxSkew podların eşit olmayan bir şekilde dağıtılma derecesini açıklar. Üç bölge ve üç çoğaltma varsayarsak, her bölgede en az bir pod çalıştığına emin olmak için bu değeri 1 olarak ayarlayın. Örneğin:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
app: my-app
containers:
- name: my-container
image: my-image
Depolama ve birimler
Varsayılan olarak Kubernetes sürüm 1.29 ve üzeri, Kalıcı Birim Talepleri (PVC) için alanlar arası yedekli depolama kullanarak Azure Yönetilen Diskleri kullanır. Bu diskler, uygulamalarınızın dayanıklılığını artırmak için bölgeler arasında çoğaltılır.
Aşağıdaki örnekte, alanlar arası yedekli depolamada Azure Standart SSD kullanan bir PVC gösterilmektedir:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: azure-managed-disk
spec:
accessModes:
- ReadWriteOnce
storageClassName: managed-csi
#storageClassName: managed-csi-premium
resources:
requests:
storage: 5Gi
Bölgeyle hizalanmış dağıtımlar için skuname parametresi LRS (yerel olarak yedekli depolama) olarak ayarlanmış yeni bir depolama sınıfı oluşturabilirsiniz. Ardından PVC'nizde yeni depolama sınıfını kullanabilirsiniz.
Yerel olarak yedekli depolama diskleri daha ucuz olsa da alanlar arası yedekli değildir ve farklı bir bölgedeki bir düğüme disk iliştirmek desteklenmez.
Aşağıdaki örnekte yerel olarak yedekli depolama Standart SSD depolama sınıfı gösterilmektedir:
kind: StorageClass
metadata:
name: azuredisk-csi-standard-lrs
provisioner: disk.csi.azure.com
parameters:
skuname: StandardSSD_LRS
#skuname: PremiumV2_LRS
Yük dengeleyiciler
Önemli
Azure Kubernetes Service (AKS), 30 Eylül 2025'den itibaren Temel Yük Dengeleyici'yi desteklememektedir. Olası hizmet kesintilerini önlemek için yeni dağıtımlar için Standart Load Balancer kullanmanızı ve mevcut dağıtımları Standart Load Balancer'a yükseltmenizi öneririz. Bu kullanımdan kaldırma hakkında daha fazla bilgi için GitHub Kullanımdan Kaldırma Sorunu ve Azure Güncelleştirmeleri kullanımdan kaldırma duyurusu başlıklarına bakın. Duyurular ve güncelleştirmeler hakkında bilgi sahibi olmak için AKS sürüm notlarını izleyin.
Kubernetes, bir bölgedeki tüm bölgelerde gelen trafiği dengeleyen Azure Standart Load Balancer'ı varsayılan olarak dağıtır. Bir düğüm kullanılamaz duruma gelirse yük dengeleyici trafiği iyi durumdaki düğümlere yeniden yönlendirir.
Aşağıdaki örnekte Azure Load Balancer kullanan bir hizmet gösterilmektedir:
apiVersion: v1
kind: Service
metadata:
name: example
spec:
type: LoadBalancer
selector:
app: myapp
ports:
- port: 80
targetPort: 8080
Azure CLI ile düğüm havuzları oluşturma
Bölgelere yayılan ve kullanılabilirlik alanları içeren düğüm havuzları ile bölgeye hizalanmış kullanılabilirlik alanlarına sahip düğüm havuzları içeren bir AKS kümesi oluşturmak için Azure CLI'yi kullanın.
Bölgeye yayılan düğüm havuzları oluşturma
AKS kümesi oluştururken --zones komutunu kullanarak veya düğüm havuzu oluştururken az aks create komutunu kullanarak bölgeleri az aks nodepool add parametresi ile belirtebilirsiniz. Örneğin:
# Create an AKS cluster with a zone-spanning system node pool in all three availability zones with one node in each availability zone
az aks create \
--resource-group example-rg \
--name example-cluster \
--node-count 3 \
--zones 1 2 3
# Add one new zone-spanning user node pool with two nodes in each availability zone
az aks nodepool add \
--resource-group example-rg \
--cluster-name example-cluster \
--name userpoola \
--node-count 6 \
--zones 1 2 3
Bölgeye hizalanmış düğüm havuzları oluşturma
Aşağıdaki komutlar, az aks nodepool add komutunu ve --zones parametresini kullanarak, üç kullanılabilirlik alanına sahip bir bölge için üç düğüm havuzu oluşturur ve her düğüm havuzu için alanı belirtir.
# Add three new zone-aligned user node pools with two nodes in each
az aks nodepool add \
--resource-group example-rg \
--cluster-name example-cluster \
--name userpoolx \
--node-count 2 \
--zones 1
az aks nodepool add \
--resource-group example-rg \
--cluster-name example-cluster \
--name userpooly \
--node-count 2 \
--zones 2
az aks nodepool add \
--resource-group example-rg \
--cluster-name example-cluster \
--name userpoolz \
--node-count 2 \
--zones 3
Terraform yapılandırma dosyasını oluşturma
Terraform yapılandırma dosyaları, Terraform'un oluşturduğu ve yönettiği altyapıyı tanımlar.
adlı
main.tfbir dosya oluşturun ve Terraform sürümünü tanımlamak ve Azure sağlayıcısını belirtmek için aşağıdaki kodu ekleyin:terraform { required_version = ">= 1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} }Azure kaynak grubu oluşturmak için aşağıdaki kodu
main.tfekleyin. Kaynak grubunun adını ve konumunu gerektiği gibi değiştirebilirsiniz.resource "azurerm_resource_group" "example" { name = "aks-rg" location = "East US" }
Bölge genelinde yayılan bir sistem düğümü havuzuyla AKS kümesi oluşturma
Üç kullanılabilirlik alanının her birinde bir düğüm bulunan ve bu alanların tümünü kapsayan bir sistem düğümü havuzuna sahip bir AKS kümesi oluşturmak için aşağıdaki kodu main.tf ekleyin.
resource "azurerm_kubernetes_cluster" "example" {
name = "aks-zones"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
dns_prefix = "akszones"
default_node_pool {
name = "system"
node_count = 1
vm_size = "Standard_DS2_v2"
zones = ["1", "2", "3"]
}
identity {
type = "SystemAssigned"
}
}
AKS kümesine bölgeye yayılan kullanıcı düğümü havuzları ekleme
Her kullanılabilirlik alanında iki düğüm içeren yeni bir bölgeye yayılan kullanıcı düğümü havuzu oluşturmak için aşağıdaki kodu main.tf ekleyin:
resource "azurerm_kubernetes_cluster_node_pool" "zonespan" {
name = "userpool"
kubernetes_cluster_id = azurerm_kubernetes_cluster.example.id
vm_size = "Standard_DS2_v2"
node_count = 2
zones = ["1", "2", "3"]
}
AKS kümesine bölgeyle hizalanmış kullanıcı düğümü havuzları ekleme
Her kullanılabilirlik alanında iki düğüm içeren üç yeni bölgeye hizalanmış kullanıcı düğümü havuzu oluşturmak için aşağıdaki kodu main.tf ekleyin:
resource "azurerm_kubernetes_cluster_node_pool" "zone1" {
name = "userpool1"
kubernetes_cluster_id = azurerm_kubernetes_cluster.example.id
vm_size = "Standard_DS2_v2"
node_count = 1
zones = ["1"]
}
resource "azurerm_kubernetes_cluster_node_pool" "zone2" {
name = "userpool2"
kubernetes_cluster_id = azurerm_kubernetes_cluster.example.id
vm_size = "Standard_DS2_v2"
node_count = 1
zones = ["2"]
}
resource "azurerm_kubernetes_cluster_node_pool" "zone3" {
name = "userpool3"
kubernetes_cluster_id = azurerm_kubernetes_cluster.example.id
vm_size = "Standard_DS2_v2"
node_count = 1
zones = ["3"]
}
Terraform'u başlatma
terraform init komutunu kullanarak main.tf dosyanızın bulunduğu dizinde Terraform'u başlatın. Bu komut Terraform ile Azure kaynaklarını yönetmek için gereken Azure sağlayıcısını indirir.
terraform init
Terraform için bir yürütme planı oluşturun
terraform plan komutunu kullanarak bir Terraform yürütme planı oluşturun. Bu komut, Terraform'un Azure aboneliğinizde oluşturacağı veya değiştireceği kaynakları gösterir.
terraform plan
Terraform yapılandırmasını uygulama
Yürütme planını gözden geçirip onayladıktan sonra komutunu kullanarak terraform apply Terraform yapılandırmasını uygulayın. Bu komut, Azure aboneliğinizdeki dosyanızda main.tf tanımlanan kaynakları oluşturur veya değiştirir.
terraform apply
Kullanılabilirlik alanı yapılandırmasını doğrulama
AKS kümenizi ve düğüm havuzlarınızı oluşturduktan sonra, çıktıyı filtrelemek için parametresiyle az aks show komutunu kullanarak --query düğümlerinizin kullanılabilirlik alanları arasında dağıtıldığını doğrulayabilirsiniz. Örneğin:
az aks show \
--name example-cluster \
--resource-group example-rg \
--query agentPoolProfiles[].availabilityZones \
--output tsv
Düğüm konumlarını doğrulayın
Aşağıdaki kubectl get nodes komutu kullanarak kullanılabilirlik alanları arasında düğüm dağıtımını doğrulayın:
kubectl get nodes -o custom-columns='NAME:metadata.name, REGION:metadata.labels.topology\.kubernetes\.io/region, ZONE:metadata.labels.topology\.kubernetes\.io/zone'
Örnek çıkış:
NAME REGION ZONE
aks-nodepool1-12345678-vmss000000 eastus eastus-1
aks-nodepool1-12345678-vmss000001 eastus eastus-2
aks-nodepool1-12345678-vmss000002 eastus eastus-3
Çalışan podları ve düğümleri listele
komutunu kullanarak kubectl describe hangi podların ve düğümlerin çalıştığını denetleyin. Örneğin:
kubectl describe pod | grep -e "^Name:" -e "^Node:"
İlgili içerik
AKS'de güvenilirlik hakkında daha fazla bilgi edinmek için aşağıdaki makalelere bakın: