Menggunakan Integrasi VNet API Server di Azure Kubernetes Service (AKS)

Berlaku untuk: ✔️ AKS Automatic ✔️ AKS Standard

Kluster Azure Kubernetes Service (AKS) yang dikonfigurasi dengan Integrasi VNet API Server memproyeksikan titik akhir server API langsung ke subnet yang didelegasikan di VNet tempat AKS disebarkan. Integrasi VNet API Server memungkinkan komunikasi jaringan antara server API dan node kluster tanpa memerlukan tautan atau terowongan privat. Server API tersedia di belakang VIP load balancer internal dalam subnet yang didelegasikan, yang telah dikonfigurasi agar dapat digunakan oleh node. Dengan menggunakan Integrasi VNet API Server, Anda dapat memastikan lalu lintas jaringan antara server API dan kumpulan simpul Anda tetap berada di jaringan privat saja.

Untuk sebagian besar beban kerja produksi, AKS Otomatis adalah pengalaman AKS default yang direkomendasikan. AKS Otomatis siap produksi secara default dan menyertakan Integrasi VNet API Server sebagai kemampuan keamanan kluster yang telah dikonfigurasi sebelumnya. Di AKS Standard, Integrasi VNet API Server bersifat opsional dan Anda mengaktifkannya selama pembuatan kluster atau dengan memperbarui kluster yang ada.

Untuk mempelajari selengkapnya tentang AKS Otomatis, lihat Apa itu Azure Kubernetes Service (AKS) Otomatis?

Integrasi VNet API Server pada AKS Automatic dan AKS Standard

Integrasi VNet API Server tersedia dalam kedua mode kluster AKS, tetapi penyiapannya berbeda:

  • AKS Otomatis: Integrasi VNet API Server telah dikonfigurasi sebelumnya.
  • Standar AKS: Integrasi VNet API Server bersifat opsional dan harus diaktifkan secara eksplisit.

Untuk sebagian besar skenario produksi, mulailah dengan AKS Automatic untuk menggunakan pengaturan default yang siap untuk produksi dan mengurangi overhead operasional.

Konektivitas server API

Sarana kontrol atau server API berada dalam langganan Azure yang dikelola AKS. Kluster atau kumpulan simpul Anda ada di langganan Azure Anda. Server dan komputer virtual yang membentuk node kluster dapat berkomunikasi satu sama lain melalui API server VIP dan IP pod yang diproyeksikan ke dalam subnet yang didelegasikan.

Integrasi VNet API Server didukung untuk kluster publik atau privat. Anda dapat menambahkan atau menghapus akses publik setelah provisi kluster. Tidak seperti kluster terintegrasi non-VNet, simpul agen selalu berkomunikasi langsung dengan alamat IP privat IP penyeimbang muatan internal (ILB) server API tanpa menggunakan DNS. Semua lalu lintas dari node ke server API disimpan di jaringan privat, dan tidak ada terowongan yang diperlukan untuk konektivitas server API ke node. Klien di luar kluster yang perlu berkomunikasi dengan server API dapat melakukannya secara normal jika akses jaringan publik diaktifkan. Jika akses jaringan publik dinonaktifkan, Anda harus mengikuti metodologi penyiapan DNS privat yang sama dengan kluster privat standar.

Prasyarat

  • Anda harus menginstal Azure CLI versi 2.73.0 atau yang lebih baru. Anda dapat memeriksa versi Anda menggunakan az --version perintah .
  • Jika Anda membawa jaringan virtual Anda sendiri, tinjau prasyarat jaringan virtual.

Keterbatasan

Batasan berikut berlaku untuk Integrasi VNet API Server, baik yang telah dikonfigurasi sebelumnya pada AKS Otomatis atau diaktifkan secara eksplisit pada Standar AKS:

  • Integrasi VNet API Server tidak mendukung Enkripsi Virtual Network. Kluster yang disebarkan pada SKU simpul AKS v3 atau sebelumnya (yang tidak mendukung Enkripsi VNet) diizinkan, tetapi lalu lintas tidak dienkripsi. Kluster yang disebarkan pada SKU simpul AKS v4 atau lebih baru (yang mendukung Enkripsi VNet) akan diblokir karena VNet yang terenkripsi tidak kompatibel dengan API Server VNet Integration. Untuk informasi selengkapnya, lihat SKU VM yang didukung AKS.
  • Untuk menggunakan jaringan dual-stack, kluster Anda memerlukan Kubernetes versi 1.26.3 atau yang lebih baru, plugin jaringan azure dan mode plugin jaringan overlay. Untuk informasi selengkapnya, lihat kluster CNI Azure dengan jaringan berdouble stack.

Availability

  • Integrasi VNet API Server tersedia di semua wilayah cloud publik GA kecuali qatarcentral.

Membuat kluster dengan Integrasi VNet API Server

Di AKS Otomatis, Integrasi VNet API Server telah dikonfigurasi sebelumnya. Tidak diperlukan bendera eksplisit --enable-apiserver-vnet-integration .

Buat kluster otomatis AKS dengan mengikuti panduan mulai cepat:

Standar AKS: VNet terkelola

Anda dapat mengonfigurasi kluster AKS Standard dengan Integrasi VNet API Server dalam mode VNet terkelola sebagai kluster publik atau privat.

Nota

Integrasi VNet API Server tidak tersedia di qatarcentral.

Membuat grup sumber daya

Buat grup sumber daya menggunakan perintah az group create.

az group create --location <location> --name <resource-group>

Menyebarkan kluster publik

Sebarkan kluster AKS Standar publik dengan integrasi VNet Server API untuk VNet terkelola menggunakan perintah az aks create dengan bendera --enable-apiserver-vnet-integration.

az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --network-plugin azure \
    --enable-apiserver-vnet-integration \
    --generate-ssh-keys

Menyebarkan kluster privat

Terapkan kluster AKS Standard pribadi dengan integrasi VNet server API untuk VNet terkelola menggunakan perintah az aks create dengan flag --enable-apiserver-vnet-integration dan --enable-private-cluster.

az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --network-plugin azure \
    --enable-private-cluster \
    --enable-apiserver-vnet-integration \
    --generate-ssh-keys

Standar AKS: bawa VNet Anda sendiri

Saat Anda menggunakan VNet bawa sendiri, Anda harus membuat dan mendelegasikan subnet server API ke Microsoft.ContainerService/managedClusters. Delegasi ini memberikan izin layanan AKS untuk menyuntikkan pod server API dan load balancer internal ke subnet tersebut. Anda tidak dapat menggunakan subnet untuk beban kerja lain, tetapi Anda dapat menggunakannya untuk beberapa kluster AKS yang terletak di jaringan virtual yang sama. Ukuran subnet server API minimum yang didukung adalah /28.

Identitas kluster memerlukan izin ke subnet server API dan subnet simpul. Kurangnya izin di subnet server API dapat menyebabkan kegagalan provisi.

Peringatan

Kluster AKS mencadangkan setidaknya sembilan IP di ruang alamat subnet. Kehabisan alamat IP dapat mencegah penskalaan server API dan menyebabkan pemadaman server API.

Nota

Integrasi VNet API Server tidak tersedia di qatarcentral.

Membuat grup sumber daya

Buat grup sumber daya menggunakan perintah az group create.

az group create --location <location> --name <resource-group>

Buat jaringan virtual

  1. Buat jaringan virtual menggunakan az network vnet create perintah .

    az network vnet create --name <vnet-name> \
    --resource-group <resource-group> \
    --location <location> \
    --address-prefixes 172.19.0.0/16
    
  2. Buat subnet server API menggunakan az network vnet subnet create perintah .

    az network vnet subnet create --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <apiserver-subnet-name> \
    --delegations Microsoft.ContainerService/managedClusters \
    --address-prefixes 172.19.0.0/28
    
  3. Buat subnet kluster menggunakan az network vnet subnet create perintah .

    az network vnet subnet create --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <cluster-subnet-name> \
    --address-prefixes 172.19.1.0/24
    

