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/16
172.30.0.0/16
, atau192.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.
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
, atau192.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 rentang alamat 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:
Azure Kubernetes Service