Aracılığıyla paylaş


Azure Kubernetes Service'te (AKS) kullanılabilirlik alanları

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 ek maliyet doğurmuyor.

Bu makalede AKS kaynaklarını kullanılabilirlik alanlarını kullanacak şekilde yapılandırma işlemleri gösterilmektedir.

AKS kaynakları

Bu diyagramda AKS kümesi oluşturduğunuzda oluşturulan Azure kaynakları gösterilir:

Microsoft tarafından barındırılan AKS bileşenleri ve Azure aboneliğinizdeki AKS bileşenleri de dahil olmak üzere çeşitli AKS bileşenlerini gösteren diyagram.

AKS kontrol düzlemi

Microsoft AKS denetim düzlemini, Kubernetes API sunucusunu ve ve scheduler gibi etcd hizmetleri yönetilen hizmet olarak 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 grubu, yönetilen küme için MC_ ön ekiyle başlar ve aşağıdaki bölümlerde belirtilen 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 ve otomatik olarak oluşturulur. ve CoreDNSgibi metrics-server kritik sistem podlarını barındırıyor. Uygulamalarınızı barındırmak için AKS kümenize daha fazla kullanıcı düğümü havuzu ekleyebilirsiniz.

Düğüm havuzlarının dağıtılabilmesinin üç yolu vardır:

  • Bölgeler arası
  • Bölgeye hizalı
  • Bölgesel

Farklı modellerdeki kullanılabilirlik alanları arasında AKS düğümü dağılımını gösteren diyagram.

Sistem düğümü havuz bölgeleri, küme veya düğüm havuzu oluşturulduğunda yapılandırılır.

Bölgeler arası

Bu yapılandırmada düğümler seçilen tüm bölgelere yayılır. Bu bölgeler parametresi kullanılarak --zones belirtilir.

# Create an AKS cluster, and create a zone-spanning system node pool in all three AZs, one node in each AZ
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, two nodes in each
az aks nodepool add --resource-group example-rg --cluster-name example-cluster --name userpool-a  --node-count 6 --zones 1 2 3

AKS, bölgeler arasındaki düğüm sayısını otomatik olarak dengeler.

Bölgesel bir kesinti oluşursa, etkilenen bölge içindeki düğümler etkilenebilir, ancak diğer kullanılabilirlik alanlarındaki düğümler etkilenmez.

Düğüm konumlarını doğrulamak için aşağıdaki komutu çalıştırın:

kubectl get nodes -o custom-columns='NAME:metadata.name, REGION:metadata.labels.topology\.kubernetes\.io/region, ZONE:metadata.labels.topology\.kubernetes\.io/zone'
NAME                                REGION   ZONE
aks-nodepool1-34917322-vmss000000   eastus   eastus-1
aks-nodepool1-34917322-vmss000001   eastus   eastus-2
aks-nodepool1-34917322-vmss000002   eastus   eastus-3

Bölgeye hizalı

Bu yapılandırmada, her düğüm belirli bir bölgeye hizalanır (sabitlenir). Üç kullanılabilirlik alanına sahip bir bölge için üç düğüm havuzu oluşturmak için:

# # Add three new zone-aligned user node pools, two nodes in each
az aks nodepool add --resource-group example-rg --cluster-name example-cluster --name userpool-x  --node-count 2 --zones 1
az aks nodepool add --resource-group example-rg --cluster-name example-cluster --name userpool-y  --node-count 2 --zones 2
az aks nodepool add --resource-group example-rg --cluster-name example-cluster --name userpool-z  --node-count 2 --zones 3

Bu yapılandırma, düğümler arasında daha düşük gecikme süresine ihtiyacınız olduğunda kullanılabilir. Ayrıca, ölçeklendirme işlemleri veya küme otomatik ölçeklendiricisini kullanırken daha ayrıntılı denetim sağlar.

Not

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.

Bölgesel (kullanılabilirlik alanlarını kullanmama)

Bölge ataması dağıtım şablonunda (örneğin, "zones"=[] veya "zones"=null) ayarlı olmadığında bölgesel mod 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.

Tam bir bölge kesintisi nadiren meydana geldiğinde, düğüm havuzundaki örneklerin herhangi biri veya tümü etkilenebilir.

Düğüm konumlarını doğrulamak için aşağıdaki komutu çalıştırın:

kubectl get nodes -o custom-columns='NAME:metadata.name, REGION:metadata.labels.topology\.kubernetes\.io/region, ZONE:metadata.labels.topology\.kubernetes\.io/zone'
NAME                                REGION   ZONE
aks-nodepool1-34917322-vmss000000   eastus   0
aks-nodepool1-34917322-vmss000001   eastus   0
aks-nodepool1-34917322-vmss000002   eastus   0

Dağıtımlar

Podlar

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ındaWell-Known Etiketler, Ek Açıklamalar ve Tutulmalar'da belirtildiği gibi Kubernetes, çoğaltma denetleyicisindeki veya hizmetindeki podları kullanılabilir çeşitli bölgeler arasında otomatik olarak dağıtmak için topology.kubernetes.io/zone etiketini kullanır.

Hangi podların ve düğümlerin çalıştığını görmek için aşağıdaki komutu çalıştırın:

  kubectl describe pod | grep -e "^Name:" -e "^Node:"

parametresi, maxSkew podların eşit olmayan bir şekilde dağıtılma derecesini açıklar. Üç bölgeden ve üç çoğaltmadan bahsettiğimizi varsayarsak, her bölgede en az bir pod çalışmasını sağlamak için bu değeri 1 olarak ayarlayın.

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 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. Bu eylem, verilerinizi veri merkezi hatalarına karşı korumaya yardımcı olur.

Aşağıdaki örnekte, alanlar arası yedekli depolamada Azure Standart SSD kullanan Kalıcı Birim Talebi 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. Daha sonra Kalıcı Birim Talebinizde 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

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.

Azure Load Balancer kullanan örnek bir hizmet:

apiVersion: v1
kind: Service
metadata:
  name: example
spec:
  type: LoadBalancer
  selector:
    app: myapp
  ports:
    - port: 80
      targetPort: 8080

Önemli

30 Eylül 2025'te Temel Yük Dengeleyici kullanımdan kaldırılacaktır. Daha fazla bilgi için resmi duyuruya bakın. Temel Yük Dengeleyici kullanıyorsanız, kullanımdan kaldırma tarihinden önce Standart Load Balancer'a yükseltmeyi unutmayın.

Sınırlamalar

Kullanılabilirlik alanlarını kullanırken aşağıdaki sınırlamalar geçerlidir: