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
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.
Untuk melihat dan memverifikasi sumber daya NodeNetworkConfiguration (NNC) yang bertanggung jawab atas alokasi IP ini, Anda dapat menjalankan perintah berikut:
kubectl get nodenetworkconfigs -n kube-system -o wide
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 \
--generate-ssh-keys
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
Unduh atau grep file bernama container-azm-ms-agentconfig.yaml dari GitHub.
Temukan
azure_subnet_ip_usage
dalam integrasi. Aturenabled
ketrue
.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
- Buka terminal di folder tempat file container-azm-ms-agentconfig.yaml yang diunduh disimpan.
- Terapkan konfigurasi menggunakan
kubectl apply -f container-azm-ms-agentconfig.yaml
perintah . Ini akan menghidupkan ulang pod dan setelah 5-10 menit, metrik akan terlihat. - Tampilkan metrik pada kluster dengan menavigasi ke Buku Kerja pada halaman kluster di portal Azure, dan temukan buku kerja bernama Penggunaan IP Subnet.
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:
Azure Kubernetes Service