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
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 Container Insights'ı etkinleştirmeniz gerekir. Aşağıdaki örnekte gösterildiği gibi komutunu kullanarak
az aks enable-addons
Container Insights'ı 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.
Bu IP ayırmalarından sorumlu NodeNetworkConfiguration (NNC) kaynaklarını görüntülemek ve doğrulamak için aşağıdaki komutu çalıştırabilirsiniz:
kubectl get nodenetworkconfigs -n kube-system -o wide
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 ağ 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 \
--generate-ssh-keys
Düğüm havuzu ekleme
Düğüm havuzu eklerken kullanarak düğüm alt a bilgisayarına ve kullanarak --vnet-subnet-id
--pod-subnet-id
pod 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
GitHub'dan container-azm-ms-agentconfig.yaml adlı dosyayı indirin veya kaydedin.
Tümleştirmelerde bulun
azure_subnet_ip_usage
.enabled
seçeneğinitrue
olarak ayarlayın.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
- İndirilen container-azm-ms-agentconfig.yaml dosyasının kaydedildiği klasörde terminali açın.
- komutunu kullanarak yapılandırmayı
kubectl apply -f container-azm-ms-agentconfig.yaml
uygulayın. Bu işlem podu yeniden başlatır ve 5-10 dakika sonra ölçümler görünür. - Azure portalındaki küme sayfasında Çalışma Kitapları'na giderek kümedeki ölçümleri görüntüleyin ve Alt Ağ IP Kullanımı adlı çalışma kitabını bulun.
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:
Azure Kubernetes Service