Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Anda dapat membuat dan menggunakan load balancer internal untuk membatasi akses ke aplikasi Anda di Azure Kubernetes Service (AKS). Load balancer internal tidak memiliki IP publik dan membuat layanan Kubernetes hanya dapat diakses oleh aplikasi yang dapat menjangkau IP privat. Aplikasi ini dapat berada dalam VNET yang sama atau di VNET lain melalui peering VNET. Artikel ini memperlihatkan kepada Anda cara membuat dan menggunakan load balancer internal dengan AKS.
Penting
Pada 30 September 2025, Load Balancer Dasar akan dihentikan. Untuk informasi selengkapnya, lihat pengumuman resmi. Saat ini tidak ada opsi terintegrasi untuk menggunakan operasi Azure AKS API untuk memigrasikan SKU Load Balancer. Keputusan SKU Load Balancer harus dilakukan pada waktu pembuatan kluster. Oleh karena itu, jika Saat ini Anda menggunakan Load Balancer Dasar, lakukan langkah-langkah yang diperlukan untuk memigrasikan beban kerja Anda ke kluster baru yang dibuat dengan SKU Standard Load Balancer default baru sebelum tanggal penghentian.
Sebelum Anda mulai
- Artikel ini mengasumsikan bahwa Anda memiliki kluster AKS yang ada. Jika Anda memerlukan kluster AKS, Anda dapat membuatnya menggunakan Azure CLI, Azure PowerShell, atau portal Azure.
- Anda memerlukan Azure CLI versi 2.0.59 atau yang lebih baru. Jalankan
az --version
untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI. - Jika Anda ingin menggunakan subnet atau grup sumber daya yang ada, identitas kluster AKS memerlukan izin untuk mengelola sumber daya jaringan. Untuk informasi, lihat Mengonfigurasi jaringan Azure CNI di AKS. Jika Anda mengonfigurasi load balancer untuk menggunakan alamat IP di subnet yang berbeda, pastikan identitas kluster AKS juga memiliki akses baca ke subnet tersebut.
- Untuk informasi selengkapnya tentang izin, lihat Mendelegasikan akses AKS ke sumber daya Azure lainnya.
Membuat penyeimbang beban internal
Buat manifes layanan bernama
internal-lb.yaml
dengan tipe layananLoadBalancer
dan anotasiazure-load-balancer-internal
.apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" spec: type: LoadBalancer ports: - port: 80 selector: app: internal-app
Sebarkan load balancer internal menggunakan perintah
kubectl apply
. Perintah ini membuat load balancer Azure di grup sumber daya simpul yang terhubung ke jaringan virtual yang sama dengan kluster AKS Anda.kubectl apply -f internal-lb.yaml
Lihat detail layanan menggunakan
kubectl get service
perintah .kubectl get service internal-app
Alamat IP dari load balancer internal ditampilkan pada kolom
EXTERNAL-IP
, seperti yang ditunjukkan dalam contoh output berikut. Dalam konteks ini, Eksternal mengacu pada antarmuka eksternal load balancer. Ini tidak berarti bahwa ia menerima alamat IP publik dan eksternal. Alamat IP ini ditetapkan secara dinamis dari subnet yang sama dengan kluster AKS.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE internal-app LoadBalancer 10.0.248.59 10.240.0.7 80:30555/TCP 2m
Tentukan alamat IP
Saat Anda menentukan alamat IP untuk load balancer, alamat IP yang ditentukan harus berada di jaringan virtual yang sama dengan kluster AKS, tetapi belum dapat ditetapkan ke sumber daya lain di jaringan virtual. Misalnya, Anda tidak boleh menggunakan alamat IP dalam rentang yang ditunjuk untuk subnet Kubernetes dalam kluster AKS. Menggunakan alamat IP yang sudah ditetapkan ke sumber daya lain di jaringan virtual yang sama dapat menyebabkan masalah dengan load balancer.
Anda dapat menggunakan az network vnet subnet list
perintah Azure CLI atau Get-AzVirtualNetworkSubnetConfig
cmdlet PowerShell untuk mendapatkan subnet di jaringan virtual Anda.
Untuk informasi selengkapnya tentang subnet, lihat Menambahkan kumpulan simpul dengan subnet unik.
Jika Anda ingin menggunakan alamat IP tertentu dengan penyeimbang beban, Anda memiliki dua opsi: mengatur anotasi layanan atau menambahkan properti LoadBalancerIP ke manifes YAML penyeimbang beban.
Penting
Menambahkan properti LoadBalancerIP ke manifes YAML load balancer tidak digunakan lagi setelah Kubernetes upstream. Meskipun penggunaan saat ini tetap sama dan layanan yang ada diharapkan berfungsi tanpa modifikasi, kami sangat menyarankan pengaturan anotasi layanan sebagai gantinya. Untuk informasi selengkapnya tentang anotasi layanan, lihat Anotasi yang didukung Azure LoadBalancer.
Atur anotasi layanan menggunakan
service.beta.kubernetes.io/azure-load-balancer-ipv4
untuk alamat IPv4 danservice.beta.kubernetes.io/azure-load-balancer-ipv6
untuk alamat IPv6.apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balancer-ipv4: 10.240.0.25 service.beta.kubernetes.io/azure-load-balancer-internal: "true" spec: type: LoadBalancer ports: - port: 80 selector: app: internal-app
Lihat detail layanan menggunakan
kubectl get service
perintah .kubectl get service internal-app
Alamat IP di
EXTERNAL-IP
kolom harus mencerminkan alamat IP yang Anda tentukan, seperti yang ditunjukkan dalam contoh output berikut:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE internal-app LoadBalancer 10.0.184.168 10.240.0.25 80:30225/TCP 4m
Untuk informasi selengkapnya tentang mengonfigurasi load balancer Anda di subnet yang berbeda, lihat Menentukan subnet yang berbeda.
Menghubungkan layanan Azure Private Link dengan penyeimbang beban internal
Sebelum Anda mulai
- Anda memerlukan Kubernetes versi 1.22.x atau yang lebih baru.
- Anda memerlukan grup sumber daya yang ada dengan Jaringan Virtual (VNet) dan subnet. Grup sumber daya ini adalah tempat Anda membuat titik akhir privat. Jika Anda tidak memiliki sumber daya ini, lihat Membuat jaringan virtual dan subnet.
Membuat sambungan layanan Private Link
Buat manifes layanan bernama
internal-lb-pls.yaml
dengan jenis layananLoadBalancer
serta anotasiazure-load-balancer-internal
danazure-pls-create
. Untuk opsi lainnya, lihat dokumen desain Integrasi Layanan Azure Private Link.apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" service.beta.kubernetes.io/azure-pls-create: "true" spec: type: LoadBalancer ports: - port: 80 selector: app: internal-app
Sebarkan internal load balancer menggunakan perintah
kubectl apply
. Perintah ini membuat load balancer Azure di grup sumber daya simpul yang terhubung ke jaringan virtual yang sama dengan kluster AKS Anda. Ini juga membuat objek Private Link Service yang terhubung ke konfigurasi IP frontend dari load balancer yang terkait dengan layanan Kubernetes.kubectl apply -f internal-lb-pls.yaml
Lihat detail layanan menggunakan
kubectl get service
perintah .kubectl get service internal-app
Alamat IP load balancer internal ditampilkan di kolom
EXTERNAL-IP
, seperti yang ditunjukkan dalam contoh output berikut. Dalam konteks ini, Eksternal mengacu pada antarmuka eksternal load balancer. Ini tidak berarti bahwa ia menerima alamat IP publik dan eksternal.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE internal-app LoadBalancer 10.125.17.53 10.125.0.66 80:30430/TCP 64m
Lihat detail objek Layanan Private Link menggunakan
az network private-link-service list
perintah .# Create a variable for the node resource group AKS_MC_RG=$(az aks show -g myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv) # View the details of the Private Link Service object az network private-link-service list -g $AKS_MC_RG --query "[].{Name:name,Alias:alias}" -o table
Output Anda akan terlihat mirip dengan contoh output berikut:
Name Alias -------- ------------------------------------------------------------------------- pls-xyz pls-xyz.abc123-defg-4hij-56kl-789mnop.eastus2.azure.privatelinkservice
Membuat Titik Akhir Privat pada Layanan Private Link
Titik Akhir Privat memungkinkan Anda untuk terhubung secara privat ke objek layanan Kubernetes melalui Layanan Private Link yang Anda buat.
Buat titik akhir privat menggunakan
az network private-endpoint create
perintah .# Create a variable for the private link service AKS_PLS_ID=$(az network private-link-service list -g $AKS_MC_RG --query "[].id" -o tsv) # Create the private endpoint $ az network private-endpoint create \ -g myOtherResourceGroup \ --name myAKSServicePE \ --vnet-name myOtherVNET \ --subnet pe-subnet \ --private-connection-resource-id $AKS_PLS_ID \ --connection-name connectToMyK8sService
Kustomisasi PLS melalui Anotasi
Anda dapat menggunakan anotasi berikut untuk menyesuaikan sumber daya PLS:
Anotasi | Nilai | Deskripsi | Wajib diisi | Default |
---|---|---|---|---|
service.beta.kubernetes.io/azure-pls-create |
"true" |
Boolean menunjukkan apakah PLS perlu dibuat. | Wajib diisi | |
service.beta.kubernetes.io/azure-pls-name |
<PLS name> |
String yang menentukan nama sumber daya PLS yang akan dibuat. | Opsional | "pls-<LB frontend config name>" |
service.beta.kubernetes.io/azure-pls-resource-group |
Resource Group name |
String yang menentukan nama Grup Sumber Daya tempat sumber daya PLS akan dibuat | Opsional | MC_ resource |
service.beta.kubernetes.io/azure-pls-ip-configuration-subnet |
<Subnet name> |
String yang menunjukkan subnet di mana PLS akan disebarkan. Subnet ini harus ada di VNET yang sama dengan kumpulan backend. IP NAT PLS dialokasikan dalam subnet ini. | Opsional | Jika service.beta.kubernetes.io/azure-load-balancer-internal-subnet , subnet ILB ini digunakan. Jika tidak, subnet bawaan dari file konfigurasi digunakan. |
service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address-count |
[1-8] |
Jumlah total IP NAT privat yang akan dialokasikan. | Opsional | 1 |
service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address |
"10.0.0.7 ... 10.0.0.10" |
Daftar IP statis IPv4yang dipisahkan spasi untuk dialokasikan. (IPv6 tidak didukung saat ini.) Jumlah total IP tidak boleh lebih besar dari jumlah ip yang ditentukan dalam service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address-count . Jika ada lebih sedikit IP yang ditentukan, sisanya dialokasikan secara dinamis. IP pertama dalam daftar diatur sebagai Primary . |
Opsional | Semua IP dialokasikan secara dinamis. |
service.beta.kubernetes.io/azure-pls-fqdns |
"fqdn1 fqdn2" |
Daftar fqdns yang dipisahkan dengan spasi dan terkait dengan PLS. | Opsional | [] |
service.beta.kubernetes.io/azure-pls-proxy-protocol |
"true" atau "false" |
Boolean menunjukkan apakah protokol PROXY TCP harus diaktifkan pada PLS untuk meneruskan informasi koneksi, termasuk ID tautan dan alamat IP sumber. Perhatikan bahwa layanan backend HARUS mendukung protokol PROXY atau koneksi akan gagal. | Opsional | false |
service.beta.kubernetes.io/azure-pls-visibility |
"sub1 sub2 sub3 … subN" atau "*" |
Daftar ID langganan Azure yang dipisahkan dengan spasi di mana layanan tautan privat terlihat. Gunakan "*" untuk mengekspos PLS ke semua sub (Paling tidak ketat). |
Opsional | Daftar [] kosong yang hanya menunjukkan kontrol akses berbasis peran: Layanan tautan privat ini hanya akan tersedia untuk individu dengan izin kontrol akses berbasis peran dalam direktori Anda. (Paling ketat) |
service.beta.kubernetes.io/azure-pls-auto-approval |
"sub1 sub2 sub3 … subN" |
Daftar id langganan Azure yang dipisahkan spasi. Ini memungkinkan permintaan koneksi PE dari langganan yang tercantum di PLS untuk disetujui secara otomatis. Ini hanya berfungsi ketika visibilitas diatur ke "*". | Opsional | [] |
Gunakan jaringan privat
Saat membuat kluster AKS, Anda dapat menentukan setelan jaringan tingkat lanjut. Pengaturan ini memungkinkan Anda untuk menyebarkan kluster ke jaringan virtual Azure dan subnet yang ada. Misalnya, Anda dapat menyebarkan kluster AKS ke jaringan privat yang terhubung ke lingkungan lokal Anda dan menjalankan layanan yang hanya dapat diakses secara internal.
Untuk informasi selengkapnya, lihat mengonfigurasi subnet jaringan virtual Anda sendiri dengan Kubenet atau dengan Azure CNI.
Anda tidak perlu membuat perubahan apa pun pada langkah-langkah sebelumnya untuk menyebarkan load balancer internal yang menggunakan jaringan privat dalam kluster AKS. Load balancer dibuat dalam grup sumber daya yang sama dengan kluster AKS Anda, tetapi sebaliknya terhubung ke jaringan virtual dan subnet privat Anda, seperti yang ditunjukkan dalam contoh berikut:
$ kubectl get service internal-app
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
internal-app LoadBalancer 10.1.15.188 10.0.0.35 80:31669/TCP 1m
Catatan
Identitas kluster yang digunakan oleh kluster AKS harus memiliki peran Kontributor Jaringan setidaknya pada sumber daya jaringan virtual. Anda dapat melihat identitas kluster menggunakan az aks show
perintah , seperti az aks show --resource-group <resource-group-name> --name <cluster-name> --query "identity"
. Anda dapat menetapkan peran Kontributor Jaringan menggunakan az role assignment create
perintah , seperti az role assignment create --assignee <identity-resource-id> --scope <virtual-network-resource-id> --role "Network Contributor"
.
Jika Anda ingin menentukan peran kustom sebagai gantinya, Anda memerlukan izin berikut:
Microsoft.Network/virtualNetworks/subnets/join/action
Microsoft.Network/virtualNetworks/subnets/read
Untuk informasi selengkapnya, lihat Menambahkan, mengubah, atau menghapus subnet jaringan virtual.
Tentukan subnet yang berbeda
Tambahkan anotasi
azure-load-balancer-internal-subnet
ke layanan Anda untuk menentukan subnet bagi load balancer Anda. Subnet yang ditentukan harus berada dalam jaringan maya yang sama dengan kluster AKS Anda. Saat disebarkan, alamat load balancerEXTERNAL-IP
adalah bagian dari subnet yang ditentukan.apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" service.beta.kubernetes.io/azure-load-balancer-internal-subnet: "apps-subnet" spec: type: LoadBalancer ports: - port: 80 selector: app: internal-app
Menghapus penyeimbang beban
Load balancer dihapus ketika semua layanannya dihapus.
Seperti halnya sumber daya Kubernetes apa pun, Anda dapat langsung menghapus layanan, seperti kubectl delete service internal-app
, yang juga menghapus load balancer Azure yang mendasar.
Langkah berikutnya
Pelajari lebih lanjut tentang layanan Kubernetes di dokumen layanan Kubernetes.
Azure Kubernetes Service