Mengonfigurasi jaringan Azure CNI untuk alokasi IP dinamis dan dukungan subnet yang disempurnakan di Azure Kubernetes Service (AKS)

Kelemahan dengan CNI tradisional adalah kelelahan alamat IP pod saat kluster AKS tumbuh, yang mengakibatkan kebutuhan untuk membangun kembali seluruh kluster Anda dalam subnet yang lebih besar. Kemampuan alokasi IP dinamis baru di Azure CNI memecahkan masalah ini dengan mengalokasikan IP pod dari subnet yang terpisah dari subnet yang menghosting kluster AKS.

Alokasi IP dinamis baru menawarkan manfaat berikut:

  • Pemanfaatan IP yang lebih baik: IP dialokasikan secara dinamis untuk mengkluster Pod dari subnet Pod. Hal ini mengarah pada pemanfaatan IP yang lebih baik dalam kluster dibandingkan dengan solusi CNI tradisional, yang melakukan alokasi IP statik untuk setiap simpul.
  • Terukur dan fleksibel: Subnet simpul dan pod dapat diskalakan secara independen. Satu subnet pod dapat dibagikan ke beberapa kumpulan simpul dari kluster atau ke beberapa kluster AKS yang disebarkan di VNet yang sama. Anda juga dapat mengonfigurasi subnet pod terpisah untuk kumpulan simpul.
  • Performa tinggi: Karena pod diberi IP jaringan virtual, mereka memiliki konektivitas langsung ke pod kluster dan sumber daya lain di VNet. Solusi tersebut mendukung kluster yang sangat besar tanpa degradasi performa.
  • Kebijakan VNet terpisah untuk pod: Karena pod memiliki subnet terpisah, Anda dapat mengonfigurasi kebijakan VNet terpisah untuk pod yang berbeda dari kebijakan simpul. Ini memungkinkan banyak skenario yang berguna seperti mengizinkan konektivitas internet hanya untuk pod dan bukan untuk simpul, memperbaiki IP sumber untuk pod dalam kumpulan simpul menggunakan Azure NAT Gateway, dan menggunakan NSG untuk memfilter lalu lintas antar kumpulan simpul.
  • Kebijakan jaringan Kubernetes: Baik Kebijakan Jaringan Azure maupun Calico bekerja sama dengan solusi baru ini.

Artikel ini memperlihatkan kepada Anda cara menggunakan jaringan Azure CNI untuk alokasi IP dinamis dan dukungan subnet yang ditingkatkan di AKS.

Prasyarat

Catatan

Saat menggunakan alokasi IP dinamis, mengekspos aplikasi sebagai Layanan Private Link menggunakan Layanan Load Balancer Kubernetes tidak didukung.

  • Tinjau prasyarat untuk mengonfigurasi jaringan Azure CNI dasar di AKS, karena prasyarat yang sama berlaku untuk artikel ini.

  • Tinjau parameter penyebaran untuk mengonfigurasi jaringan Azure CNI dasar di AKS, seperti yang berlaku parameter yang sama.

  • Kluster AKS Engine dan DIY tidak didukung.

  • Azure CLI versi 2.37.0 atau yang lebih baru.

  • Jika Anda memiliki kluster yang sudah ada, Anda perlu mengaktifkan Container Insights untuk memantau penggunaan subnet IP. Anda dapat mengaktifkan Container Insights menggunakan perintah , seperti yang az aks enable-addons ditunjukkan dalam contoh berikut:

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

Merencanakan penetapan alamat IP

Merencanakan alamat IP Anda jauh lebih sederhana dengan fitur ini. Karena simpul dan pod berskala secara independen, ruang alamat mereka juga dapat direncanakan secara terpisah. Karena subnet pod dapat dikonfigurasi ke granularitas kumpulan simpul, Anda selalu dapat menambahkan subnet baru saat menambahkan kumpulan simpul. Pod sistem dalam kumpulan kluster/simpul juga menerima IP dari subnet pod, sehingga perilaku ini perlu dipertanggungjawabkan.

IP dialokasikan ke beberapa node dalam batch 16. Alokasi IP subnet Pod harus direncanakan dengan minimal 16 IP per node dalam kluster; node akan meminta 16 IP pada startup dan akan meminta batch lain sebesar 16 setiap kali ada <8 IP yang tidak dialokasikan dalam kuotanya.

Perencanaan IP untuk layanan Kube dan bridge Docker tetap tidak berubah.

