Pelatihan
Sertifikasi
Bersertifikat Microsoft: Insinyur Jaringan Muda Azure - Certifications
Menunjukkan desain, implementasi, dan pemeliharaan infrastruktur jaringan Azure, lalu lintas penyeimbang beban, perutean jaringan, dan banyak lagi.
Browser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
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. Jika saat ini Anda menggunakan Load Balancer Dasar, pastikan untuk meningkatkan ke Load Balancer Standar sebelum tanggal penghentian. Untuk panduan tentang peningkatan, kunjungi Meningkatkan dari Load Balancer Dasar - Panduan.
az --version
untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.Buat manifes layanan bernama internal-lb.yaml
dengan jenis LoadBalancer
layanan dan azure-load-balancer-internal
anotasi.
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 kubectl apply
perintah . 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 load balancer internal ditampilkan di EXTERNAL-IP
kolom, 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
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 load balancer, Anda memiliki dua opsi: mengatur anotasi layanan atau menambahkan properti LoadBalancerIP ke manifes YAML load balancer.
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 dan service.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.
Buat manifes layanan bernama internal-lb-pls.yaml
dengan jenis LoadBalancer
layanan dan azure-load-balancer-internal
anotasi dan azure-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 load balancer internal menggunakan kubectl apply
perintah . 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 EXTERNAL-IP
kolom, 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
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
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 | |
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 tempat 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 default 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 IPv4 statis yang dipisahkan spasi yang akan 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 fqdn yang dipisahkan spasi yang 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 spasi tempat 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 ke PLS untuk disetujui secara otomatis. Ini hanya berfungsi ketika visibilitas diatur ke "*". | Opsional | [] |
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 setidaknya harus memiliki peran Kontributor Jaringan 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.
azure-load-balancer-internal-subnet
Tambahkan anotasi ke layanan Anda untuk menentukan subnet untuk load balancer Anda. Subnet yang ditentukan harus berada dalam jaringan maya yang sama dengan kluster AKS Anda. Saat disebarkan, alamat load balancer EXTERNAL-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
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.
Pelajari lebih lanjut tentang layanan Kubernetes di dokumen layanan Kubernetes.
Umpan balik Azure Kubernetes Service
Azure Kubernetes Service adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik:
Pelatihan
Sertifikasi
Bersertifikat Microsoft: Insinyur Jaringan Muda Azure - Certifications
Menunjukkan desain, implementasi, dan pemeliharaan infrastruktur jaringan Azure, lalu lintas penyeimbang beban, perutean jaringan, dan banyak lagi.