Azure Kubernetes Service'de (AKS) dinamik IP ayırması ve iyileştirilmiş alt ağ desteği için Azure CNI ağını yapılandırma

Geleneksel CNI'nin bir dezavantajı, AKS kümesi büyüdükçe pod IP adreslerinin tükenmesidir ve bu da kümenizin tamamını daha büyük bir alt ağda yeniden oluşturmanıza neden olur. Azure CNI'deki yeni dinamik IP ayırma özelliği, AKS kümesini barındıran alt ağdan ayrı bir alt ağdan pod IP'leri ayırarak bu sorunu çözer.

Aşağıdaki avantajları sunar:

  • Daha iyi IP kullanımı: IP'ler Pod alt ağından küme Podlarına dinamik olarak ayrılır. Bu, her düğüm için IP'lerin statik olarak ayrılmasına neden olan geleneksel CNI çözümüne kıyasla kümedeki IP'lerin daha iyi kullanılmasına yol açar.
  • Ölçeklenebilir ve esnek: 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: Pod'a sanal ağ IP'leri atandığından sanal ağdaki diğer küme podlarına ve kaynaklara doğrudan bağlantı sağlar. Çözüm, performansta herhangi bir düşüş olmadan çok büyük kümeleri destekler.
  • 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: Hem Azure Ağ İlkeleri hem de Calico bu yeni çözümle çalışır.

Bu makalede, AKS'de IP'lerin dinamik olarak ayrılması ve gelişmiş alt ağ desteği için Azure CNI ağının nasıl kullanılacağı gösterilmektedir.

Önkoşullar

Not

IP'lerin dinamik ayırması kullanılırken, Kubernetes Load Balancer Hizmeti kullanılarak bir uygulamanın Özel Bağlantı Hizmeti olarak kullanıma verilmesi 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.

  • Azure CLI sürümü 2.37.0 veya üstü.

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

    az aks enable-addons --addons monitoring --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME
    

IP adresini planlama

Bu özellik sayesinde IP adreslemenizi planlamak çok daha kolaydı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.

IP'ler düğümlere 16 toplu olarak ayrılır. Pod alt ağı IP ayırma, kümede düğüm başına en az 16 IP ile planlanmalıdır; düğümler başlangıçta 16 IP'ye istekte bulunur ve ayırmalarında ayrılmamış 8 IP olduğunda <16'lık başka bir toplu iş talep eder.

Kubernetes hizmetleri ve Docker köprüsü için IP'lerin planlanması değişmeden kalır.

Ip'lerin dinamik ayırması ve gelişmiş alt ağ desteği ile kümedeki düğüm başına en fazla pod sayısı

IP'lerin dinamik ayırmasıyla Azure CNI kullanılırken düğüm başına pod değerleri, geleneksel CNI davranışından biraz farklıdır:

CNI Varsayılan Dağıtımda yapılandırılabilir
Geleneksel Azure CNI 30 Evet (en fazla 250)
IP'lerin dinamik ayırması ile Azure CNI 250 Evet (en fazla 250)

Düğüm başına en fazla pod yapılandırmayla ilgili diğer tüm yönergeler aynı kalır.

Dağıtım parametreleri

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

  • Alt parametresi artık kümenin düğümleri ile ilgili alt ağa başvuruyor.
  • IP adresleri podlara dinamik olarak ayrılacak alt ağı belirtmek için ek bir parametre pod alt ağı kullanılır.

IP'lerin dinamik ayırması ve gelişmiş alt ağ desteği ile ağı yapılandırma - Azure CLI

Kümenizde IP'lerin dinamik ayırmasını ve gelişmiş alt ağ desteğini kullanmak, azure CNI kümesini yapılandırmaya yönelik varsayılan yönteme benzer. Aşağıdaki örnek, düğümler için bir alt ağ ve podlar için bir alt ağ ile yeni bir sanal ağ oluşturma ve IP'lerin dinamik ayırması ve gelişmiş alt ağ desteği ile Azure CNI kullanan bir küme oluşturma işleminde yol gösterir. gibi $subscription değişkenleri kendi değerlerinizle değiştirmeyi unutmayın.

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

RESOURCE_GROUP_NAME="myResourceGroup"
VNET_NAME="myVirtualNetwork"
LOCATION="westcentralus"
SUBNET_NAME_1="nodesubnet"
SUBNET_NAME_2="podsubnet"

# Create the resource group
az group create --name $RESOURCE_GROUP_NAME --location $LOCATION

# Create our two subnet network 
az network vnet create --resource-group $RESOURCE_GROUP_NAME --location $LOCATION --name $VNET_NAME --address-prefixes 10.0.0.0/8 -o none 
az network vnet subnet create --resource-group $RESOURCE_GROUP_NAME --vnet-name $VNET_NAME --name $SUBNET_NAME_1 --address-prefixes 10.240.0.0/16 -o none 
az network vnet subnet create --resource-group $RESOURCE_GROUP_NAME --vnet-name $VNET_NAME --name $SUBNET_NAME_2 --address-prefixes 10.241.0.0/16 -o none 

kullanarak düğüm alt a bilgisayarına --vnet-subnet-id , izleme eklentisini kullanarak ve etkinleştirerek pod alt akını kullanarak --pod-subnet-id kümeyi oluşturun.

CLUSTER_NAME="myAKSCluster"
SUBSCRIPTION="aaaaaaa-aaaaa-aaaaaa-aaaa"

az aks create --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --location $LOCATION \
    --max-pods 250 \
    --node-count 2 \
    --network-plugin azure \
    --vnet-subnet-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME_1 \
    --pod-subnet-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME_2 \
    --enable-addons monitoring

Düğüm havuzu ekleme

Düğüm havuzu eklerken kullanarak düğüm alt a bilgisayarına ve kullanarak --vnet-subnet-id--pod-subnet-idpod alt a bilgisayarına başvurun. Aşağıdaki örnek, daha sonra yeni bir düğüm havuzu oluşturulurken başvuruda bulunan iki yeni alt ağ oluşturur:

SUBNET_NAME_3="node2subnet"
SUBNET_NAME_4="pod2subnet"
NODE_POOL_NAME="mynodepool"

az network vnet subnet create --resource-group $RESOURCE_GROUP_NAME --vnet-name $VNET_NAME --name $SUBNET_NAME_3 --address-prefixes 10.242.0.0/16 -o none 
az network vnet subnet create --resource-group $RESOURCE_GROUP_NAME --vnet-name $VNET_NAME --name $SUBNET_NAME_4 --address-prefixes 10.243.0.0/16 -o none 

az aks nodepool add --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --name $NODE_POOL_NAME \
    --max-pods 250 \
    --node-count 2 \
    --vnet-subnet-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME_3 \
    --pod-subnet-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME_4 \
    --no-wait

IP alt ağ kullanımını izleme

Azure CNI, IP alt ağ kullanımını izleme özelliği sağlar. IP alt ağı kullanımı izlemeyi etkinleştirmek için aşağıdaki adımları izleyin:

YAML dosyasını alma

  1. GitHub'dan container-azm-ms-agentconfig.yaml adlı dosyayı indirin veya kaydedin.

  2. Tümleştirmelerde bulun azure_subnet_ip_usage . enabled seçeneğini true olarak ayarlayın.

  3. Dosyayı kaydedin.

AKS kimlik bilgilerini alma

Abonelik, kaynak grubu ve küme için değişkenleri ayarlayın. Örnek olarak aşağıdakileri göz önünde bulundurun:

az account set --subscription $SUBSCRIPTION
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME

Yapılandırmayı uygulama

  1. İndirilen container-azm-ms-agentconfig.yaml dosyasının kaydedildiği klasörde terminali açın.

  2. İlk olarak, komutunu kullanarak yapılandırmayı uygulayın: kubectl apply -f container-azm-ms-agentconfig.yaml

  3. Bu işlem podu yeniden başlatır ve 5-10 dakika sonra ölçümler görünür.

  4. Kümedeki ölçümleri görüntülemek için Azure portalındaki küme sayfasındaki Çalışma Kitapları'na gidin ve "Alt Ağ IP Kullanımı" adlı çalışma kitabını bulun. Görünümünüz aşağıdakine benzer olacaktır:

    A diagram of the Azure portal's workbook blade is shown, and metrics for an AKS cluster's subnet IP usage are displayed.

IP adreslerinin dinamik olarak ayrılması ve gelişmiş alt ağ desteği hakkında SSS

  • Küme/düğüm havuzuna birden çok pod alt ağı atayabilir miyim?

    Kümeye veya düğüm havuzuna yalnızca bir alt ağ atanabilir. Ancak, birden çok küme veya düğüm havuzu tek bir 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ı geleneksel CNI kullanırken, diğerleri yeni CNI'yi kullanabilir mi?

    Kümenin tamamı yalnızca bir tür CNI kullanmalıdır.

Sonraki adımlar

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