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

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 memungkinkan hingga 64.512 arus lalu lintas UDP dan TCP keluar per alamat IP dengan maksimum 16 alamat IP.

Artikel ini menunjukkan cara membuat kluster Azure Kubernetes Service (AKS) dengan gateway NAT terkelola dan gateway NAT yang ditetapkan pengguna untuk lalu lintas keluar. Ini juga menunjukkan kepada Anda cara menonaktifkan OutboundNAT di Windows.

Sebelum Anda mulai

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

Membuat kluster AKS dengan gateway NAT terkelola

  • Buat kluster AKS dengan gateway NAT terkelola baru menggunakan az aks create perintah dengan --outbound-type managedNATGatewayparameter , , --nat-gateway-managed-outbound-ip-countdan --nat-gateway-idle-timeout . Jika Anda ingin gateway NAT beroperasi dari zona ketersediaan tertentu, tentukan zona menggunakan --zones.

  • Jika tidak ada zona yang ditentukan saat membuat gateway NAT terkelola, gateway NAT disebarkan ke "tanpa zona" secara default. Saat gateway NAT ditempatkan di tanpa zona, Azure menempatkan sumber daya di zona untuk Anda. Untuk informasi selengkapnya tentang model penyebaran non-zonal, lihat gateway NAT non-zonal.

  • Sumber daya gateway NAT terkelola tidak dapat digunakan di beberapa zona ketersediaan.

      az aks create \
          --resource-group myResourceGroup \
          --name myNatCluster \
          --node-count 3 \
          --outbound-type managedNATGateway \
          --nat-gateway-managed-outbound-ip-count 2 \
          --nat-gateway-idle-timeout 4
    
  • Perbarui alamat IP keluar atau batas waktu diam menggunakan az aks update perintah dengan --nat-gateway-managed-outbound-ip-count parameter atau --nat-gateway-idle-timeout .

    az aks update \ 
        --resource-group myResourceGroup \
        --name myNatCluster\
        --nat-gateway-managed-outbound-ip-count 5
    

Membuat kluster AKS dengan gateway NAT yang ditetapkan pengguna

Konfigurasi ini memerlukan jaringan bring-your-own (melalui Kubenet atau Azure CNI) dan gateway NAT telah dikonfigurasi sebelumnya pada subnet. Perintah berikut membuat sumber daya yang diperlukan untuk skenario ini.

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

    az group create --name myResourceGroup \
        --location southcentralus
    
  2. Buat identitas terkelola untuk izin jaringan dan simpan ID untuk $IDENTITY_ID digunakan nanti.

    IDENTITY_ID=$(az identity create \
        --resource-group myResourceGroup \
        --name myNatClusterId \
        --location southcentralus \
        --query id \
        --output tsv)
    
  3. Buat IP publik untuk gateway NAT menggunakan az network public-ip create perintah .

    az network public-ip create \
        --resource-group myResourceGroup \
        --name myNatGatewayPip \
        --location southcentralus \
        --sku standard
    
  4. Buat gateway NAT menggunakan az network nat gateway create perintah .

    az network nat gateway create \
        --resource-group myResourceGroup \
        --name myNatGateway \
        --location southcentralus \
        --public-ip-addresses myNatGatewayPip
    

    Penting

    Satu sumber daya gateway NAT tidak dapat digunakan di beberapa zona ketersediaan. Untuk memastikan ketahanan zona, disarankan untuk menyebarkan sumber daya gateway NAT ke setiap zona ketersediaan dan menetapkan ke subnet yang berisi kluster AKS di setiap zona. Untuk informasi selengkapnya tentang model penyebaran ini, lihat gateway NAT untuk setiap zona. Jika tidak ada zona yang dikonfigurasi untuk gateway NAT, penempatan zona default adalah "tanpa zona", di mana Azure menempatkan gateway NAT ke zona untuk Anda.

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

    az network vnet create \
        --resource-group myResourceGroup \
        --name myVnet \
        --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.

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

    az aks create \
        --resource-group myResourceGroup \
        --name myNatCluster \
        --location southcentralus \
        --network-plugin azure \
        --vnet-subnet-id $SUBNET_ID \
        --outbound-type userAssignedNATGateway \
        --enable-managed-identity \
        --assign-identity $IDENTITY_ID
    

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

  • Kluster AKS yang ada dengan v1.26 atau lebih tinggi. Jika menggunakan Kubernetes versi 1.25 atau yang lebih lama, Anda perlu memperbarui konfigurasi penyebaran.

Batasan

  • Anda tidak dapat mengatur jenis keluar kluster ke LoadBalancer. Anda dapat mengaturnya ke Nat Gateway atau UDR:
    • NAT Gateway: NAT Gateway dapat menangani koneksi NAT secara otomatis dan lebih kuat daripada Load Balancer Standar. Anda mungkin dikenakan biaya tambahan dengan opsi ini.
    • UDR (UserDefinedRouting): Anda harus mengingat batasan port saat mengonfigurasi aturan perutean.
    • Jika Anda perlu beralih dari load balancer ke NAT Gateway, Anda dapat menambahkan gateway NAT ke VNet atau menjalankan az aks upgrade untuk memperbarui jenis keluar.

Catatan

UserDefinedRouting memiliki batasan berikut:

  • SNAT by Load Balancer (harus menggunakan OutboundNAT default) memiliki "64 port pada IP host".
  • SNAT oleh Azure Firewall (nonaktifkan OutboundNAT) memiliki 2496 port per IP publik.
  • SNAT by NAT Gateway (disable OutboundNAT) memiliki 64512 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 untuk Windows secara manual

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

    Catatan

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

    az aks nodepool add \
        --resource-group myResourceGroup
        --cluster-name myNatCluster
        --name mynodepool
        --node-count 3
        --os-type Windows
        --disable-windows-outbound-nat
    

Langkah berikutnya

Untuk informasi selengkapnya tentang Azure NAT Gateway, lihat Azure NAT Gateway.