Gambaran umum jaringan Azure CNI di Azure Kubernetes Service (AKS)

Secara default, kluster AKS menggunakan kubenet dan membuat jaringan virtual dan subnet. Dengan kubenet, simpul mendapatkan alamat IP dari subnet jaringan virtual. Network address translation/Penafsiran alamat jaringan (NAT) kemudian dikonfigurasi pada simpul, dan pod menerima alamat IP "tersembunyi" di belakang IP simpul. Pendekatan ini mengurangi jumlah alamat IP yang perlu Anda pesan di ruang jaringan untuk digunakan pod.

Dengan Azure Container Networking Interface/Jaringan Kontainer Antarmuka (CNI), setiap pod mendapatkan alamat IP dari subnet dan dapat diakses secara langsung. Sistem dalam jaringan virtual yang sama dengan kluster AKS melihat pod IP sebagai alamat sumber untuk setiap lalu lintas dari pod. Sistem di luar jaringan virtual kluster AKS melihat IP simpul sebagai alamat sumber untuk setiap lalu lintas dari pod. Alamat IP ini harus unik di seluruh ruang jaringan Anda dan harus direncanakan terlebih dahulu. Setiap simpul memiliki parameter konfigurasi untuk jumlah maksimum pod yang didukungnya. Jumlah alamat IP yang setara per simpul kemudian dicadangkan di depan untuk simpul tersebut. Pendekatan ini membutuhkan lebih banyak perencanaan, dan sering menyebabkan kelelahan alamat IP atau kebutuhan untuk membangun kembali kluster dalam subnet yang lebih besar seiring dengan meningkatnya permintaan aplikasi Anda.

Catatan

Artikel ini hanya memperkenalkan Azure CNI tradisional. Untuk Azure CNI Overlay, Azure CNI VNet untuk alokasi IP dinamis, dan Azure CNI VNet - Alokasi Blok Statis (Pratinjau). Silakan lihat dokumentasi mereka sebagai gantinya.

Prasyarat

  • Jaringan virtual untuk kluster AKS harus memungkinkan konektivitas internet keluar.

  • Kluster AKS tidak dapat menggunakan 169.254.0.0/16, , 172.31.0.0/16172.30.0.0/16, atau 192.0.2.0/24 untuk rentang alamat layanan Kubernetes, rentang alamat pod, atau rentang alamat jaringan virtual kluster.

  • Identitas kluster yang digunakan oleh kluster AKS harus memiliki setidaknya izin Kontributor Jaringan pada subnet dalam jaringan virtual Anda. Jika Anda ingin menentukan peran kustom alih-alih menggunakan peran Kontributor Jaringan bawaan, diperlukan izin berikut:

    • Microsoft.Network/virtualNetworks/subnets/join/action

    • Microsoft.Network/virtualNetworks/subnets/read

    • Microsoft.Authorization/roleAssignments/write

  • Subnet yang ditetapkan ke kumpulan simpul AKS tidak dapat menjadi subnet yang didelegasikan.

  • AKS tidak menerapkan Kelompok Keamanan Jaringan (NSG) ke subnetnya dan tidak mengubah NSG apa pun yang terkait dengan subnet tersebut. Jika Anda menyediakan subnet Anda sendiri dan menambahkan NSG yang terkait dengan subnet tersebut, Anda harus memastikan aturan keamanan di NSG mengizinkan lalu lintas dalam rentang CIDR node. Untuk informasi selengkapnya, lihat Kelompok keamanan jaringan.

Rencanakan alamat IP untuk kluster Anda

Kluster yang dikonfigurasi dengan jaringan Azure CNI memerlukan perencanaan ekstra. Ukuran jaringan virtual dan subnetnya harus mengakomodasi jumlah pod yang Anda rencanakan untuk dijalankan dan jumlah simpul untuk kluster tersebut.

Alamat IP untuk pod dan simpul kluster ditetapkan dari subnet yang ditentukan dalam jaringan virtual. Setiap simpul dikonfigurasi dengan alamat IP utama. Azure CNI telah mengonfigurasi 30 alamat IP tambahan secara default. Alamat IP ini ditetapkan ke pod yang dijadwalkan pada simpul. Ketika Anda memperluas skala kluster Anda, setiap simpul juga dikonfigurasi dengan alamat IP dari subnet. Anda juga dapat melihat pod maksimum per simpul.

Penting

Jumlah alamat IP yang diperlukan harus mencakup pertimbangan untuk operasi peningkatan dan penskalaan. Jika Anda mengatur rentang alamat IP untuk hanya mendukung jumlah simpul tetap, Anda tidak dapat meningkatkan atau menskalakan kluster Anda.

  • Saat Anda meningkatkan kluster AKS, simpul baru akan disebarkan ke dalam kluster. Layanan dan beban kerja mulai berjalan pada simpul baru, dan simpul yang lebih lama dihapus dari kluster. Proses peningkatan bergulir ini memerlukan minimal satu blok alamat IP tambahan yang akan tersedia. Jumlah simpul Anda kemudian n + 1.

    • Pertimbangan ini sangat penting ketika Anda menggunakan kumpulan simpul Windows Server. Simpul Windows Server di AKS tidak otomatis menerapkan Windows Updates. Sebagai gantinya, Anda melakukan peningkatan pada kumpulan simpul. Peningkatan ini menyebarkan simpul baru dengan gambar simpul dasar Window Server 2019 terbaru dan patch keamanan. Untuk informasi selengkapnya tentang peningkatan kumpulan simpul Windows Server, lihat Peningkatan kumpulan simpul di AKS.
  • Saat Anda menskalakan kluster AKS, simpul baru akan disebarkan ke dalam kluster. Layanan dan beban kerja mulai berjalan pada simpul baru. Rentang alamat IP Anda perlu mempertimbangkan bagaimana Anda mungkin ingin meningkatkan jumlah simpul dan pod yang dapat didukung kluster Anda. Satu simpul tambahan untuk operasi peningkatan juga harus disertakan. Jumlah simpul Anda kemudian n + number-of-additional-scaled-nodes-you-anticipate + 1.

Jika Anda mengharapkan node menjalankan jumlah maksimum pod, dan secara teratur menghancurkan dan menyebarkan pod, Anda juga harus memperhitungkan beberapa alamat IP tambahan per simpul. Beberapa detik dapat diperlukan untuk menghapus layanan dan merilis alamat IP-nya agar layanan baru dapat disebarkan dan memperoleh alamat. Alamat IP tambahan ini mempertimbangkan kemungkinan ini.

Rencana alamat IP untuk kluster AKS terdiri dari jaringan virtual, setidaknya satu subnet untuk simpul dan pod, dan rentang alamat layanan Kubernetes.

Rentang alamat / sumber daya Azure Batas dan ukuran
Jaringan virtual Jaringan virtual Azure bisa sebesar /8, tetapi terbatas pada 65.536 alamat IP yang dikonfigurasi. Pertimbangkan semua kebutuhan jaringan Anda, termasuk berkomunikasi dengan layanan di jaringan virtual lainnya, sebelum mengonfigurasi ruang alamat Anda. Misalnya, jika Anda mengonfigurasi ruang alamat yang terlalu besar, Anda mungkin mengalami masalah dengan tumpang tindih ruang alamat lain dalam jaringan Anda.
Subnet Harus cukup besar untuk mengakomodasi simpul, pod, dan semua sumber daya Kubernetes dan Azure yang mungkin tersedia di kluster Anda. Misalnya, jika Anda menyebarkan Azure Load Balancer internal, IP ujung depannya dialokasikan dari subnet kluster, bukan IP publik. Ukuran subnet juga harus memperhitungkan operasi peningkatan atau kebutuhan penskalaan di waktu mendatang.

Gunakan persamaan berikut untuk menghitung ukuran subnet minimum termasuk simpul tambahan untuk operasi peningkatan: (number of nodes + 1) + ((number of nodes + 1) * maximum pods per node that you configure)

Contoh untuk kluster simpul 50: (51) + (51 * 30 (default)) = 1,581 (/21 atau lebih besar)

Contoh untuk kluster simpul 50 yang juga mencakup persiapan untuk meningkatkan 10 node tambahan: (61) + (61 * 30 (default)) = 1,891 (/21 atau lebih besar)

Jika Anda tidak menentukan jumlah maksimum pod per simpul saat Anda membuat kluster, jumlah maksimum pod per simpul diatur ke 30. Jumlah minimum alamat IP yang diperlukan didasarkan pada nilai tersebut. Jika Anda menghitung persyaratan alamat IP minimum pada nilai maksimum yang berbeda, lihat Pod maksimum per simpul untuk mengatur nilai ini saat Anda menyebarkan kluster Anda.

Rentang alamat Layanan Kubernetes Elemen jaringan apa pun pada atau yang terhubung ke jaringan virtual ini tidak boleh menggunakan rentang ini. Alamat layanan CIDR harus lebih kecil dari /12. Anda dapat menggunakan kembali rentang ini di berbagai kluster AKS.
Alamat IP Layanan DNS (Sistem Nama Domain) Kubernetes Alamat IP dalam rentang alamat layanan Kubernetes yang digunakan oleh penemuan layanan kluster. Jangan gunakan alamat IP pertama di rentang alamat Anda. Alamat pertama dalam rentang subnet digunakan untuk alamat kubernetes.default.svc.cluster.local.

Pod maksimum per simpul

Jumlah maksimum pod per simpul dalam kluster AKS adalah 250. Jumlah maksimum default pod per simpul bervariasi antara jaringan kubenet dan Azure CNI, dan metode penyebaran kluster.

Metode penyebaran Default Kubenet Default Azure CNI Dapat dikonfigurasi saat penyebaran
Azure CLI 110 30 Ya (hingga 250)
Templat Azure Resource Manager 110 30 Ya (hingga 250)
Portal 110 110 (dikonfigurasi di tab Kumpulan Simpul) Ya (hingga 250)

Mengonfigurasi pod maksimum per simpul untuk kluster baru

Anda dapat mengonfigurasi jumlah maksimum pod per simpul baik pada waktu penyebaran kluster atau saat Anda menambahkan kumpulan simpul baru. Anda dapat mengatur pod maksimum per nilai node hingga mencapai 250.

Jika Anda tidak menentukan maxPods saat membuat kumpulan simpul baru, Anda akan menerima nilai default 30 untuk Azure CNI.

Nilai minimum untuk pod maksimum per simpul diberlakukan untuk menjamin ruang bagi pod sistem yang penting bagi kesehatan kluster. Nilai minimum yang dapat ditetapkan untuk pod maksimum per simpul adalah 10 jika dan hanya jika konfigurasi setiap kumpulan simpul memiliki ruang untuk minimal 30 pod. Misalnya, mengatur pod maksimum per simpul ke minimum 10 mengharuskan setiap kumpulan simpul individu untuk memiliki minimal tiga simpul. Persyaratan ini berlaku untuk setiap kumpulan simpul baru yang dibuat juga, jadi jika 10 didefinisikan sebagai pod maksimum per simpul setiap kumpulan simpul berikutnya yang ditambahkan harus memiliki setidaknya tiga simpul.

Jaringan Minimum Maksimum
Azure CNI 10 250
Kubenet 10 250

Catatan

Nilai minimum dalam tabel sebelumnya diberlakukan secara ketat oleh layanan AKS. Anda tidak dapat mengatur nilai untuk maxPods yang lebih rendah dari minimum yang ditampilkan, karena itu dapat mencegah kluster dimulai.

  • Azure CLI: Tentukan argumen --max-pods saat Anda menggunakan kluster dengan perintah buat az aks. Nilai maksimum adalah 250.
  • Templat Resource Manager: Tentukan properti maxPods di objek ManagedClusterAgentPoolProfile saat Anda menyebarkan kluster dengan templat Resource Manager. Nilai maksimum adalah 250.
  • Portal Microsoft Azure: Ubah bidang Max pods per node di pengaturan kumpulan node saat membuat kluster atau menambahkan kumpulan node baru.

Mengonfigurasi pod maksimum per simpul untuk kluster yang ada

Pengaturan maxPods per node dapat ditentukan saat Anda membuat kumpulan simpul baru. Jika Anda perlu meningkatkan pengaturan maxPods pada kluster yang ada, tambahkan kumpulan simpul baru dengan jumlah maxPods baru yang diinginkan. Setelah memigrasikan pod ke kumpulan baru, hapus kumpulan yang lama. Untuk menghapus kumpulan lama dalam kluster, pastikan Anda mengatur mode kumpulan simpul seperti yang didefinisikan dalam dokumen kumpulan simpul sistem.

Parameter penyebaran

Saat Anda membuat kluster AKS, parameter berikut dapat dikonfigurasi untuk jaringan Azure CNI:

Jaringan virtual: Jaringan virtual tempat Anda ingin menyebarkan kluster Kubernetes. Jika Anda ingin membuat jaringan virtual baru untuk kluster Anda, pilih Buat baru dan ikuti langkah-langkah pada bagian Buat jaringan virtual. Jika Anda ingin memilih jaringan virtual yang ada, pastikan jaringan tersebut berada di lokasi yang sama dan langganan Azure dengan kluster Kubernetes Anda. Untuk informasi tentang batasan dan kuota untuk jaringan virtual Azure, lihat Batas langganan dan layanan Azure, kuota, dan batasan.

Subnet: Subnet dalam jaringan virtual tempat Anda ingin menyebarkan kluster. Jika Anda ingin membuat jaringan virtual baru untuk kluster Anda, pilih Buat baru dan ikuti langkah-langkah pada bagian Buat subnet. Untuk konektivitas hibrida, rentang alamat tidak boleh tumpang tindih dengan jaringan virtual lainnya di lingkungan Anda.

Plugin Jaringan Azure: Saat plugin jaringan Azure digunakan, layanan LoadBalancer internal dengan "externalTrafficPolicy=Local" tidak dapat diakses dari VM dengan IP di clusterCIDR yang bukan milik kluster AKS.

Rentang alamat layanan Kubernetes: Parameter ini adalah set IP virtual yang ditetapkan Kubernetes ke layanan internal kluster Anda. Rentang ini tidak dapat diperbarui setelah Anda membuat kluster. Anda dapat menggunakan rentang alamat privat apa pun yang memenuhi persyaratan berikut:

  • Tidak boleh berada dalam rentang alamat IP jaringan virtual kluster Anda
  • Tidak boleh tumpang tindih dengan jaringan virtual lain yang dengannya rekan jaringan virtual kluster
  • Tidak boleh tumpang tindih dengan IP lokal
  • Tidak boleh dalam rentang 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16, atau 192.0.2.0/24

Meskipun secara teknis dimungkinkan untuk menentukan rentang alamat layanan dalam jaringan virtual yang sama dengan kluster Anda, melakukannya tidak disarankan. Perilaku yang tidak dapat diprediksi dapat terjadi jika rentang IP yang tumpang tindih digunakan. Untuk informasi selengkapnya lihat bagian Tanya Jawab Umum di artikel ini. Untuk informasi selengkapnya tentang layanan Kubernetes, lihat Layanan dalam dokumentasi Kubernetes.

Alamat IP layanan DNS Kubernetes: Alamat IP untuk layanan DNS kluster. Alamat ini harus berada dalam rentang alamat layanan Kubernetes. Jangan gunakan alamat IP pertama di rentang alamat Anda. Alamat pertama dalam rentang subnet digunakan untuk alamat kubernetes.default.svc.cluster.local.

Tanya jawab umum

  • Dapatkah saya menyebarkan VM di subnet kluster saya?

    Ya. Tetapi untuk Azure CNI untuk alokasi IP dinamis, VM tidak dapat disebarkan di subnet pod.

  • IP sumber apa yang dilihat sistem eksternal untuk lalu lintas yang berasal dari pod berkemampuan Azure CNI?

    Sistem dalam jaringan virtual yang sama dengan kluster AKS melihat pod IP sebagai alamat sumber untuk setiap lalu lintas dari pod. Sistem di luar jaringan virtual kluster AKS melihat IP simpul sebagai alamat sumber untuk setiap lalu lintas dari pod.

    Tetapi untuk Azure CNI untuk alokasi IP dinamis, tidak peduli koneksi berada di dalam jaringan virtual yang sama atau lintas jaringan virtual, IP pod selalu menjadi alamat sumber untuk lalu lintas apa pun dari pod. Ini karena Azure CNI untuk alokasi IP dinamis mengimplementasikan infrastruktur Microsoft Azure Container Networking , yang memberikan pengalaman end-to-end. Oleh karena itu, menghilangkan penggunaan ip-masq-agent, yang masih digunakan oleh Azure CNI tradisional.

  • Dapatkah saya mengonfigurasi kebijakan jaringan per pod?

    Ya, kebijakan jaringan Kubernetes tersedia dalam AKS. Untuk memulai, lihat Amankan lalu lintas antar pod dengan menggunakan kebijakan jaringan di AKS.

  • Apakah jumlah maksimum pod dapat disebarkan ke simpul yang dapat dikonfigurasi?

    Ya, saat Anda menyebarkan kluster dengan Azure CLI atau templat Resource Manager. Lihat Pod maksimum per simpul.

    Anda tidak dapat mengubah jumlah maksimum pod per simpul pada kluster yang ada.

  • Bagaimana cara mengonfigurasi properti tambahan untuk subnet yang saya buat selama pembuatan kluster AKS? Misalnya, titik akhir layanan.

    Daftar lengkap properti untuk jaringan virtual dan subnet yang Anda buat selama pembuatan kluster AKS dapat dikonfigurasi di halaman konfigurasi jaringan virtual standar di portal Microsoft Azure.

  • Dapatkah saya menggunakan subnet yang berbeda dalam jaringan virtual kluster saya untuk rentangalamat layanan Kubernetes?

    Ini tidak disarankan, tetapi konfigurasi ini dimungkinkan. Rentang alamat layanan adalah sekumpulan IP virtual (VIP) yang ditetapkan Kubernetes ke layanan internal di kluster Anda. Penjaringan Azure tidak memiliki visibilitas ke dalam rentang IP layanan dari kluster Kubernetes. Kurangnya visibilitas ke dalam rentang alamat layanan kluster dapat menyebabkan masalah. Dimungkinkan untuk kemudian membuat subnet baru di jaringan virtual kluster yang tumpang tindih dengan rentang alamat layanan. Jika tumpang tindih seperti itu terjadi, Kubernetes dapat menetapkan suatu layanan IP yang sudah digunakan oleh sumber daya lain di subnet, menyebabkan perilaku atau kegagalan yang tidak dapat diprediksi. Dengan memastikan Anda menggunakan rentang alamat di luar jaringan virtual kluster, Anda dapat menghindari risiko tumpang tindih ini.

Langkah selanjutnya

Pelajari selengkapnya tentang jaringan di AKS di artikel berikut ini: