全部产品
Search
文档中心

Container Service for Kubernetes:Ikhtisar Penjadwalan

更新时间:Jul 06, 2025

Dalam kluster Kubernetes, komponen penjadwalan bernama kube-scheduler menjadwalkan pod ke node berdasarkan alokasi sumber daya untuk memastikan ketersediaan tinggi aplikasi dan meningkatkan pemanfaatan sumber daya kluster. Container Service for Kubernetes (ACK) menyediakan berbagai kebijakan penjadwalan fleksibel untuk berbagai beban kerja, termasuk penjadwalan pekerjaan, penjadwalan sadar topologi, penjadwalan sadar QoS (quality of service), dan penjadwalan ulang.

Sebelum Anda mulai

  • Topik ini menjelaskan solusi penjadwalan kluster untuk insinyur O&M kluster (termasuk administrator sumber daya kluster) dan pengembang aplikasi. Anda dapat memilih kebijakan penjadwalan berdasarkan skenario bisnis dan peran bisnis Anda.

    • Insinyur O&M fokus pada biaya kluster dan harus memaksimalkan pemanfaatan sumber daya kluster untuk menghindari pemborosan. Mereka juga perlu memastikan ketersediaan tinggi kluster, load balancing di antara node, serta menghindari titik kegagalan tunggal (SPOF).

    • Pengembang aplikasi ingin menerapkan dan mengelola aplikasi secara sederhana. Aplikasi dapat memperoleh sumber daya yang diperlukan, seperti CPU, GPU, dan memori, sesuai dengan persyaratan performanya.

  • Untuk lebih memahami kebijakan penjadwalan yang disediakan oleh ACK, kami menyarankan Anda mempelajari istilah terkait penjadwalan. Untuk informasi lebih lanjut, lihat Kubernetes Scheduler, Label Node, Node-pressure Eviction, dan Batasan Penyebaran Topologi Pod.

    Kebijakan penjadwalan default dari ACK scheduler sama dengan kebijakan penjadwalan default dari Kubernetes scheduler open source. Kebijakan penjadwalan default mencakup plugin Filter dan Score.

Kebijakan penjadwalan asli Kubernetes

Kebijakan penjadwalan asli Kubernetes dapat diklasifikasikan menjadi kebijakan penjadwalan node dan kebijakan penjadwalan antar-pod.

  • Kebijakan penjadwalan node: Fokus pada karakteristik dan kondisi sumber daya node untuk memastikan bahwa pod dijadwalkan ke node yang sesuai dengan kebutuhannya.

  • Kebijakan penjadwalan antar-pod: Fokus pada mengontrol distribusi pod untuk mengoptimalkan keseluruhan penyebaran pod dan memastikan ketersediaan tinggi aplikasi.

Kebijakan

Deskripsi

Skenario

nodeSelector

Anda dapat memberi label pada node dengan menambahkan pasangan key-value dan menggunakan nodeSelector untuk menjadwalkan pod ke node dengan label tertentu.

Contohnya, Anda dapat menggunakan nodeSelector untuk menjadwalkan pod ke node tertentu atau menjadwalkan pod ke pool node tertentu.

Ini adalah fitur pemilihan node dasar yang tidak mendukung fitur penjadwalan kompleks, seperti aturan anti-afinitas.

nodeAffinity

Kebijakan penjadwalan ini lebih fleksibel dan rinci dibandingkan dengan kebijakan penjadwalan yang menggunakan NodeSelector. Contohnya, aturan afinitas requiredDuringSchedulingIgnoredDuringExecution dan aturan anti-afinitas preferredDuringSchedulingIgnoredDuringExecution.

Jadwalkan pod ke node dengan karakteristik tertentu, seperti wilayah, jenis perangkat, dan konfigurasi perangkat keras. Aturan anti-afinitas digunakan untuk menyebarkan pod di seluruh node.

Taints dan tolerations

Taint terdiri dari key, value, dan effect. Efek umum meliputi NoSchedule, PreferNoSchedule, dan NoExecute. Setelah taint ditambahkan ke node, hanya pod yang dikonfigurasikan dengan toleration untuk mentoleransi taint yang akan dijadwalkan ke node tersebut.

  • Taint dan toleration dapat digunakan untuk memesan sumber daya node khusus untuk aplikasi tertentu, seperti memesan node yang dipercepat GPU untuk beban kerja AI atau Pembelajaran Mesin (ML).

  • ACK memungkinkan Anda menambahkan taint atau label ke pool node untuk menjadwalkan pod aplikasi tertentu ke pool node yang ditentukan. Untuk informasi lebih lanjut, lihat Buat dan kelola pool node dan Ubah pool node.
  • Mengeluarkan pod berdasarkan taint dan toleration. Contohnya, tambahkan taint ke node yang tidak sehat dan atur efeknya ke NoSchedule.

Afinitas dan anti-afinitas antar-pod

Label pod digunakan untuk menentukan apakah pod akan dijadwalkan ke node tertentu. Aturan afinitas requiredDuringSchedulingIgnoredDuringExecution dan aturan anti-afinitas preferredDuringSchedulingIgnoredDuringExecution didukung.

  • Jadwalkan pod yang bekerja secara kolaboratif pada node yang sama atau node tetangga untuk mengurangi latensi jaringan dan meningkatkan efisiensi komunikasi.

  • Sebarkan pod aplikasi kritis bisnis di berbagai node atau domain kesalahan.

Kebijakan penjadwalan yang disediakan oleh ACK

Jika kebijakan penjadwalan asli Kubernetes tidak dapat memenuhi persyaratan bisnis Anda, seperti penskalaan bertahap dan penskalaan balik berbagai sumber daya instance, penjadwalan berbasis beban berdasarkan penggunaan sumber daya aktual node, Anda dapat merujuk ke kebijakan penjadwalan berikut yang disediakan oleh ACK.

Konfigurasikan penjadwalan sumber daya berbasis prioritas

  • Peran yang Ditujukan: Insinyur O&M kluster.

  • Deskripsi: Jika kluster ACK Anda berisi berbagai jenis sumber daya instance, seperti Instance ECS dan instance kontainer elastis, dengan metode penagihan yang berbeda, seperti langganan, bayar sesuai pemakaian, dan instance preemptible, kami menyarankan Anda mengonfigurasi penjadwalan sumber daya berbasis prioritas. Ini memungkinkan Anda menentukan urutan pemilihan berbagai jenis sumber daya node selama penjadwalan pod dan melakukan aktivitas penskalaan balik dalam urutan terbalik.

Kebijakan

Deskripsi

Skenario

Referensi

Penjadwalan sumber daya berbasis prioritas kustom

Anda dapat menentukan nilai kustom untuk parameter ResourcePolicy selama peluncuran aplikasi atau penskalaan untuk menentukan urutan pemilihan berbagai jenis sumber daya node selama penjadwalan pod. Sebagai contoh, pod dapat diprioritaskan untuk dijadwalkan ke instance ECS berlangganan, lalu ke instance ECS bayar sesuai pemakaian, dan terakhir ke instance kontainer elastis.

Aplikasi dapat diskalakan balik dalam urutan terbalik. Sebagai contoh, kluster memprioritaskan penghapusan pod pada instance kontainer elastis, lalu menghapus pod pada instance ECS bayar sesuai pemakaian, dan terakhir menghapus pod pada instance ECS berlangganan.

  • Tentukan node yang diprioritaskan atau harus dihindari untuk menyeimbangkan penggunaan sumber daya node dalam kluster.

  • Jika aplikasi memerlukan performa tinggi, pod yang menjalankan aplikasi diprioritaskan untuk dijadwalkan ke node dengan performa tinggi.

  • Jika aplikasi tidak memerlukan performa tinggi, pod yang menjalankan aplikasi diprioritaskan untuk dijadwalkan ke instance preemptible atau node yang memiliki sumber daya komputasi idle tersisa. Ini mengurangi biaya penggunaan sumber daya.

Konfigurasikan penjadwalan sumber daya berbasis prioritas

Penjadwalan pekerjaan

  • Peran yang Ditujukan: Insinyur O&M kluster.

  • Deskripsi: Scheduler dapat memutuskan node mana yang akan menjalankan pod berdasarkan aturan yang telah ditentukan. Namun, scheduler tidak cocok untuk menjadwalkan pod pekerjaan batch. ACK mendukung penjadwalan gang dan penjadwalan kapasitas untuk pekerjaan batch.

Kebijakan

Deskripsi

Skenario

Referensi

Gang Scheduling

Semua pod terkait dijadwalkan atau tidak ada pod yang dijadwalkan, yang mencegah proses abnormal tertentu memblokir seluruh grup proses terkait.

  • Pekerjaan batch: Pekerjaan berisi beberapa tugas yang saling bergantung yang harus diproses pada saat yang bersamaan.

  • Komputasi terdistribusi: Pekerjaan pelatihan pembelajaran mesin atau aplikasi terdistribusi lainnya yang harus dijalankan secara ketat pada saat yang sama.

  • Komputasi berperforma tinggi: Pekerjaan mungkin memerlukan semua sumber daya tersedia pada saat yang sama sebelum pekerjaan dapat dieksekusi.

Bekerja dengan penjadwalan gang

Capacity Scheduling

Cadangkan jumlah sumber daya tertentu untuk namespace atau grup pengguna tertentu, dan tingkatkan pemanfaatan sumber daya secara keseluruhan dengan menerapkan berbagi sumber daya ketika sumber daya kluster hampir mencukupi.

Dalam skenario multi-tenant, tenant yang berbeda memiliki siklus hidup sumber daya yang berbeda dan menggunakan sumber daya dengan cara yang berbeda. Akibatnya, pemanfaatan sumber daya kluster rendah. Berbagi dan pengambilan kembali sumber daya berdasarkan jumlah sumber daya tetap diperlukan untuk meningkatkan pemanfaatan sumber daya.

Bekerja dengan penjadwalan kapasitas

Penjadwalan sadar topologi

  • Peran yang Ditujukan: Insinyur O&M kluster.

  • Deskripsi: Dalam beban kerja pembelajaran mesin dan analitik data besar, pod sering kali memerlukan komunikasi jaringan intensif antar-pod. Secara default, scheduler mendistribusikan pod di seluruh kluster secara seimbang, yang akhirnya memperpanjang waktu penyelesaian pekerjaan. Mekanisme afinitas node atau pod yang ada tidak dapat melakukan upaya penjadwalan multi-domain topologi. Node hanya memiliki label spesifik zona.

Deskripsi

Skenario

Referensi

Scheduler menambahkan label penjadwalan gang ke pekerjaan untuk memastikan bahwa permintaan sumber daya semua pod dipenuhi pada saat yang sama. Anda juga dapat menggunakan penjadwalan sadar topologi untuk memungkinkan scheduler melalui daftar domain topologi sampai menemukan domain topologi yang memenuhi persyaratan semua pod.

Anda dapat mengaitkan pool node dengan set penyebaran untuk menjadwalkan pod ke instance ECS dalam set penyebaran latensi rendah yang sama untuk meningkatkan performa pekerjaan.

Dalam pekerjaan pembelajaran mesin atau analisis data besar, pod perlu berkomunikasi secara sering. Scheduler perlu melalui daftar domain topologi sampai menemukan domain topologi yang memenuhi persyaratan semua pod. Dengan cara ini, jumlah waktu yang diperlukan untuk menyelesaikan pekerjaan dikurangi.

Penjadwalan sadar beban

  • Peran yang Ditujukan: Insinyur O&M kluster dan pengembang aplikasi.

  • Deskripsi: Berdasarkan kebijakan penjadwalan asli, scheduler menjadwalkan pod berdasarkan alokasi sumber daya. Scheduler memeriksa permintaan sumber daya pod dan sumber daya yang dapat dialokasikan pada node untuk menentukan penjadwalan pod. Namun, penggunaan sumber daya node berubah secara dinamis seiring waktu atau berdasarkan lingkungan kluster, lalu lintas, atau permintaan beban kerja. Scheduler asli tidak dapat mendeteksi beban sumber daya aktual pada node.

Deskripsi

Skenario

Referensi

Dengan meninjau statistik historis beban node dan memperkirakan penggunaan sumber daya pod yang baru dijadwalkan, scheduler ACK dapat memantau beban node dan menjadwalkan pod ke node dengan beban lebih rendah untuk menerapkan load balancing. Ini mencegah crash aplikasi atau node yang disebabkan oleh satu node yang kelebihan beban.

Aplikasi yang sensitif terhadap beban atau latensi akses atau memiliki persyaratan pada kelas QoS sumber daya.

Gunakan penjadwalan sadar beban

Kami menyarankan Anda bekerja dengan penjadwalan ulang hotspot sadar beban untuk mencegah distribusi beban tidak seimbang di antara node.

Penjadwalan sadar QoS

  • Peran yang Berlaku: Insinyur O&M kluster dan pengembang aplikasi.

  • Deskripsi: Konfigurasikan kelas QoS untuk pod, termasuk Guaranteed, Burstable, dan BestEffort. Ketika sumber daya node tidak mencukupi, kubelet memutuskan pod mana yang akan dikeluarkan dari node berdasarkan kelas QoS. ACK menyediakan fitur penjadwalan sumber daya sadar SLO (service level objective) untuk meningkatkan performa dan kualitas layanan aplikasi sensitif latensi dan memastikan penggunaan sumber daya untuk pekerjaan prioritas rendah.

Kebijakan

Deskripsi

Skenario

Referensi

CPU Burst

Karena batasan CPU, sistem operasi membatasi penggunaan sumber daya dalam satu siklus, yang dapat menyebabkan kontainer mengalami throttling sumber daya (CPU throttling). CPU Burst memungkinkan kontainer mengumpulkan time slice CPU ketika kontainer sedang idle. Kontainer dapat menggunakan time slice CPU yang terakumulasi untuk melebihi batas CPU ketika permintaan sumber daya meningkat tajam. Ini meningkatkan performa kontainer, mengurangi latensi, dan meningkatkan kualitas layanan.

  • Skenario di mana kontainer mengonsumsi sejumlah besar sumber daya CPU selama fase startup dan loading, tetapi menggunakan jumlah CPU reguler setelah loading selesai.

  • Dalam skenario di mana permintaan sumber daya CPU tiba-tiba meningkat, seperti e-commerce, game online, dan layanan web serta aplikasi lainnya, kontainer harus merespons dengan cepat terhadap lonjakan lalu lintas bisnis.

Aktifkan CPU Burst

Penjadwalan CPU Sadar Topologi

Tetapkan pod beban kerja sensitif CPU ke core CPU pada node. Ini menyelesaikan masalah penurunan performa aplikasi yang disebabkan oleh seringnya pergantian konteks CPU dan akses memori lintas node NUMA.

  • Aplikasi yang tidak beradaptasi dengan skenario cloud-native. Contohnya, jumlah thread ditentukan berdasarkan total core fisik perangkat alih-alih spesifikasi kontainer. Akibatnya, performa aplikasi menurun.

  • Aplikasi yang berjalan pada instance ECS Bare Metal multi-core dengan CPU Intel atau AMD dan mengalami penurunan performa karena akses memori lintas node NUMA.

  • Aplikasi yang sangat sensitif terhadap pergantian konteks CPU dan tidak dapat mentoleransi fluktuasi performa.

Aktifkan penjadwalan CPU sadar topologi

Penjadwalan GPU Sadar Topologi

Ketika beberapa GPU diterapkan dalam kluster dan beberapa pod intensif GPU berjalan pada saat yang sama, pod mungkin bersaing untuk sumber daya GPU dan sering beralih antara GPU atau node NUMA yang berbeda. Ini memengaruhi performa aplikasi. Penjadwalan GPU sadar topologi dapat menjadwalkan beban kerja ke GPU yang berbeda, mengurangi akses memori lintas node NUMA, dan meningkatkan performa aplikasi serta kecepatan respons.

  • Skala komputasi terdistribusi besar yang memerlukan transfer dan pemrosesan data efisien, seperti komputasi berperforma tinggi.

  • Skenario yang memerlukan sejumlah besar sumber daya GPU untuk pembelajaran dan pelatihan serta alokasi pekerjaan pelatihan yang tepat ke GPU yang berbeda, seperti pembelajaran mesin dan pembelajaran mendalam.

  • Skenario yang memerlukan alokasi efisien pekerjaan rendering ke GPU yang berbeda, seperti rendering grafis dan pengembangan game.

Komitmen Sumber Daya Dinamis

Kuantifikasi sumber daya yang dialokasikan ke pod tetapi tidak digunakan dan jadwalkan sumber daya tersebut ke pekerjaan prioritas rendah untuk mencapai komitmen sumber daya berlebih. Kebijakan QoS node tunggal berikut ini harus digunakan bersama-sama agar aplikasi tidak saling memengaruhi:

  • Supresi CPU: Batasi jumlah sumber daya CPU yang dapat digunakan oleh pod dengan prioritas rendah ketika penggunaan sumber daya keseluruhan node berada di bawah ambang batas. Ini memastikan stabilitas kontainer pada node.

  • CPU QoS: Gunakan kelas QoS untuk memastikan bahwa cukup sumber daya CPU dialokasikan ke aplikasi dengan prioritas tinggi.

  • Memori QoS: Gunakan kelas QoS untuk memastikan bahwa cukup sumber daya memori dialokasikan ke aplikasi dengan prioritas tinggi untuk menunda waktu ketika mekanisme pengambilan memori dipicu.

  • Isolasi Sumber Daya Berbasis Cache L3 dan Memory Bandwidth Allocation (MBA): Gunakan kelas QoS untuk memastikan bahwa cache L3 dan MBA diprioritaskan untuk aplikasi prioritas tinggi.

Tingkatkan pemanfaatan sumber daya kluster dengan menggunakan colocation. Skenario colocation tipikal adalah pelatihan model pembelajaran mesin dan inferensi, pemrosesan batch data besar dan analisis data, layanan online, dan layanan cadangan offline.

Ubah Parameter Sumber Daya Pod secara Dinamis

Jika Anda ingin mengubah parameter kontainer untuk pod dalam kluster yang menjalankan Kubernetes 1.27 atau lebih awal, Anda harus mengubah parameter PodSpec dan mengirimkan perubahan. Kemudian, pod akan dihapus dan dibuat ulang. ACK memungkinkan Anda mengubah parameter CPU, parameter memori, dan batas IOPS disk dari pod tanpa perlu me-restart pod.

Fitur ini cocok untuk skenario di mana Anda ingin menyesuaikan sementara sumber daya CPU dan memori.

Ubah Parameter Sumber Daya Pod secara Dinamis

Penjadwalan ulang

  • Peran yang Ditujukan: Insinyur O&M kluster dan pengembang aplikasi.

  • Deskripsi: Status kluster terus berubah. Dalam beberapa skenario, Anda mungkin perlu memigrasikan pod yang sedang berjalan ke node lain, yang berarti Anda harus menjadwalkan ulang pod ke node yang berbeda.

Kebijakan

Deskripsi

Skenario

Referensi

Penjadwalan ulang

Dalam skenario di mana node hotspot ada karena sumber daya kluster pada node yang berbeda tidak digunakan secara merata atau pod gagal dijadwalkan berdasarkan kebijakan yang telah ditentukan karena perubahan atribut node, Anda dapat menjadwalkan pod yang tidak dijadwalkan dengan benar pada suatu node ke node lain untuk memastikan bahwa pod berjalan pada node optimal. Ini memastikan ketersediaan tinggi dan efisiensi beban kerja dalam kluster Anda.

  • Beban kerja dalam kluster tidak didistribusikan secara merata. Beberapa node kelebihan beban. Sebagai contoh, aplikasi yang berbeda dijadwalkan ke node yang sama dalam skenario colocation.

  • Pemanfaatan sumber daya keseluruhan kluster rendah. Anda ingin menghapus beberapa node untuk mengurangi biaya.

  • Kluster berisi sejumlah besar fragmen sumber daya. Akibatnya, sebuah node mungkin tidak memiliki sumber daya yang cukup meskipun jumlah total sumber daya dalam kluster mencukupi.

  • Taint atau label ditambahkan ke atau dihapus dari node.

Bekerja dengan penjadwalan ulang hotspot sadar beban

Anda dapat menggunakan kombinasi penjadwalan sadar beban dan penjadwalan ulang hotspot untuk memantau perubahan beban node dan secara otomatis mengoptimalkan node yang melebihi ambang beban untuk mencegah kelebihan beban node.

Bekerja dengan penjadwalan ulang hotspot sadar beban

Tagihan

Ketika Anda menggunakan fitur penjadwalan ACK, Anda akan dikenakan biaya untuk manajemen kluster dan sumber daya cloud berdasarkan aturan tagihan. Selain itu, Anda akan dikenakan biaya berikut untuk komponen penjadwalan:

  • ACK scheduler default yang disediakan oleh kube-scheduler adalah komponen bidang kontrol yang dapat Anda instal dan gunakan secara gratis.

  • Optimasi penjadwalan sumber daya dan fitur penjadwalan ulang ACK diimplementasikan berdasarkan ack-koordinator. Instalasi dan penggunaan ack-koordinator gratis, tetapi biaya tambahan mungkin timbul dalam skenario tertentu. Untuk informasi lebih lanjut, lihat ack-koordinator (ack-slo-manager).

FAQ

Jika Anda mengalami masalah apa pun saat menggunakan fitur penjadwalan, lihat FAQ Penjadwalan untuk pemecahan masalah.

Referensi

  • Untuk informasi lebih lanjut tentang pengenalan dan catatan rilis untuk kube-scheduler dan ack-koordinator, lihat kube-scheduler dan ack-koordinator (FKA ack-slo-manager).

  • Untuk informasi lebih lanjut tentang cara menyesuaikan perilaku kube-scheduler, lihat Parameter Kustom kube-scheduler.

  • Untuk informasi lebih lanjut tentang praktik terbaik dalam skenario penjadwalan, seperti praktik terbaik dalam arsitektur colocation, lihat Praktik Terbaik untuk Penjadwalan Sumber Daya.

  • Anda dapat mengaktifkan wawasan biaya untuk mendapatkan penggunaan dan alokasi biaya sumber daya dalam kluster ACK. Wawasan biaya juga memberikan saran penghematan biaya untuk meningkatkan pemanfaatan sumber daya secara keseluruhan. Untuk informasi lebih lanjut, lihat Wawasan Biaya.

  • Untuk informasi lebih lanjut tentang cara mengimplementasikan penjadwalan GPU dan isolasi memori, lihat Berbagi GPU.

  • Untuk informasi lebih lanjut tentang solusi penjadwalan untuk node virtual, lihat Jadwalkan Pod ke Node Virtual.