Bagikan melalui


Membuat kluster Azure Kubernetes Service dengan Integrasi VNet API Server

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.

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 .

Keterbatasan

  • Integrasi VNet API Server tidak mendukung Enkripsi Virtual Network. Kluster yang dijalankan pada SKU simpul versi v3 atau SKU AKS versi sebelumnya (yang tidak mendukung Enkripsi VNet) dimungkinkan tetapi lalu lintasnya akan tanpa enkripsi. 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. Lihat SKU VM yang didukung AKS untuk detailnya.

Availability

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

Membuat kluster AKS dengan Integrasi VNet Server API menggunakan VNet terkelola

Anda dapat mengonfigurasi kluster AKS dengan Integrasi VNet API Server di VNet terkelola atau mode VNet bawa sendiri. Anda dapat membuatnya sebagai kluster publik (dengan akses server API yang tersedia melalui IP publik) atau kluster privat (di mana server API hanya dapat diakses melalui konektivitas VNet privat). Anda juga dapat beralih antara status publik dan privat tanpa menyebarkan ulang kluster Anda.

Membuat grup sumber daya

  • Buat grup sumber daya menggunakan perintah az group create.

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

Menyebarkan kluster publik

  • Menyebarkan kluster AKS publik dengan integrasi API Server VNet untuk VNet terkelola 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 \
        --generate-ssh-keys
    

Menyebarkan kluster privat

  • Sebarkan kluster AKS privat dengan integrasi API Server VNet untuk VNet terkelola 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 \
        --generate-ssh-keys
    

Membuat kluster AKS privat dengan Integrasi VNet API Server menggunakan VNet bawa sendiri

Saat menggunakan VNet bawa sendiri, Anda harus membuat dan mendelegasikan subnet server API untuk Microsoft.ContainerService/managedClusters, yang 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 9 IP di ruang alamat subnet. Kehabisan alamat IP dapat mencegah penskalaan server API dan menyebabkan pemadaman server API.

Membuat grup sumber daya

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 AKS yang ada ke Integrasi VNet API Server

Peringatan

Integrasi VNet API Server adalah fitur sensitif kapasitas satu arah.

  • Diperlukan mulai ulang manual.
    Setelah mengaktifkan Integrasi VNet API Server menggunakan az aks update --enable-apiserver-vnet-integration, karena transisi sumber daya sarana kontrol, Anda harus segera memulai ulang kluster agar perubahan diterapkan. 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 telah divalidasi, tetapi belum dipesan.
    AKS memvalidasi kapasitas regional saat Anda mengaktifkan fitur pada kluster yang ada, tetapi validasi ini tidak mencadangkan kapasitas. Jika hidupkan ulang tertunda 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 akan 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 alamat IP server API telah dikonfigurasi dalam firewall atau aturan grup keamanan jaringan apa pun, aturan tersebut mungkin perlu diperbarui.

  • 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>
    

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.

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 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.

Langkah selanjutnya