This is the Trace Id: a81cd86da87de87e3724a2ca39f0a4c7
Lompati ke konten utama
Azure
latar belakang gradien

Apa itu Kubernetes?

Pelajari cara menjalankan kontainer dengan mengotomatiskan penyebaran, manajemen, dan penskalaan.

Definisi Kubernetes

Kubernetes adalah perangkat lunak sumber terbuka yang mengotomatiskan penyebaran, manajemen, dan penskalaan aplikasi kontainer. Ini mengatur kluster mesin virtual, menjadwalkan kontainer, dan menyediakan pemulihan mandiri, penyeimbangan beban, dan portabilitas di seluruh lingkungan.

Poin utama

  • Kubernetes adalah platform yang membantu Anda menjalankan, mengontrol, dan memperluas beban kerja kontainer di beberapa server dalam kluster.
  • Alat ini mengelompokkan kontainer ke dalam Pod, dengan sarana kontrol yang menjadwalkan dan pengontrol yang menjaga status yang diinginkan.
  • Ini menangani penemuan layanan, penyeimbangan beban, penskalaan otomatis, dan pemulihan mandiri (mulai ulang, penggantian, dan penjadwalan ulang).
  • Tim menggunakannya untuk rilis portabel di seluruh lingkungan dan untuk melacak metrik kesehatan dan stabilitas.

Kubernetes menjelaskan

Kubernetes adalah perangkat lunak sumber terbuka yang digunakan DevOps untuk menyebarkan, mengelola, dan menskalakan kontainer di seluruh kluster. Docker—teknologi sumber terbuka lainnya—adalah format file kontainer default yang umumnya digunakan bersama dengan Kubernetes.

Kontainer

Kontainer mengemas aplikasi dengan dependensi dan konfigurasinya sehingga dapat berjalan secara konsisten di lingkungan yang berbeda. Seiring berkembangnya aplikasi, Anda mungkin menjalankan banyak kontainer di berbagai server—dan mengoordinasikan semua itu secara manual menjadi rumit. Kubernetes mengatasi kerumitan dengan API sumber terbuka dan sistem kontrol yang menentukan apa yang harus dijalankan di mana, lalu menjaganya tetap berjalan.

Apa yang dilakukan Kubernetes untuk Anda

Penjadwalan dan penempatan sumber daya

Kubernetes mengatur kluster mesin virtual dan menjadwalkan kontainer untuk dijalankan berdasarkan sumber daya komputasi yang tersedia dan kebutuhan sumber daya setiap kontainer.

Penemuan layanan dan penyeimbangan beban

Kubernetes mengelola penemuan layanan dan penyeimbangan beban sehingga lalu lintas dapat dirutekan ke Pod yang tepat, meskipun Pod berubah seiring waktu.

Menskalakan untuk mencocokkan permintaan

Kubernetes menskalakan beban kerja berdasarkan penggunaan komputasi dan status yang Anda tetapkan.

Pemulihan mandiri saat terjadi kegagalan

Kubernetes memeriksa kesehatan sumber daya dan dapat memulai ulang atau mereplikasi kontainer saat masalah terjadi. Ini memulai ulang atau mengganti kontainer yang gagal dan menahan lalu lintas hingga beban kerja siap.

Mendukung perubahan terkontrol

Kubernetes mendukung pola penyebaran untuk menjalankan aplikasi, termasuk rollout dan rollback otomatis berdasarkan status yang Anda jelaskan.

Manajemen konfigurasi dan rahasia

Kubernetes menyediakan manajemen rahasia dan konfigurasi untuk informasi sensitif seperti kata sandi atau token.

Orkestrasi penyimpanan

Kubernetes dapat memasang sistem penyimpanan yang Anda pilih (misalnya, penyimpanan lokal atau opsi cloud publik), berdasarkan model orkestrasi penyimpanan Kubernetes.

Glosarium objek cepat

Kubernetes dibuat di sekitar objek API—sumber daya yang Anda deklarasikan dan kelola. Berikut adalah beberapa:

  • Pod: Unit dasar yang menjalankan satu atau beberapa kontainer.

  • Layanan: Cara stabil untuk memaparkan aplikasi dan merutekan lalu lintas ke Pod yang berubah.

  • Penyebaran: Cara untuk menjelaskan status aplikasi yang diinginkan dan memperbaruinya seiring waktu (sering kali terkait dengan rollout dan rollback).

  • Node: Mesin di kluster tempat Pod berjalan.

  • Sarana kontrol: Komponen yang mengelola status kluster dan keputusan penjadwalan.

Cara semuanya bekerja bersama

  1. Anda mendeklarasikan status yang diinginkan untuk aplikasi Anda (apa yang harus berjalan, jumlah salinan, kebutuhan sumber daya).

  2. Sarana kontrol mencatat dan menindaklanjuti permintaan tersebut melalui API Kubernetes dan penyimpanan pendukung.

  3. Penjadwal menempatkan Pod di node yang memiliki sumber daya yang memadai.

  4. Komponen node menjalankan beban kerja.

  5. Pengontrol terus melakukan rekonsiliasi agar status aktual sesuai dengan status yang diinginkan—menskalakan, mengganti, dan memperbarui beban kerja sesuai kebutuhan.

Arsitektur Kubernetes

Blok pembangun utama

Kluster: Sarana kontrol plus node pekerja

Kluster Kubernetes biasanya dideskripsikan dalam dua bagian: sarana kontrol yang mengelola kluster, dan node pekerja yang menjalankan beban kerja Anda.

Komponen sarana kontrol

Komponen ini mengelola status kluster secara keseluruhan:

  • kube-apiserver: Memaparkan API HTTP Kubernetes (Front Door untuk permintaan).

  • etcd: Penyimpanan kunci-nilai dengan konsistensi dan ketersediaan tinggi untuk data kluster.

  • kube-scheduler: Menemukan Pod yang memerlukan penempatan dan menetapkannya ke node.

  • kube-controller-manager: Menjalankan pengontrol yang merekonsiliasi status aktual ke status yang diinginkan.

  • cloud-controller-manager (opsional): Menyambungkan Kubernetes ke logika kontrol khusus penyedia cloud.

Komponen node

Setiap node pekerja menjalankan perangkat lunak yang memelihara Pod dan aturan jaringan:

  • kubelet: Memastikan Pod berjalan di node, termasuk kontainernya.

  • kube-proxy (opsional): Mempertahankan aturan jaringan untuk mendukung layanan.

  • runtime kontainer: Menjalankan kontainer di node.

Pod: Unit kerja dasar

Kubernetes tidak menjadwalkan kontainer individu secara langsung dalam abstrak. Kubernetes mengelompokkan satu atau beberapa kontainer ke dalam Pod, yang menjadi unit operasional dasar. Pod kemudian diskalakan naik atau turun menuju status yang diinginkan yang Anda tentukan.

Secara praktik, ini berarti:

  1. Anda menjelaskan aplikasi yang ingin Anda jalankan.

  2. Kubernetes menjadwalkan Pod ke mesin yang memiliki komputasi yang tersedia.

  3. Pengontrol menjaga kluster tetap bergerak menuju status yang Anda minta.

Jaringan layanan

Pod dapat muncul dan menghilang, sehingga Kubernetes menyediakan primitif—blok pembangun dasar yang Anda gabungkan untuk mendeskripsikan dan menjalankan aplikasi di kluster—yang menawarkan cara stabil untuk menjangkau beban kerja.

Dasar-dasar jaringan Pod

Setiap Pod mendapat alamat IP unik di seluruh kluster, dan Pod dapat berkomunikasi lintas node tanpa terjemahan alamat jaringan (NAT) dalam model jaringan Kubernetes.

Layanan

API Layanan menyediakan alamat IP yang stabil atau nama host untuk rangkaian Pod backend, bahkan saat Pod individu berubah seiring waktu.

EndpointSlice

Kubernetes memelihara objek potongan titik akhir untuk melacak Pod mana yang saat ini mendukung sebuah layanan.

Ingress/Gateway API

Untuk mengekspos layanan ke klien di luar kluster, Kubernetes mendukung Gateway API (dan ingress sebagai pendahulunya).

Layanan LoadBalancer

Beberapa lingkungan dapat memaparkan layanan secara eksternal menggunakan tipe layanan LoadBalancer.

Add-on yang dapat dijalankan di cluster

Kluster Kubernetes sering kali menyertakan add-on yang memperluas fungsionalitas di luar komponen inti. Contoh meliputi:

  • DNS untuk resolusi nama di seluruh kluster.

  • UI Web (dasbor) untuk manajemen kluster.

  • Pemantauan sumber daya kontainer untuk pengumpulan metrik.

  • Pengelogan tingkat kluster untuk mengumpulkan log secara terpusat.

Bagaimana cara kerja Kubernetes?

Kubernetes menjalankan aplikasi kontainer di kluster mesin dan menyimpannya dalam status yang dideskripsikan. Hal ini dilakukan dengan menempatkan pekerjaan di mesin yang tepat, merutekan lalu lintas ke tempat yang tepat, serta mengawasi kegagalan dan perubahan.

Alur dasar

1. Anda mendeskripsikan apa yang ingin dijalankan

Sebagian besar beban kerja Kubernetes dimulai dengan “status yang diinginkan” yang dideklarasikan (apa yang harus dijalankan, jumlah salinan, dan cara memaparkannya). Kubernetes dibangun mengikuti konfigurasi deklaratif dan otomatisasi.

2. Kubernetes memutuskan lokasinya harus dijalankan

Kubernetes menjadwalkan kontainer ke mesin di kluster berdasarkan sumber daya komputasi yang tersedia dan kebutuhan setiap kontainer. Kontainer berjalan di dalam Pod, yaitu unit yang ditempatkan Kubernetes di mesin.

3. Kubernetes terus membandingkan status aktual dengan status yang Anda inginkan

Pengontrol mengawasi kluster dan bekerja untuk mendekatkan status saat ini ke status yang diinginkan, menggunakan server API untuk membuat perubahan.

Penjadwalan kontainer dan manajemen sehari-hari

Penjadwalan adalah “di mana hal ini harus dijalankan?” keputusan.

1. Pod dijadwalkan, bukan kontainer individu

Kubernetes mengelompokkan kontainer ke dalam Pod, lalu menempatkan Pod tersebut di mesin.

2. Penjadwal menetapkan Pod ke node yang sesuai

Kube-scheduler mencari Pod yang belum ditetapkan dan memilih node untuknya.

3. Agen node menjaga Pod tetap berjalan

Di setiap node, kubelet memastikan Pod berjalan (termasuk kontainernya).

Penyeimbangan beban dan penemuan layanan

Kontainer dan Pod dapat dibuat, dipindahkan, atau diganti, sehingga aplikasi memerlukan cara yang stabil untuk menemukan satu sama lain.

Penemuan layanan dan penyeimbangan beban adalah perilaku bawaan

Kubernetes mengelola penemuan layanan dan menggunakan penyeimbangan beban sehingga lalu lintas dapat dirutekan, meskipun Pod berubah seiring waktu.

Layanan menyediakan alamat stabil untuk rangkaian Pod yang berubah

API Layanan menyediakan alamat IP yang stabil atau nama host untuk layanan yang didukung oleh satu atau beberapa Pod, dan Kubernetes melacak Pod pendukung melalui objek EndpointSlice.

Pembaruan perutean lalu lintas saat Pod berubah

Saat Pod di balik layanan berubah, perutean layanan beradaptasi sehingga lalu lintas terus mencapai backend saat ini.

Menskalakan aplikasi (dan alasan “status yang diinginkan” penting)

Kubernetes dapat menskalakan beban kerja ke status yang Anda tetapkan, termasuk penskalaan berdasarkan pemanfaatan komputasi.

Ide penskalaan umum meliputi:

  • Lebih banyak replika (lebih banyak Pod) untuk menangani permintaan yang lebih tinggi.

  • Lebih sedikit replika saat permintaan turun.

  • Pelacakan sumber daya sehingga keputusan penempatan mencerminkan kebutuhan CPU dan memori.

Ini kembali ke model “status yang diinginkan”: Anda menentukan targetnya, dan pengontrol terus bekerja mencapai target tersebut.

Pemulihan mandiri: Hal yang terjadi ketika terjadi kerusakan

Kubernetes mencakup perilaku pemulihan mandiri yang bertujuan untuk memelihara kesehatan dan ketersediaan beban kerja. Jenis ini meliputi:

  • Memulai ulang kontainer yang gagal (mulai ulang tingkat kontainer).

  • Mengganti Pod yang gagal untuk menyimpan jumlah replika yang diminta (penggantian replika).

  • Menjadwalkan ulang beban kerja saat node tidak tersedia.

  • Menghapus Pod yang gagal dari titik akhir layanan sehingga lalu lintas hanya menuju ke Pod yang sehat (penyeimbangan beban untuk layanan).

Pemulihan mandiri memeriksa kesehatan kontainer dan memulai ulang atau mereplikasinya saat masalah terjadi.

Peran KPI Kubernetes

Indikator kinerja utama (KPI, atau metrik) digunakan untuk memahami kesehatan kluster dan perilaku beban kerja.

Dari mana KPI berasal

  • Komponen sistem Kubernetes mengeluarkan metrik (format Prometheus) yang berguna untuk dasbor dan peringatan.

  • Metrik biasanya tersedia di titik akhir HTTP komponen/metrik, termasuk komponen seperti kube-apiserver, kube-scheduler, kubelet, kube-proxy, dan kube-controller-manager.

Contoh hal yang dapat diungkap KPI

  • Sinyal kesehatan kluster (metrik dan pola kesalahan tingkat komponen)

  • Stabilitas beban kerja (misalnya, mulai ulang atau penggantian yang sering)

  • Tekanan kapasitas (alokasi vs. permintaan sumber daya, terkait dengan keputusan penskalaan)

Mengapa hal ini penting dalam operasional sehari-hari

Pemantauan memberi tim pandangan yang lebih lengkap tentang sumber daya kluster, Kubernetes API, kontainer, dan log, sehingga memperpendek perulangan umpan balik antara masalah dan perbaikan.

Keuntungan dan kasus penggunaan

Kubernetes sering dipilih ketika tim memerlukan cara yang konsisten untuk menjalankan banyak kontainer di berbagai mesin, dengan tetap membiarkan perutean lalu lintas, penskalaan, dan pemulihan ditangani oleh platform.

Skalabilitas

Kubernetes dapat menskalakan beban kerja, yaitu memperbesar atau memperkecil seiring permintaan berubah, terhadap status target dan dapat menskalakan berdasarkan pemanfaatan komputasi.

Kasus penggunaan umum

  • Aplikasi web dengan lalu lintas variabel (kampanye, puncak musiman): Sesuaikan replika seiring beban berubah.

  • Pemrosesan batch atau berbasis peristiwa: Tambahkan kapasitas saaat terjadi lonjakan, lalu skalakan turun kembali.

  • Layanan mikro: Skalakan layanan tertentu tanpa menskalakan seluruh aplikasi.

Efisiensi sumber daya

Kubernetes mendukung pengemasan bin otomatis, yang menempatkan kontainer di node berdasarkan CPU dan kebutuhan memori untuk memanfaatkan sumber daya yang tersedia dengan lebih baik. Aplikasi ini juga melacak alokasi sumber daya saat mengelola beban kerja.

Kasus penggunaan umum

  • Kluster bersama untuk beberapa tim: Kurangi kapasitas yang terbuang dengan menempatkan beban kerja di lokasi sumber daya tersedia.

  • Kluster beban kerja campuran (layanan plus pekerjaan): Jaga node tetap sibuk tanpa penempatan manual.

Penemuan layanan dan penyeimbangan beban

Kubernetes dapat memaparkan beban kerja menggunakan DNS atau alamat IP, dan dapat mendistribusikan lalu lintas jaringan agar penyebaran tetap stabil. Layanan ini juga mengelola penemuan layanan dan menggunakan penyeimbang beban saat beban kerja berubah.

Kasus penggunaan umum

  • Komunikasi layanan mikro: Layanan menemukan satu sama lain melalui nama yang stabil saat Pod berubah.

  • API internal di balik titik akhir yang stabil: Rutekan lalu lintas hanya ke backend saat ini.

Pemulihan mandiri

Kubernetes dirancang untuk mengganti kontainer yang gagal, menjadwalkan ulang beban kerja saat node tidak tersedia, dan mempertahankan status yang diinginkan. Contohnya meliputi mulai ulang kontainer, penggantian replika, dan penghapusan Pod yang tidak sehat dari titik akhir layanan sehingga lalu lintas hanya menuju ke Pod yang sehat.

Kasus penggunaan umum

  • Layanan yang selalu aktif: Hidupkan ulang atau ganti instans yang gagal tanpa intervensi manual.

  • Kluster dengan churn node yang sering terjadi: Jadwalkan ulang beban kerja saat node mengalami gangguan.

  • Layanan di balik layanan: Hentikan perutean lalu lintas ke Pod yang tidak sehat.

Rilis yang lebih aman

Kubernetes mendukung rollout dan rollback otomatis. Anda menjelaskan status yang diinginkan dan Kubernetes akan memindahkan status aktual ke sana dengan laju dikontrol.

Kasus penggunaan umum

  • Pembaruan aplikasi yang sering dilakukan: Terapkan perubahan secara bertahap, lalu kembalikan jika diperlukan.

  • Tim yang mengirimkan beberapa layanan: Jaga mekanisme rilis tetap konsisten di seluruh aplikasi.

Portabilitas

Aplikasi terkontainerisasi terpisah dari infrastruktur, dan Kubernetes membantu memindahkannya dari mesin lokal ke produksi di seluruh lingkungan lokal, tanpa server, cloud hibrid, dan multicloud sekaligus menjaga konsistensi di seluruh lingkungan.

Kasus penggunaan umum

  • Paritas dev/test/prod: Pertahankan model pengemasan dan penjadwalan yang sama di seluruh lingkungan.

  • Penerapan hibrid: Jalankan sebagian sistem di lokal dan sebagian di cloud dengan pendekatan orkestrasi yang sama.

Mulai menggunakan Kubernetes

Kubernetes menyediakan cara umum untuk menjalankan beban kerja terkontainerisasi dengan konfigurasi deklaratif dan otomatisasipembelajaran mesin, yang didukung oleh serangkaian alat serta dukungan komunitas yang besar dan berkembang.

Mengapa hal ini masih penting untuk aplikasi cloud-native

Karena sistem build tim terdiri dari banyak layanan, beban kerja singkat, dan pembaruan yang sering dilakukan, Kubernetes tetap menjadi fondasi praktis karena berfokus pada operasi yang dapat diulang:

  • Operasi yang konsisten di seluruh lingkungan (kontainer yang dipaketkan dengan dependensi, dijalankan dengan cara yang sama di seluruh lingkungan).

  • Ekosistem yang luas dan aktif dengan layanan, dukungan, dan alat yang tersedia secara luas.

  • Ekstensibilitas melalui add-on, plugin, dan program kesesuaian yang dibuat komunitas yang menjaga API inti tetap konsisten di seluruh versi.

Jika Anda membuat atau menjalankan beban kerja, Azure Kubernetes Service (AKS) membantu Anda menyebarkan dan mengelola aplikasi yang terkontainerisasi, dengan Azure yang mengelola sarana kontrol.

latar belakang gradien
Sumber daya
Pengembangan

Sumber daya Azure

Jelajahi teknologi pengembang terbaru dan temukan keterampilan baru.
Pelatihan

Pengantar Kubernetes

Kursus ini memandu Anda melalui jenis masalah bisnis yang dapat Anda atasi menggunakan Kubernetes.
Pendidikan

Azure untuk pelajar

Dapatkan keterampilan untuk memulai karier Anda dengan cepat dan memberikan dampak positif bagi dunia.
Tanya Jawab Umum

Tanya jawab umum

  • Kubernetes digunakan untuk menyebarkan, mengelola, dan menskalakan aplikasi kontainer di seluruh kluster. Kubernetes menjadwalkan workload berdasarkan komputasi yang tersedia, merutekan lalu lintas dengan penemuan layanan dan penyeimbangan beban, serta membantu menjaga aplikasi tetap berjalan dengan memulai ulang atau mengganti kontainer yang gagal.
  • Kubernetes biasanya digunakan oleh pengembang dan administrator platform yang menjalankan aplikasi terkontainerisasi. Jika Anda ingin mengurangi pemeliharaan sarana kontrol, layanan terkelola seperti Azure Kubernetes Service (AKS) dapat menangani sarana kontrol sementara Anda fokus pada node dan aplikasi.
  • Ya. Kubernetes dapat menjalankan aplikasi terkontainerisasi di infrastruktur lokal atau on-premises, dan juga mendukung penyiapan hibrid dan multicloud. Kontainer tetap portabel karena aplikasi dipaketkan secara terpisah dari mesin yang mendasarinya.
  • Diperlukan waktu karena ada beberapa konsep inti (kluster, node, Pod, layanan). Mulailah dengan dasar-dasarnya, lalu berlatih dengan menyebarkan aplikasi kecil dan ikuti jalur pembelajaran terpandu untuk membangun kepercayaan diri.