Membuat identitas terkelola dan memberinya izin di jaringan virtual

  1. Buat identitas terkelola menggunakan az identity create perintah .

    az identity create --resource-group <resource-group> --name <managed-identity-name> --location <location>
    
  2. Tetapkan peran Kontributor Jaringan ke subnet server API menggunakan az role assignment create perintah .

    az role assignment create --scope <apiserver-subnet-resource-id> \
    --role "Network Contributor" \
    --assignee <managed-identity-client-id>
    
  3. Tetapkan peran Kontributor Jaringan ke subnet kluster menggunakan az role assignment create perintah .

    az role assignment create --scope <cluster-subnet-resource-id> \
    --role "Network Contributor" \
    --assignee <managed-identity-client-id>
    

Menyebarkan kluster publik

Sebarkan kluster AKS publik dengan integrasi Server API VNet menggunakan perintah az aks create dengan opsi --enable-apiserver-vnet-integration.

az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --network-plugin azure \
    --enable-apiserver-vnet-integration \
    --vnet-subnet-id <cluster-subnet-resource-id> \
    --apiserver-subnet-id <apiserver-subnet-resource-id> \
    --assign-identity <managed-identity-resource-id> \
    --generate-ssh-keys

Menyebarkan kluster privat

Terapkan kluster AKS privat dengan integrasi API Server VNet menggunakan perintah az aks create dengan opsi --enable-apiserver-vnet-integration dan --enable-private-cluster.

az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --network-plugin azure \
    --enable-private-cluster \
    --enable-apiserver-vnet-integration \
    --vnet-subnet-id <cluster-subnet-resource-id> \
    --apiserver-subnet-id <apiserver-subnet-resource-id> \
    --assign-identity <managed-identity-resource-id> \
    --generate-ssh-keys

Mengonversi kluster Standar AKS yang ada ke Integrasi VNet API Server

Peringatan

Integrasi VNet API Server adalah fitur sensitif kapasitas satu arah. Saat Anda mengaktifkan Integrasi VNet API Server pada kluster Standar AKS yang ada, batasan berikut berlaku:

  • Mulai ulang manual diperlukan: Setelah mengaktifkan Integrasi VNet Server API menggunakan az aks update --enable-apiserver-vnet-integration, karena transisi sumber daya control plane, Anda harus segera memulai ulang kluster agar perubahan berlaku. Mulai ulang ini tidak otomatis. Menunda memulai ulang meningkatkan risiko kapasitas menjadi tidak tersedia, yang dapat mencegah server API beroperasi. Mulai ulang kluster juga memastikan bahwa semua node terhubung kembali dengan andal ke titik akhir server API baru.
  • Kapasitas divalidasi, tetapi tidak dicadangkan: AKS memvalidasi kapasitas regional saat Anda mengaktifkan fitur pada kluster yang ada, tetapi validasi ini tidak mencadangkan kapasitas. Jika Anda menunda mulai ulang dan kapasitas menjadi tidak tersedia sementara itu, kluster mungkin gagal dimulai setelah berhenti atau memulai ulang. Kluster yang mengaktifkan fitur ini sebelum ketersediaan umum (GA), atau yang belum dimulai ulang sejak pengaktifan, tidak menjalani validasi kapasitas.
  • Fitur tidak dapat dinonaktifkan: Setelah diaktifkan, fitur ini permanen. Anda tidak dapat menonaktifkan Integrasi VNet API Server.

Peningkatan ini melakukan peningkatan versi citra simpul pada semua kumpulan simpul dan semua beban kerja akan dimulai ulang saat mereka menjalani peningkatan citra bertahap.

Peringatan

