Aracılığıyla paylaş


Azure Kubernetes Service'te (AKS) CIDR bloklarının statik ayırması ve gelişmiş alt ağ desteği için Azure CNI Ağı yapılandırma - (Önizleme)

Azure CNI Dinamik IP Ayırma'nın bir sınırlaması, pod alt ağı boyutunun /16 alt ağın ötesinde ölçeklenebilirliğidir. Büyük bir alt ağ ile bile azure adres eşleme sınırı nedeniyle büyük kümeler 65k podlarla sınırlı olabilir. Azure CNI'deki yeni statik blok ayırma özelliği, tek tek IP'ler yerine Düğümlere CIDR blokları atayarak bu sorunu çözer.

Aşağıdaki avantajları sunar:

  • Daha iyi IP Ölçeklenebilirliği: CIDR blokları statik olarak küme düğümlerine ayrılır ve geleneksel CNI ile tek tek IP'lerin geleneksel dinamik ayırmasının aksine düğümün kullanım ömrü boyunca bulunur. Bu, CIDR bloklarını temel alarak yönlendirmeye olanak tanır ve küme sınırının küme başına geleneksel 65K podlardan 1 milyon pod'a kadar ölçeklendirilmesine yardımcı olur. Azure Sanal Ağ kümenizin ölçeğini karşılayacak kadar büyük olmalıdır.
  • Esneklik: Düğüm ve pod alt ağları bağımsız olarak ölçeklendirilebilir. Tek bir pod alt ağı, bir kümenin birden çok düğüm havuzu arasında veya aynı sanal ağa dağıtılan birden çok AKS kümesi arasında paylaşılabilir. Düğüm havuzu için ayrı bir pod alt ağı da yapılandırabilirsiniz.
  • Yüksek performans: Podlara sanal ağ IP'leri atandığından sanal ağdaki diğer küme podlarına ve kaynaklarına doğrudan bağlantı sağlanır.
  • Podlar için ayrı sanal ağ ilkeleri: Podların ayrı bir alt ağı olduğundan, bunlar için düğüm ilkelerinden farklı ayrı sanal ağ ilkeleri yapılandırabilirsiniz. Bu, düğümler için değil yalnızca podlar için İnternet bağlantısına izin verme, Azure NAT Ağ Geçidi kullanarak düğüm havuzundaki pod için kaynak IP'yi düzeltme ve düğüm havuzları arasındaki trafiği filtrelemek için NSG'leri kullanma gibi birçok yararlı senaryoyu etkinleştirir.
  • Kubernetes ağ ilkeleri: Cilium, Azure NPM ve Calico bu yeni çözümle çalışır.

Bu makalede AKS'de CIDR'ler ve gelişmiş alt ağ desteği için statik ayırma için Azure CNI Ağı'nın nasıl kullanılacağı gösterilmektedir.

Önkoşullar

Not

CIDR'lerin statik blok ayırması kullanıldığında, Kubernetes Load Balancer Hizmeti kullanarak bir uygulamayı Özel Bağlantı Hizmeti olarak ortaya çıkarmak desteklenmez.

  • Bu makalede de aynı önkoşullar geçerli olduğundan AKS'de temel Azure CNI ağını yapılandırma önkoşullarını gözden geçirin.

  • Aynı parametreler uygulandığından AKS'de temel Azure CNI ağını yapılandırmak için dağıtım parametrelerini gözden geçirin.

  • AKS Altyapısı ve DIY kümeleri desteklenmez.

  • '2.0.0b2' veya sonraki bir sürümün aks-preview uzantısına sahip Azure CLI 2.37.0 sürümü veya üstü

  • Mevcut bir kümeniz varsa, IP alt ağı kullanımını izlemek için Container Insights'ı etkinleştirmeniz gerekir. Aşağıdaki örnekte gösterildiği gibi komutunu kullanarak az aks enable-addons Container Insights'ı etkinleştirebilirsiniz:

  • Aboneliğiniz için abonelik düzeyi özellik bayrağını kaydedin: 'Microsoft.ContainerService/AzureVnetScalePreview'

    az aks enable-addons --addons monitoring --name <cluster-name> --resource-group <resource-group-name>
    

