Membuat gateway NAT terkelola atau ditetapkan pengguna untuk kluster Azure Kubernetes Service (AKS) Anda

Berlaku untuk: ✔️ AKS Automatic ✔️ AKS Standard

Untuk sebagian besar beban kerja produksi, AKS Automatic adalah opsi default yang direkomendasikan dan siap untuk produksi bagi AKS. Kluster Otomatis AKS menyertakan gateway NAT terkelola yang telah dikonfigurasi sebelumnya.

Di AKS Standard, Anda dapat membuat atau mengonfigurasi gateway NAT terkelola saat Anda menginginkan konektivitas keluar yang dikelola AKS untuk kluster Anda. Untuk skenario jaringan bring-your-own (BYO), gunakan gateway NAT yang ditetapkan pengguna.

Meskipun Anda dapat merutekan lalu lintas keluar melalui Azure Load Balancer, ada batasan jumlah arus keluar lalu lintas yang dapat Anda miliki. Azure NAT Gateway mendukung hingga 64.512 arus lalu lintas UDP dan TCP keluar per alamat IP dengan maksimum 16 alamat IP. Tiga jenis outbound mendukung NAT gateway: managedNATGatewayV2 (Pratinjau), managedNATGateway, dan userAssignedNATGateway.

Artikel ini memperlihatkan kepada Anda cara membuat kluster AKS dengan gateway NAT terkelola dan gateway NAT yang ditetapkan pengguna untuk lalu lintas keluar. Ini juga menunjukkan kepada Anda cara menonaktifkan OutboundNAT untuk Windows.

Penting

Jenis managedNATGatewayV2 outbound saat ini masih dalam pratinjau. Lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure untuk persyaratan hukum yang berlaku untuk fitur Azure yang masih dalam tahap beta, pratinjau, atau belum dirilis ke ketersediaan umum.

Prasyarat

Kluster Otomatis AKS menyertakan gateway NAT terkelola yang telah dikonfigurasi sebelumnya. Langkah-langkah dalam artikel ini terutama untuk skenario Standar AKS dan jaringan kustom.

  • Pastikan Anda menggunakan versi terbaru Azure CLI.
  • Pastikan Anda menggunakan Kubernetes versi 1.20.x atau yang lebih baru.
  • Gateway NAT terkelola tidak kompatibel dengan jaringan virtual kustom.

Penting

Dalam kluster nonprivat, lalu lintas kluster server API dirutekan dan diproses melalui jenis lalu lintas keluar kluster. Untuk mencegah lalu lintas server API diproses sebagai lalu lintas publik, pertimbangkan untuk menggunakan kluster privat, atau lihat fitur Integrasi VNet API Server.

Gateway NAT terkelola di AKS

AKS Otomatis menggunakan gateway NAT terkelola sebagai bagian dari default siap produksi yang telah dikonfigurasi sebelumnya. Gunakan bagian ini jika Anda bekerja dengan AKS Standard atau jika Anda perlu memahami bagaimana gateway NAT terkelola berperilaku dalam kluster AKS.

Gateway NAT terkelola adalah opsi keluar yang dikelola AKS. AKS membuat dan mengelola gateway NAT untuk menyediakan konektivitas keluar untuk node kluster Anda.

Gunakan gateway NAT terkelola saat Anda ingin:

  • Konektivitas keluar yang dikelola oleh AKS dengan beban operasional yang lebih rendah.
  • Jalur keluar default yang cocok untuk lingkungan produksi.
  • Pengelolaan lalu lintas keluar yang lebih sederhana dibandingkan dengan penerapan gateway NAT yang dikelola pelanggan.
  • Model jaringan AKS standar tanpa menggunakan sumber daya gateway NAT milik Anda sendiri.

Membuat kluster AKS dengan gateway NAT terkelola

Parameter IP keluar

Tabel berikut menjelaskan setiap parameter IP keluar dan kapan menggunakannya:

Parameter Input Versi IP Siapa yang mengelola IP publik
--nat-gateway-managed-outbound-ip-count Nilai dalam rentang [1, 16]. Jumlah IPv4 keluar yang diinginkan untuk koneksi keluar gateway NAT. IPv4 Azure
--nat-gateway-managed-outbound-ipv6-count Nilai dalam rentang [1, 16]. Jumlah IPv6 keluar yang diinginkan untuk koneksi keluar gateway NAT. IPv6 Azure
--nat-gateway-outbound-ips ID sumber daya IP publik yang dipisahkan koma untuk koneksi keluar gateway NAT. IPv4 atau IPv6 Pelanggan
--nat-gateway-outbound-ip-prefixes ID sumber daya awalan IP publik yang dipisahkan dengan koma untuk koneksi keluar dari gateway NAT. IPv4 atau IPv6 Pelanggan

Membuat kluster AKS dengan gateway NAT StandardV2 terkelola (managedNATGatewayV2)

Penting

Fitur pratinjau AKS tersedia atas dasar layanan mandiri dan pendaftaran sukarela. Pratinjau disediakan "apa adanya" dan "sebagaimana tersedia," dan pratinjau tersebut dikecualikan dari perjanjian tingkat layanan (SLA) serta garansi terbatas. Pratinjau AKS sebagian didukung oleh dukungan pelanggan berdasarkan upaya terbaik yang dapat dilakukan. Dengan demikian, fitur-fitur ini tidak dimaksudkan untuk penggunaan produksi. Untuk informasi lebih lanjut, lihat artikel dukungan berikut ini:

  • Buat kluster AKS dengan gateway NAT StandardV2 yang dikelola menggunakan perintah az aks create dengan parameter --outbound-type managedNATGateway, --nat-gateway-outbound-ips, --nat-gateway-outbound-ip-prefixes, --nat-gateway-managed-outbound-ip-count, --nat-gateway-managed-outbound-ipv6-count, dan --nat-gateway-idle-timeout.
  • Saat Anda mengonfigurasi IP keluar untuk managedNATgatewayV2, gunakan salah satu pendekatan berikut. Anda tidak dapat menggunakan IP keluar yang dikelola Azure maupun yang ditentukan pelanggan.
    • IP yang dikelola Azure: Gunakan --nat-gateway-managed-ip-outbound-count dan --nat-gateway-managed-outbound-ipv6-count agar Azure secara otomatis mengalokasikan dan mengelola IP publik keluar atas nama Anda.
    • IP yang ditentukan pelanggan: Gunakan --nat-gateway-outbound-ips dan --nat-gateway-outbound-ip-prefixes untuk membawa alamat IP publik atau prefiks Anda sendiri yang telah disediakan sebelumnya, memberi Anda kontrol penuh atas alamat tertentu yang digunakan untuk lalu lintas keluar. Gateway NAT StandardV2 memerlukan penggunaan IP publik StandardV2 baru. IP Publik SKU Standar yang sudah ada tidak dapat digunakan dengan gateway NAT StandardV2.

Memasang ekstensi aks-preview Azure CLI

Jenis managedNATGatewayV2 outbound saat ini masih dalam pratinjau. Untuk menggunakan jenis outbound ini, instal ekstensi Azure CLI aks-preview dan daftarkan flag fitur ManagedNATGatewayV2Preview.

Instal atau perbarui ekstensi pratinjau Azure CLI menggunakan perintah az extension add atau az extension update. Versi minimum ekstensi Azure CLI adalah aks-preview.

# Install the aks-preview extension
az extension add --name aks-preview

# Update the extension to make sure you have the latest version installed
az extension update --name aks-preview

Daftarkan ManagedNATGatewayV2Preview penanda fitur

  1. Daftarkan penanda fitur ManagedNATGatewayV2Preview menggunakan perintah az feature register.

    az feature register --namespace "Microsoft.ContainerService" --name "ManagedNATGatewayV2Preview"
    
  2. Verifikasi keberhasilan pendaftaran menggunakan perintah az feature show. Dibutuhkan beberapa menit agar pendaftaran selesai.

    az feature show --namespace "Microsoft.ContainerService" --name "ManagedNATGatewayV2Preview"
    

    Setelah fitur menunjukkan Registered, refresh pendaftaran penyedia sumber daya Microsoft.ContainerService menggunakan perintah az provider register.

Membuat kluster AKS dengan gateway NAT StandardV2 terkelola

Perintah-perintah berikut membuat grup sumber daya yang diperlukan, sumber daya IP publik dan awalan IP publik untuk dilampirkan ke gateway NAT, serta kluster AKS dengan gateway NAT StandardV2 yang dikelola.

  1. Buat grup sumber daya menggunakan az group create perintah .

    # Set environment variables for resource group, AKS cluster, public IP, and public IP prefix names
    export RANDOM_SUFFIX=$(openssl rand -hex 3)
    export MY_RG="myResourceGroup$RANDOM_SUFFIX"
    export MY_AKS="myNatV2Cluster$RANDOM_SUFFIX"
    export MY_IP="myNatOutboundIP$RANDOM_SUFFIX"
    export MY_IP_PREFIX="myNatOutboundIPPrefix$RANDOM_SUFFIX"
    
    # Create the resource group
    az group create --name $MY_RG --location "eastus2"
    
  2. Buat alamat IP publik IPv4 yang redundant zona dan awalan IP publik dengan menggunakan perintah az network public-ip create. Simpan $MY_IP dan $MY_IP_PREFIX untuk digunakan sebagai IP keluar untuk gateway NAT StandardV2 terkelola.

    # Create a zone redundant IPv4 public IP address and store the ID to $MY_IP_ID for later use
    export MY_IP_ID=$(az network public-ip create \
        --resource-group $MY_RG \
        --name $MY_IP \
        --location eastus2 \
        --sku StandardV2 \
        --allocation-method Static \
        --version IPv4 \
        --zone 1 2 3 \
        --query publicIp.id \
        --output tsv)
    
    # Create a zone redundant IPv4 public IP prefix and store the ID to $MY_IP_PREFIX_ID for later use
    export MY_IP_PREFIX_ID=$(az network public-ip prefix create \
        --resource-group $MY_RG \
        --name $MY_IP_PREFIX \
        --location eastus2 \
        --length 31 \
        --sku StandardV2 \
        --version IPv4 \
        --zone 1 2 3 \
        --query id \
        --output tsv)
    
  3. Buat kluster AKS dan rujuk alamat IP publik ($MY_IP_ID) serta awalan IP publik ($MY_IP_PREFIX_ID) menggunakan perintah az aks create dengan parameter --outbound-type managedNATGatewayV2, --nat-gateway-outbound-ips, dan --nat-gateway-outbound-ip-prefixes.

    az aks create \
        --resource-group $MY_RG \
        --name $MY_AKS \
        --node-count 3 \
        --outbound-type managedNATGatewayV2 \
        --nat-gateway-outbound-ips $MY_IP_ID \
        --nat-gateway-outbound-ip-prefixes $MY_IP_PREFIX_ID \
        --nat-gateway-idle-timeout 4 \
        --generate-ssh-keys
    

Perbarui IP keluar, awalan IP keluar, jumlah IP keluar terkelola, atau waktu tunggu saat tidak aktif menggunakan perintah az aks update dengan parameter --nat-gateway-outbound-ips, --nat-gateway-outbound-ip-prefixes, --nat-gateway-managed-outbound-count, --nat-gateway-managed-outbound-ipv6-count, atau --nat-gateway-idle-timeout. Sebuah managedNATGatewayV2 tidak dapat diperbarui untuk mengubah antara alamat IP keluar yang ditentukan oleh pelanggan dan yang dikelola setelah dibuat. Konfigurasi IP keluar ditentukan ketika gateway NAT StandardV2 awalnya dibuat dan tetap tidak dapat diubah.

Membuat kluster AKS dengan gateway NAT Standar terkelola (managedNATGateway)

  • Buat kluster AKS dengan gateway NAT standar terkelola menggunakan perintah az aks create dengan parameter --outbound-type managedNATGateway, --nat-gateway-managed-outbound-ip-count, dan --nat-gateway-idle-timeout. Jika Anda ingin gateway NAT beroperasi di luar zona ketersediaan tertentu, tentukan zona menggunakan --zones.
  • Anda tidak dapat menggunakan sumber daya gateway NAT terkelola di beberapa zona ketersediaan. Untuk konektivitas keluar dengan redundansi zona, pertimbangkan menggunakan managedNATgatewayV2.
  • Jika Anda tidak menentukan zona saat membuat gateway NAT terkelola, gateway NAT disebarkan ke tanpa zona secara default. Saat gateway NAT tidak berada di zona, Azure menempatkan sumber daya di zona untuk Anda. Untuk informasi selengkapnya tentang model penyebaran non-zonal, lihat gateway NAT non-zonal.

Membuat kluster AKS dengan userAssignedNatGateway

Konfigurasi ini memerlukan jaringan bawa sendiri (melalui Azure CNI) dan gateway NAT telah dikonfigurasi sebelumnya pada subnet. Gateway NAT Standar dan StandardV2 didukung untuk ini outbound-type. Perintah berikut membuat sumber daya yang diperlukan untuk menyebarkan sumber daya gateway NAT StandardV2 untuk kluster AKS Anda.

  1. Buat grup sumber daya menggunakan az group create perintah .

    # Set environment variables for resource group, AKS cluster, public IP, and public IP prefix names
    export RANDOM_SUFFIX=$(openssl rand -hex 3)
    export MY_RG="myResourceGroup$RANDOM_SUFFIX"
    
    # Create the resource group
    az group create --name $MY_RG --location southcentralus
    
  2. Buat identitas terkelola untuk izin jaringan dan simpan ID di $IDENTITY_ID untuk digunakan nanti.

    export IDENTITY_NAME="myNatClusterId$RANDOM_SUFFIX"
    export IDENTITY_ID=$(az identity create \
        --resource-group $MY_RG \
        --name $IDENTITY_NAME \
        --location southcentralus \
        --query id \
        --output tsv)
    

    Contoh output:

    /xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myNatClusterIdxxx
    
  3. Buat IP publik StandardV2 untuk gateway NAT menggunakan az network public-ip create perintah . Gateway NAT StandardV2 memerlukan alamat IP publik StandardV2.

    export PIP_NAME="myNatGatewayPip$RANDOM_SUFFIX"
    az network public-ip create \
        --resource-group $MY_RG \
        --name $PIP_NAME \
        --location southcentralus \
        --allocation-method Static \
        --version IPv4 \
        --zone 1 2 3 \
        --sku standard-v2
    
  4. Buat gateway NAT StandardV2 menggunakan az network nat gateway create perintah .

    export NATGATEWAY_NAME="myNatGateway$RANDOM_SUFFIX"
    az network nat gateway create \
        --resource-group $MY_RG \
        --name $NATGATEWAY_NAME \
        --location southcentralus \
        --public-ip-addresses $PIP_NAME \
        --sku StandardV2
        --idle-timeout 4
    

    Penting

    Untuk memastikan redundansi zona, sebarkan sumber daya gateway NAT StandardV2, yang mencakup beberapa zona ketersediaan di suatu wilayah. Konfigurasi ini memastikan konektivitas keluar berkelanjutan meskipun satu zona gagal. Untuk detail selengkapnya tentang gateway NAT StandardV2 dan manfaatnya, lihat Gateway NAT StandardV2. Sebagai perbandingan, sumber daya gateway NAT Standar hanya menyediakan ketahanan dalam zona ketersediaan tempat Anda menyebarkannya.

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

    export VNET_NAME="myVnet$RANDOM_SUFFIX"
    az network vnet create \
        --resource-group $MY_RG \
        --name $VNET_NAME \
        --location southcentralus \
        --address-prefixes 172.16.0.0/20 
    
  6. Buat subnet di jaringan virtual menggunakan gateway NAT dan simpan ID untuk $SUBNET_ID digunakan nanti.

    export SUBNET_NAME="myNatCluster$RANDOM_SUFFIX"
    export SUBNET_ID=$(az network vnet subnet create \
        --resource-group $MY_RG \
        --vnet-name $VNET_NAME \
        --name $SUBNET_NAME \
        --address-prefixes 172.16.0.0/22 \
        --nat-gateway $NATGATEWAY_NAME \
        --query id \
        --output tsv)
    
  7. Buat kluster AKS menggunakan subnet dengan gateway NAT dan identitas terkelola menggunakan az aks create perintah .

    export AKS_NAME="myNatCluster$RANDOM_SUFFIX"
    az aks create \
        --resource-group $MY_RG \
        --name $AKS_NAME \
        --location southcentralus \
        --network-plugin azure \
        --vnet-subnet-id $SUBNET_ID \
        --outbound-type userAssignedNATGateway \
        --assign-identity $IDENTITY_ID \
        --generate-ssh-keys
    

Pertimbangan produksi

Saat Anda menggunakan gateway NAT terkelola dalam produksi, rencanakan perilaku lalu lintas keluar, akses server API, dan ketahanan beban kerja.

  • Gunakan AKS Otomatis saat Anda menginginkan default siap produksi yang direkomendasikan untuk sebagian besar beban kerja AKS.
  • Gunakan gateway NAT terkelola di AKS Standard saat Anda menginginkan konektivitas keluar yang dikelola AKS tanpa membawa gateway NAT Anda sendiri.
  • Gunakan kluster privat atau Integrasi VNet API Server saat Anda ingin mengurangi paparan lalu lintas server API.
  • Tinjau persyaratan IP keluar sebelum Anda melakukan siaran langsung.
  • Jika beban kerja Anda bergantung pada alamat keluar tetap, validasi gateway NAT terkelola tersebut memenuhi persyaratan tersebut sebelum penyebaran.
  • Jika Anda perlu mengelola NAT secara independen dari AKS, gunakan gateway NAT yang ditetapkan pengguna.

Nonaktifkan OutboundNAT untuk Windows

Windows OutboundNAT dapat menyebabkan masalah koneksi dan komunikasi tertentu dengan pod AKS Anda. Contoh masalahnya adalah penggunaan kembali port node. Dalam contoh ini, Windows OutboundNAT menggunakan port untuk menerjemahkan IP pod Anda ke IP host simpul Windows Anda, yang dapat menyebabkan koneksi yang tidak stabil ke layanan eksternal karena masalah kelelahan port.

Windows mengaktifkan OutboundNAT secara default. Anda sekarang dapat menonaktifkan OutboundNAT secara manual saat membuat kumpulan agen Windows baru.

Prasyarat dan batasan

  • Anda memerlukan kluster AKS yang ada dengan v1.26 atau yang lebih baru. Jika Anda menggunakan Kubernetes versi 1.25 atau yang lebih lama, perbarui konfigurasi penyebaran Anda.
  • Anda tidak dapat menyetel jenis lalu lintas keluar kluster menjadi LoadBalancer. Anda dapat mengaturnya ke NAT Gateway atau UDR:
    • NAT Gateway: NAT Gateway secara otomatis menangani koneksi NAT dan lebih kuat daripada Standard Load Balancer. Anda mungkin dikenakan biaya tambahan dengan menggunakan opsi ini.
    • UDR (UserDefinedRouting): Anda harus mengingat batasan port saat mengonfigurasi aturan perutean.
    • Untuk beralih dari load balancer ke NAT Gateway, Anda dapat menambahkan NAT gateway ke VNet atau menjalankan az aks upgrade untuk memperbarui jenis lalu lintas keluar.

Catatan

UserDefinedRouting memiliki batasan berikut:

  • SNAT by Load Balancer (harus menggunakan OutboundNAT default) memiliki 64 port pada IP host.
  • SNAT by Azure Firewall (disable OutboundNAT) memiliki 2.496 port per IP publik.
  • SNAT by NAT Gateway (disable OutboundNAT) memiliki 64.512 port per IP publik.
  • Jika rentang port Azure Firewall tidak cukup untuk aplikasi Anda, Anda perlu menggunakan NAT Gateway.
  • Azure Firewall tidak SNAT dengan aturan Jaringan saat alamat IP tujuan berada dalam rentang alamat IP privat per IANA RFC 1918 atau ruang alamat bersama per IANA RFC 6598.

Menonaktifkan OutboundNAT secara manual untuk Windows

  • Nonaktifkan OutboundNAT untuk Windows secara manual saat membuat kumpulan agen Windows baru menggunakan perintah az aks nodepool add dengan bendera --disable-windows-outbound-nat.

    Catatan

    Anda dapat menggunakan kluster AKS yang ada, tetapi Anda mungkin perlu memperbarui jenis lalu lintas keluar dan menambahkan kumpulan node untuk mengaktifkan --disable-windows-outbound-nat.

    export WIN_NODEPOOL_NAME="win$(head -c 1 /dev/urandom | xxd -p)"
    az aks nodepool add \
        --resource-group $MY_RG \
        --cluster-name $MY_AKS \
        --name $WIN_NODEPOOL_NAME \
        --node-count 3 \
        --os-type Windows \
        --disable-windows-outbound-nat
    

    Contoh output:

    {
      "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myNatClusterxxx/agentPools/mynpxxx",
      "name": "mynpxxx",
      "osType": "Windows",
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroupxxx",
      "type": "Microsoft.ContainerService/managedClusters/agentPools"
    }
    

Untuk informasi selengkapnya tentang Azure NAT Gateway dan AKS Otomatis, lihat artikel berikut ini: