Cloud · 1 Oktober 2026
Uber Pisahkan Niat Penskalaan dari Eksekusi pada Platform Kubernetes
Uber telah menerbitkan laporan terperinci mengenai pengontrol ServiceScale baru mereka, yang memungkinkan beberapa orkestrator untuk mengelola penskalaan beban kerja Kubernetes yang sama secara aman.
Tim Platform Kontainer Uber mengelola lebih dari 100 klaster komputasi di berbagai pusat data dan penyedia awan, termasuk Oracle dan Google. Infrastruktur ini menjalankan sekitar 4.000 layanan pada 3 juta inti dengan 1,5 juta peluncuran pod setiap hari. Perusahaan menggunakan platform internal bernama Up sebagai lapisan federasi untuk armada Kubernetes, sementara pengontrol khusus bernama Uber Deployment Controller atau UDC menyelaraskan niat tersebut menjadi primitif Kubernetes.
Perubahan ini didorong oleh cara Uber menangani kegagalan regional. Sebelumnya, Uber menyimpan kapasitas menganggur yang dicadangkan di semua pusat data untuk menangani lonjakan beban saat terjadi pemadaman. Para insinyur ingin menggunakan kembali kapasitas dari beban kerja tingkat rendah dengan cara menurunkan skala beban tersebut dan meningkatkan skala beban kerja tingkat tinggi selama kegagalan terjadi.
Untuk mendukung hal ini, tim memperkenalkan definisi sumber daya kustom bernama ServiceScale dan pengontrol Service Scale Controller atau SSC. Setiap orkestrator dapat menyatakan keinginan penskalaannya melalui ServiceScale, dan SSC menyelaraskan niat gabungan tersebut menjadi objek Kubernetes. Pendekatan ini dipilih daripada memperluas UDC untuk menghindari peningkatan kompleksitas pada alur kerja paling kritis, karena kesalahan dalam penanganan kegagalan dapat memengaruhi penerapan normal di seluruh armada.
Implementasi ini memberikan kemudahan inspeksi sistem, di mana insinyur dapat memeriksa ServiceScale untuk melihat keinginan setiap orkestrator. Proses pemulihan juga menjadi lebih sederhana karena informasi keadaan stabil dan kegagalan sementara disimpan dalam spesifikasi sumber daya kustom, sehingga pemulihan tidak memerlukan rekonstruksi keadaan dari log.
Selama proses pengembangan, tim menghadapi masalah cache pemberi tahu yang usang. Insinyur mengimplementasikan pengaman konsistensi baca-tulis sendiri, di mana pengontrol melampirkan generasi saat ini sebagai anotasi saat memperbarui sumber daya hilir, lalu memverifikasi bahwa data cache mencerminkan generasi tersebut sebelum melaporkan status.
Tantangan lain muncul dari sistem penulis ganda, di mana pembaruan simultan oleh UDC dan SSC menyebabkan ReplicaSet menjadi tidak konsisten. Hal ini menyebabkan metadata menyimpang dari spesifikasinya, yang merusak penskalaan proporsional untuk pembaruan bergulir. Uber mengatasi hal ini dengan menambahkan observabilitas di seluruh armada untuk mendeteksi penyimpangan, membangun penyembuh otomatis dalam UDC, dan mencari perbaikan jangka panjang.
Peluncuran sistem ini memakan waktu satu tahun dengan menggunakan lingkungan pementasan, penerapan kenari, dan pengujian integrasi dengan alat pengujian kind. Arsitektur Kegagalan Terpadu yang lebih luas dilaporkan telah mengurangi penyediaan keadaan stabil dari 2 kali menjadi 1,3 kali dan menghilangkan lebih dari satu juta inti CPU.