Pod maksimum per simpul dalam kluster dengan alokasi IP dinamis dan dukungan subnet yang ditingkatkan

Pod per nilai node saat menggunakan Azure CNI dengan alokasi IP dinamis sedikit berbeda dari perilaku CNI tradisional:

CNI Default Dapat dikonfigurasi saat penyebaran
CNI Azure Tradisional 30 Ya (hingga 250)
Azure CNI dengan alokasi IP dinamis 250 Ya (hingga 250)

Semua panduan lain yang terkait dengan mengonfigurasi pod maksimum per simpul tetap sama.

Parameter penyebaran

Parameter penyebaran untuk mengonfigurasi jaringan Azure CNI dasar di AKS semuanya valid, dengan dua pengecualian:

  • Parameter subnet sekarang mengacu pada subnet yang terkait dengan simpul kluster.
  • Subnet pod parameter tambahan digunakan untuk menentukan subnet yang alamat IP-nya akan dialokasikan secara dinamis ke pod.

Mengonfigurasi jaringan dengan alokasi IP dinamis dan dukungan subnet yang ditingkatkan - Azure CLI

Menggunakan alokasi IP dinamis dan dukungan subnet yang ditingkatkan di kluster Anda mirip dengan metode default untuk mengonfigurasi kluster Azure CNI. Contoh berikut berjalan melalui pembuatan jaringan virtual baru dengan subnet untuk simpul dan subnet untuk pod, dan membuat kluster yang menggunakan Azure CNI dengan alokasi IP dinamis dan dukungan subnet yang ditingkatkan. Pastikan untuk mengganti variabel seperti $subscription dengan nilai Anda sendiri.

Buat jaringan virtual dengan dua subnet.

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 

Buat kluster, lihat subnet simpul menggunakan --vnet-subnet-id dan subnet pod menggunakan --pod-subnet-id dan mengaktifkan add-on pemantauan.

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

Menambahkan kumpulan simpul

Saat menambahkan kumpulan simpul, referensikan subnet simpul menggunakan --vnet-subnet-id dan subnet pod menggunakan --pod-subnet-id. Contoh berikut membuat dua subnet baru yang kemudian direferensikan dalam pembuatan kumpulan simpul baru:

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

Memantau penggunaan subnet IP

Azure CNI menyediakan kemampuan untuk memantau penggunaan subnet IP. Untuk mengaktifkan pemantauan penggunaan subnet IP, ikuti langkah-langkah di bawah ini:

Mendapatkan file YAML

  1. Unduh atau grep file bernama container-azm-ms-agentconfig.yaml dari GitHub.

  2. Temukan azure_subnet_ip_usage dalam integrasi. Atur enabled ke true.

  3. Simpan file.

Mendapatkan kredensial AKS

Atur variabel untuk langganan, grup sumber daya, dan kluster. Pertimbangkan hal berikut sebagai contoh:

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

Terapkan konfigurasi

  1. Buka terminal di folder file container-azm-ms-agentconfig.yaml yang diunduh disimpan.

  2. Pertama, terapkan konfigurasi menggunakan perintah : kubectl apply -f container-azm-ms-agentconfig.yaml

  3. Ini akan menghidupkan ulang pod dan setelah 5-10 menit, metrik akan terlihat.

  4. Untuk menampilkan metrik pada kluster, buka Buku Kerja pada halaman kluster di portal Azure, dan temukan buku kerja bernama "Penggunaan IP Subnet". Tampilan Anda akan terlihat mirip dengan yang berikut ini:

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

Alokasi dinamis alamat IP dan tanya jawab umum dukungan subnet yang disempurnakan

  • Dapatkah saya menetapkan beberapa subnet pod ke kumpulan kluster/simpul?

    Hanya satu subnet yang dapat ditetapkan ke kumpulan kluster atau simpul. Namun, beberapa kluster atau kumpulan simpul dapat berbagi satu subnet.

  • Dapatkah saya menetapkan subnet pod dari VNet lain secara bersamaan?

    Tidak, subnet pod harus dari VNet yang sama dengan kluster.

  • Dapatkah beberapa kumpulan simpul dalam kluster menggunakan CNI tradisional sedangkan yang lain menggunakan CNI baru?

    Seluruh kluster hanya boleh menggunakan satu jenis CNI.

Langkah berikutnya

Pelajari selengkapnya tentang jaringan di AKS di artikel berikut ini: