Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Menjalankan kube-proxy dalam Mode IPVS

Mode fokus
Menjalankan kube-proxy dalam Mode IPVS - Amazon EKS

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

EKS dalam mode IP Virtual Server (IPVS) memecahkan masalah latensi jaringan yang sering terlihat saat menjalankan cluster besar dengan lebih dari 1.000 layanan dengan kube-proxy berjalan dalam mode iptables lama. Masalah kinerja ini adalah hasil dari pemrosesan berurutan aturan penyaringan paket iptables untuk setiap paket. Masalah latensi ini telah diatasi di nftables, penerus iptables. Namun, pada saat penulisan ini, kube-proxy masih dalam pengembangan untuk memanfaatkan nftables. Untuk mengatasi masalah ini, Anda dapat mengonfigurasi cluster Anda agar berjalan kube-proxy dalam mode IPVS.

Gambaran Umum

IPVS, yang telah menjadi GA sejak Kubernetes versi 1.11, menggunakan tabel hash daripada pencarian linier untuk memproses paket, memberikan efisiensi untuk cluster dengan ribuan node dan layanan. IPVS dirancang untuk load balancing, menjadikannya solusi yang cocok untuk masalah kinerja jaringan Kubernetes.

IPVS menawarkan beberapa opsi untuk mendistribusikan lalu lintas ke pod backend. Informasi terperinci untuk setiap opsi dapat ditemukan di dokumentasi resmi Kubernetes, tetapi daftar sederhana ditunjukkan di bawah ini. Round Robin dan Least Connections adalah salah satu pilihan paling populer untuk opsi load balancing IPVS di Kubernetes.

- rr (Round Robin)
- wrr (Weighted Round Robin)
- lc (Least Connections)
- wlc (Weighted Least Connections)
- lblc (Locality Based Least Connections)
- lblcr (Locality Based Least Connections with Replication)
- sh (Source Hashing)
- dh (Destination Hashing)
- sed (Shortest Expected Delay)
- nq (Never Queue)

Implementasi

Hanya beberapa langkah yang diperlukan untuk mengaktifkan IPVS di cluster EKS Anda. Hal pertama yang perlu Anda lakukan adalah memastikan gambar node pekerja EKS Anda memiliki ipvsadm paket administrasi Server Virtual Linux diinstal. Untuk menginstal paket ini pada gambar berbasis Fedora, seperti Amazon Linux 2023, Anda dapat menjalankan perintah berikut pada instance node pekerja.

sudo dnf install -y ipvsadm

Pada gambar berbasis Debian, seperti Ubuntu, perintah instalasi akan terlihat seperti ini.

sudo apt-get install ipvsadm

Selanjutnya, Anda perlu memuat modul kernel untuk opsi konfigurasi IPVS yang tercantum di atas. Kami merekomendasikan menulis modul-modul ini ke file di dalam /etc/modules-load.d/ direktori sehingga mereka bertahan dari reboot.

sudo sh -c 'cat << EOF > /etc/modules-load.d/ipvs.conf ip_vs ip_vs_rr ip_vs_wrr ip_vs_lc ip_vs_wlc ip_vs_lblc ip_vs_lblcr ip_vs_sh ip_vs_dh ip_vs_sed ip_vs_nq nf_conntrack EOF'

Anda dapat menjalankan perintah berikut untuk memuat modul-modul ini pada mesin yang sudah berjalan.

sudo modprobe ip_vs sudo modprobe ip_vs_rr sudo modprobe ip_vs_wrr sudo modprobe ip_vs_lc sudo modprobe ip_vs_wlc sudo modprobe ip_vs_lblc sudo modprobe ip_vs_lblcr sudo modprobe ip_vs_sh sudo modprobe ip_vs_dh sudo modprobe ip_vs_sed sudo modprobe ip_vs_nq sudo modprobe nf_conntrack
catatan

Sangat disarankan untuk menjalankan langkah-langkah node pekerja ini sebagai bagian dari proses bootstrap node pekerja Anda melalui skrip data pengguna atau dalam skrip build apa pun yang dijalankan untuk membangun node pekerja khusus AMI.

Selanjutnya, Anda akan mengonfigurasi cluster Anda kube-proxy DaemonSet untuk berjalan dalam mode IPVS. Ini dilakukan dengan mengatur kube-proxy mode ke ipvs dan ipvs scheduler ke salah satu opsi penyeimbangan beban yang tercantum di atas, misalnya: rr untuk Round Robin.

Awas

Ini adalah perubahan yang mengganggu dan harus dilakukan di luar jam kerja. Sebaiknya lakukan perubahan ini selama pembuatan klaster EKS awal untuk meminimalkan dampak.

Anda dapat mengeluarkan perintah AWS CLI untuk mengaktifkan IPVS dengan memperbarui Eks Add-on. kube-proxy

aws eks update-addon --cluster-name $CLUSTER_NAME --addon-name kube-proxy \ --configuration-values '{"ipvs": {"scheduler": "rr"}, "mode": "ipvs"}' \ --resolve-conflicts OVERWRITE

Atau Anda dapat melakukan ini dengan memodifikasi kube-proxy-config ConfigMap di cluster Anda.

kubectl -n kube-system edit cm kube-proxy-config

Temukan scheduler pengaturan di bawah ipvs dan atur nilainya ke salah satu opsi penyeimbangan beban ipvs yang tercantum di atas, misalnya: rr untuk Round Robin. Temukan mode pengaturan, yang defaultnyaiptables, dan ubah nilainya menjadi. ipvs Hasil dari salah satu opsi harus terlihat mirip dengan konfigurasi di bawah ini.

iptables: masqueradeAll: false masqueradeBit: 14 minSyncPeriod: 0s syncPeriod: 30s ipvs: excludeCIDRs: null minSyncPeriod: 0s scheduler: "rr" syncPeriod: 30s kind: KubeProxyConfiguration metricsBindAddress: 0.0.0.0:10249 mode: "ipvs" nodePortAddresses: null oomScoreAdj: -998 portRange: "" udpIdleTimeout: 250ms

Jika node pekerja Anda bergabung ke klaster Anda sebelum melakukan perubahan ini, Anda harus me-restart DaemonSet kube-proxy.

kubectl -n kube-system rollout restart ds kube-proxy

Validasi

Anda dapat memvalidasi bahwa node cluster dan worker Anda berjalan dalam mode IPVS dengan mengeluarkan perintah berikut pada salah satu node pekerja Anda.

sudo ipvsadm -L

Minimal, Anda akan melihat hasil yang mirip dengan yang di bawah ini, menampilkan entri untuk layanan Kubernetes API Server di dan layanan CoreDNS 10.100.0.1 di. 10.100.0.10

IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP ip-10-100-0-1.us-east-1. rr -> ip-192-168-113-81.us-eas Masq 1 0 0 -> ip-192-168-162-166.us-ea Masq 1 1 0 TCP ip-10-100-0-10.us-east-1 rr -> ip-192-168-104-215.us-ea Masq 1 0 0 -> ip-192-168-123-227.us-ea Masq 1 0 0 UDP ip-10-100-0-10.us-east-1 rr -> ip-192-168-104-215.us-ea Masq 1 0 0 -> ip-192-168-123-227.us-ea Masq 1 0 0
catatan

Output contoh ini berasal dari kluster EKS dengan rentang alamat IP layanan10.100.0.0/16.

Di halaman ini

PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.