Mengonversi kluster ke Integrasi VNet API Server menghasilkan perubahan alamat IP API Server, meskipun nama host tetap sama. Jika Anda mengonfigurasi alamat IP server API di firewall atau aturan grup keamanan jaringan apa pun, Anda mungkin perlu memperbarui aturan tersebut.

  1. Perbarui kluster Anda ke Integrasi VNet API Server menggunakan perintah az aks update dengan opsi --enable-apiserver-vnet-integration.

    az aks update --name <cluster-name> \
        --resource-group <resource-group> \
        --enable-apiserver-vnet-integration \
        --apiserver-subnet-id <apiserver-subnet-resource-id>
    
  2. Mulai ulang kluster Anda menggunakan perintah [az aks stop][az-aks-stop] dan [az aks start][az-aks-start].

    az aks stop --name <cluster-name> --resource-group <resource-group>
    az aks start --name <cluster-name> --resource-group <resource-group>
    

Mengaktifkan atau menonaktifkan mode kluster privat pada kluster yang ada dengan Integrasi VNet API Server

Kluster AKS yang dikonfigurasi dengan Integrasi VNet API Server dapat mengaktifkan akses jaringan publik/mode kluster privat atau dinonaktifkan tanpa menyebarkan ulang kluster. Nama host server API tidak berubah, tetapi entri DNS publik dimodifikasi atau dihapus jika perlu.

Nota

--disable-private-cluster saat ini dalam pratinjau. Untuk informasi selengkapnya, lihat Tingkat referensi dan dukungan.

Mengaktifkan mode kluster privat

Aktifkan mode kluster pribadi menggunakan perintah az aks update dengan pengaturan --enable-private-cluster.

az aks update --name <cluster-name> \
    --resource-group <resource-group> \
    --enable-private-cluster \
    --enable-apiserver-vnet-integration \
    --apiserver-subnet-id <apiserver-subnet-resource-id>

Menonaktifkan mode kluster privat

Nonaktifkan mode kluster privat dengan menggunakan perintah az aks update dengan flag --disable-private-cluster.

az aks update --name <cluster-name> \
    --resource-group <resource-group> \
    --disable-private-cluster

Sambungkan ke kluster menggunakan kubectl

Konfigurasikan kubectl untuk menyambungkan ke kluster Anda menggunakan perintah az aks get-credentials.

az aks get-credentials --resource-group <resource-group> --name <cluster-name>

Anda dapat mengekspos titik akhir server API kluster privat dengan Integrasi VNet API Server menggunakan Azure Private Link. Langkah-langkah berikut menunjukkan cara membuat layanan Private Link (PLS) di VNet kluster dan menyambungkannya dari VNet atau langganan lain menggunakan Titik Akhir Privat.

Nota

Integrasi VNet API Server tidak tersedia di qatarcentral.

Membuat kluster privat untuk integrasi VNet Server API

Buat kluster AKS privat dengan Integrasi VNet API Server menggunakan perintah az aks create dengan flag --enable-apiserver-vnet-integration dan --enable-private-cluster.

az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --enable-private-cluster \
    --enable-apiserver-vnet-integration

Untuk panduan selengkapnya tentang cara menyiapkan Private Link dengan Integrasi VNet API Server, lihat Private Link dengan Integrasi VNet API Server.

Aturan keamanan grup keamanan jaringan (NSG)

Semua lalu lintas dalam VNet diizinkan secara default. Tetapi jika Anda telah menambahkan aturan NSG untuk membatasi lalu lintas antara subnet yang berbeda, pastikan bahwa aturan keamanan NSG mengizinkan jenis komunikasi berikut:

Tujuan Sumber Protokol Pelabuhan Gunakan
APIServer Subnet CIDR Subnet Kluster PKT 443 dan 4443 Diperlukan untuk mengaktifkan komunikasi antara Node dan server API.
APIServer Subnet CIDR Azure Load Balancer PKT 9988 Diperlukan untuk mengaktifkan komunikasi antara Azure Load Balancer dan server API. Anda juga dapat mengaktifkan semua komunikasi antara Azure Load Balancer dan CIDR Subnet API Server.