Sınırlamalar

Azure CNI Statik Blok ayırmayı kullanmanın bazı sınırlamaları aşağıdadır:

  • Gereken en düşük Kubernetes Sürümü 1.28'dir
  • Desteklenen alt ağ boyutu üst sınırı x.x.x.x/12 ~ 1 milyon IP'dir
  • Windows düğüm havuzları için desteklenmiyor (Windows desteği yakında sunulacak)
  • Cilium Veri Düzlemi için desteklenmiyor (destek yakında sunulacak)
  • Alt ağ başına yalnızca tek bir işlem modu kullanılabilir. Bir alt ağ Statik Blok ayırma modunu kullanıyorsa, dinamik IP ayırma modunu aynı alt ağa sahip farklı bir kümede veya düğüm havuzunda kullanamaz.
  • Yalnızca yeni kümelerde veya mevcut kümelere farklı bir alt ağa sahip düğüm havuzları eklenirken desteklenir. Mevcut kümelerin veya düğüm havuzlarının geçirilmesi veya güncelleştirilmesi desteklenmez.
  • Düğüm havuzundaki bir düğüme atanan tüm CIDR bloklarında, düğümün birincil IP'si olarak bir IP seçilir. Bu nedenle, değeri seçen --max-pods ağ yöneticileri, gereksinimlerinize en iyi şekilde hizmet vermek ve alt ağda IP'lerin en iyi şekilde kullanımına sahip olmak için aşağıdaki hesaplamayı kullanmayı deneyin:
    max_pods = (N * 16) - 1' burada N herhangi bir pozitif tamsayı ve N > 0

Bölgesel kullanılabilirlik

Bu özellik aşağıdaki bölgelerde kullanılamaz:

  • ABD Güney
  • Doğu ABD 2
  • Batı ABD
  • Batı ABD 2

IP adresini planlama

IP adreslemenizi planlamak daha esnek ve ayrıntılıdır. Düğümler ve podlar bağımsız olarak ölçeklendirildiğinden, adres alanları da ayrı olarak planlanabilir. Pod alt ağları düğüm havuzunun ayrıntı düzeyine göre yapılandırılabildiği için, düğüm havuzu eklerken her zaman yeni bir alt ağ ekleyebilirsiniz. Küme/düğüm havuzundaki sistem podları da pod alt ağından IP'ler alır, bu nedenle bu davranışın hesaba bağlanması gerekir.

Bu senaryoda düğüm başına en fazla pod sayısını tanımlayan düğüm havuzunuz için '--max-pod' yapılandırmanıza göre düğümlere /28 (16 IP) CIDR blokları ayrılır. 1 IP, iç amaçlarla bu düğümdeki tüm kullanılabilir IP'lerden her düğüme ayrılmıştır.

Bu nedenle IP'lerinizi belirlerken ve planlarken '--max-pods' yapılandırmanızı tanımlamak önemlidir ve en iyi şekilde aşağıdaki gibi hesaplanabilir: max_pods_per_node = (16 * N) - 1 burada N, 0'dan büyük herhangi bir pozitif tamsayıdır

IP wastage içermeyen ideal değerler, yukarıdaki ifadeye uyması için maksimum pod değeri gerektirir.

  • Örnek 1: max_pods = 30, düğüm başına ayrılan CIDR Blokları = 2, Podlar için toplam IP kullanılabilir = (16 * 2) - 1 = 32 - 1 = 31, düğüm başına IP wastage = 31 - 30 = 1 [Düşük wastage - Kabul Edilebilir Durum]
  • Örnek 2: max_pods = 31, düğüm başına ayrılan CIDR Blokları = 2, Podlar için toplam IP kullanılabilir = (16 * 2) - 1 = 32 - 1 = 31, düğüm başına IP wastage = 31 - 31 = 0 [İdeal Durum]
  • Örnek 3: max_pods = 32, düğüm başına ayrılan CIDR Blokları = 3, Podlar için toplam IP kullanılabilir = (16 * 3) - 1 = 48 - 1 = 47, düğüm başına IP wastage = 47 - 32 = 15 [Yüksek Wastage - Önerilmez Durumu]

Kubernetes hizmetlerinin IP'lerinin planlanması değişmeden kalır.

Not

Sanal ağınızın kümenizin ölçeğini desteklemek için yeterince büyük ve bitişik bir adres alanına sahip olduğundan emin olun.

Dağıtım parametreleri

AKS'de temel Azure CNI ağını yapılandırmaya yönelik dağıtım parametrelerinin tümü geçerlidir ve iki özel durum vardır:

  • Sanal ağ alt ağ kimliği parametresi artık kümenin düğümleri ile ilgili alt ağa başvuruyor.
  • Parametre pod alt ağı kimliği , IP adresleri statik olarak veya düğüm havuzundaki podlara dinamik olarak ayrılan alt ağı belirtmek için kullanılır.
  • Pod ip ayırma modu parametresi, dinamik bireysel veya statik blok ayırmanın kullanılıp kullanılmayacağını belirtir.

Başlamadan önce

  • Azure CLI kullanıyorsanız uzantıya aks-preview ihtiyacınız vardır. Bkz. Azure CLI uzantısını aks-previewyükleme.
  • ARM veya REST API kullanılıyorsa AKS API sürümü 2024-01-02-preview veya üzeri olmalıdır.

Azure CLI uzantısını aks-preview yükleme

  1. aks-preview komutunu kullanarak uzantıyı az extension add yükleyin.

    az extension add --name aks-preview
    
  2. komutunu kullanarak uzantının en son sürümüne güncelleştirin az extension update . Uzantının '2.0..0b2' veya üzeri bir sürümü olmalıdır

    az extension update --name aks-preview
    

Özellik bayrağını AzureVnetScalePreview kaydetme

  1. AzureVnetScalePreview komutunu kullanarak özellik bayrağını az feature register kaydedin.

    az feature register --namespace "Microsoft.ContainerService" --name "AzureVnetScalePreview"
    

    Durumun Kayıtlı olarak gösterilmesi birkaç dakika sürer.

  2. komutunu kullanarak az feature show kayıt durumunu doğrulayın.

    az feature show --namespace "Microsoft.ContainerService" --name "AzureVnetScalePreview"
    
  3. Durum Kayıtlı olarak yansıtıldığında, komutunu kullanarak Microsoft.ContainerService kaynak sağlayıcısının kaydını yenileyinaz provider register.

    az provider register --namespace Microsoft.ContainerService
    

CIDR bloklarının statik ayırması ve gelişmiş alt ağ desteği ile ağı yapılandırma - Azure CLI

Kümenizde CIDR bloklarının statik ayırmasını kullanmak, küme Azure CNI'sini dinamik IP ayırma için yapılandırmaya yönelik varsayılan yönteme benzer. Aşağıdaki örnek, düğümler için alt ağ ve podlar için bir alt ağ ile yeni bir sanal ağ oluşturma ve CIDR bloklarının statik ayırması ile Azure CNI kullanan bir küme oluşturma adımlarını gösterir. gibi $subscription değişkenleri değerlerinizle değiştirerek değiştirmeyi unutmayın.

İki alt ağ ile sanal ağı oluşturun.

resourceGroup="myResourceGroup"
vnet="myVirtualNetwork"
location="myRegion"

# Create the resource group
az group create --name $resourceGroup --location $location

# Create our two subnet network 
az network vnet create --resource-group $resourceGroup --location $location --name $vnet --address-prefixes 10.0.0.0/8 -o none 
az network vnet subnet create --resource-group $resourceGroup --vnet-name $vnet --name nodesubnet --address-prefixes 10.240.0.0/16 -o none 
az network vnet subnet create --resource-group $resourceGroup --vnet-name $vnet --name podsubnet --address-prefixes 10.40.0.0/13 -o none 

ip ayırma modunu tanımlamak ve izleme eklentisini etkinleştirmek için kullanarak düğüm alt a --vnet-subnet-idağdakine başvuruda bulunan ve kullanan pod alt akını kullanarak --pod-subnet-id--pod-ip-allocation-mode kümeyi oluşturun.

clusterName="myAKSCluster"
subscription="aaaaaaa-aaaaa-aaaaaa-aaaa"

az aks create \
    --name $clusterName \
    --resource-group $resourceGroup \
    --location $location \
    --max-pods 250 \
    --node-count 2 \
    --network-plugin azure \
    --pod-ip-allocation-mode StaticBlock \
    --vnet-subnet-id /subscriptions/$subscription/resourceGroups/$resourceGroup/providers/Microsoft.Network/virtualNetworks/$vnet/subnets/nodesubnet \
    --pod-subnet-id /subscriptions/$subscription/resourceGroups/$resourceGroup/providers/Microsoft.Network/virtualNetworks/$vnet/subnets/podsubnet \
    --enable-addons monitoring \
    --generate-ssh-keys

Düğüm havuzu ekleme

Düğüm havuzu eklerken, kullanarak --vnet-subnet-iddüğüm alt a bilgisayarına başvurun. Kullanan pod alt ağı --pod-subnet-id ve '--pod-ip-allocation-mode' kullanarak ayırma modu. Aşağıdaki örnek, daha sonra yeni bir düğüm havuzu oluşturulurken başvuruda bulunan iki yeni alt ağ oluşturur:

az network vnet subnet create -g $resourceGroup --vnet-name $vnet --name node2subnet --address-prefixes 10.242.0.0/16 -o none 
az network vnet subnet create -g $resourceGroup --vnet-name $vnet --name pod2subnet --address-prefixes 10.243.0.0/16 -o none 

az aks nodepool add --cluster-name $clusterName -g $resourceGroup  -n newnodepool \
    --max-pods 250 \
    --node-count 2 \
    --vnet-subnet-id /subscriptions/$subscription/resourceGroups/$resourceGroup/providers/Microsoft.Network/virtualNetworks/$vnet/subnets/node2subnet \
    --pod-subnet-id /subscriptions/$subscription/resourceGroups/$resourceGroup/providers/Microsoft.Network/virtualNetworks/$vnet/subnets/pod2subnet \
    --pod-ip-allocation-mode StaticBlock \
    --no-wait

CIDR bloklarının statik olarak ayrılması ve gelişmiş alt ağ desteği hakkında SSS

  • Bir kümeye birden çok pod alt ağı atayabilir miyim?

    Bir kümeye birden çok alt ağ atanabilir, ancak her düğüm havuzuna yalnızca bir alt ağ atanabilir. Aynı/farklı kümedeki farklı düğüm havuzları aynı alt ağı paylaşabilir.

  • Pod alt ağlarını farklı bir sanal ağdan tamamen atayabilir miyim?

    Hayır, pod alt ağı kümeyle aynı sanal ağdan olmalıdır.

  • Kümedeki bazı düğüm havuzları Dinamik IP ayırmayı kullanırken diğerleri yeni Statik Blok ayırmayı kullanabilir mi?

    Evet, farklı düğüm havuzları farklı ayırma modları kullanabilir. Ancak, bir alt ağ tek ayırma modunda kullanıldığında, yalnızca ilişkili olduğu tüm düğüm havuzlarında aynı ayırma modunda kullanılabilir.

Sonraki adımlar

AKS'de ağ iletişimi hakkında daha fazla bilgi edinmek için aşağıdaki makalelere bakın: