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.
- 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.
Penting
Dalam kluster non-privat, lalu lintas kluster server API dirutekan dan diproses melalui jenis 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.
Buat kluster AKS dengan gateway NAT terkelola baru menggunakan
az aks create
perintah dengan--outbound-type managedNATGateway
parameter , ,--nat-gateway-managed-outbound-ip-count
dan--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 \ --generate-ssh-keys
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
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.
Buat grup sumber daya menggunakan
az group create
perintah .az group create --name myResourceGroup \ --location southcentralus
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)
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
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.
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
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)
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 \ --assign-identity $IDENTITY_ID \ --generate-ssh-keys
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.
- 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.
- 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.
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 mynp \ --node-count 3 \ --os-type Windows \ --disable-windows-outbound-nat
Untuk informasi selengkapnya tentang Azure NAT Gateway, lihat Azure NAT Gateway.
Umpan balik Azure Kubernetes Service
Azure Kubernetes Service adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: