Diterbitkan: 11 Maret 2024
Kontributor: Stephanie Susnjara, Ian Smalley
Kubernetes, juga dikenal sebagai k8s atau kube, adalah platform orkestrasi kontainer sumber terbuka untuk menjadwalkan dan mengotomatiskan penerapan, pengelolaan, dan penskalaan aplikasi dalam kontainer.
Saat ini, Kubernetes dan ekosistem yang lebih luas dari teknologi terkait kontainer telah bergabung untuk membentuk blok bangunan infrastruktur cloud modern. Ekosistem ini memungkinkan organisasi untuk menghadirkan lingkungan komputasi multicloud hybrid yang sangat produktif untuk melakukan tugas-tugas kompleks seputar infrastruktur dan operasi. Selain itu, ekosistem ini juga mendukung pengembangan cloud-native dengan memungkinkan pendekatan build-once-and-deploy-anywhere untuk membangun aplikasi.
Kata Kubernetes berasal dari bahasa Yunani, yang berarti juru mudi atau pilot, sesuai dengan kemudi pada logo Kubernetes (tautan berada di luar ibm.com).
Baca bagaimana Desktop as a service (DaaS) memungkinkan perusahaan mencapai tingkat kinerja dan keamanan yang sama dengan menerapkan aplikasi on premises.
Daftar untuk panduan tentang cloud hybrid
Kontainer adalah komponen aplikasi ringan dan dapat dieksekusi yang menggabungkan kode sumber dengan semua pustaka sistem operasi (OS) dan dependensi yang diperlukan untuk menjalankan kode di lingkungan apa pun.
Kontainer memanfaatkan bentuk virtualisasi OS yang memungkinkan beberapa aplikasi untuk berbagi satu instans OS dengan mengisolasi proses dan mengendalikan jumlah CPU, memori, dan disk yang dapat diakses oleh proses tersebut. Karena lebih kecil, lebih hemat sumber daya, dan lebih portabel daripada mesin virtual (VM), kontainer telah menjadi unit komputasi de facto dari aplikasi cloud-native modern. Kontainer juga lebih hemat sumber daya. Mereka memungkinkan Anda untuk menjalankan lebih banyak aplikasi pada mesin yang lebih sedikit (server virtual dan server fisik) dengan instans OS yang lebih sedikit.
Karena kontainer dapat berjalan secara konsisten di mana saja, kontainer menjadi penting bagi arsitektur dasar yang mendukung lingkungan multicloud hybrid, gabungan antara cloud lokal, cloud privat, cloud publik , dan lebih dari satu layanan cloud dari lebih dari satu vendor cloud.
Docker adalah alat yang paling populer untuk membuat dan menjalankan kontainer Linux. Sementara bentuk awal kontainer diperkenalkan beberapa dekade lalu (dengan teknologi seperti FreeBSD Jails dan AIX Workload Partitions), kontainer didemokratisasi pada tahun 2013 ketika Docker membawanya ke masyarakat dengan implementasi baru yang ramah pengembang dan ramah cloud.
Docker dimulai sebagai proyek sumber terbuka, tetapi saat ini juga merujuk pada Docker Inc., perusahaan yang memproduksi Docker—sebuah toolkit kontainer komersial yang dibangun di atas proyek sumber terbuka (dan menyumbangkan perbaikannya kembali ke komunitas sumber terbuka).
Docker dibangun di atas teknologi kontainer Linux tradisional, tetapi memungkinkan virtualisasi yang lebih terperinci dari proses kernel Linux dan menambahkan fitur-fitur untuk membuat kontainer lebih mudah diakses oleh para pengembang untuk membangun, menggunakan, mengelola, dan mengamankan.
Meskipun ada platform waktu proses kontainer alternatif saat ini seperti Open Container Initiative (OCI), CoreOS dan Canonical (Ubuntu) LXD, Docker adalah pilihan yang dominan. Selain itu, Docker telah menjadi sinonim dengan kontainer dan terkadang disalahartikan sebagai pesaing teknologi pelengkap seperti Kubernetes.
Saat ini, Docker dan Kubernetes adalah alat kontainerisasi terkemuka, dengan Docker mendominasi 82% pasar dan Kubernetes mengendalikan 11,52% pangsa pasar pada tahun 2024 (tautan berada di luar ibm.com).
Seiring dengan berkembangnya kontainer, saat ini, sebuah organisasi mungkin memiliki ratusan atau ribuan kontainer. Tim operasi diperlukan untuk menjadwalkan dan mengotomatiskan penerapan kontainer, jaringan, skalabilitas, dan ketersediaan. Maka lahirlah orkestrasi kontainer.
Berdasarkan Borg, platform orkestrasi kontainer internal Google, Kubernetes diperkenalkan ke publik sebagai alat sumber terbuka pada tahun 2014, dengan Microsoft, Red Hat, IBM, dan pemain teknologi besar lainnya yang bergabung sebagai anggota awal komunitas Kubernetes. Pada tahun 2015, Google menyumbangkan Kubernetes ke Cloud Native Computing Foundation (CNCF) (tautan berada di luar ibm.com), pusat komputasi sumber terbuka cloud-native dan netral vendor.
Kubernetes menjadi proyek pertama yang dihosting CNCF pada Maret 2016. Sejak saat itu, Kubernetes telah menjadi alat orkestrasi kontainer yang paling banyak digunakan untuk menjalankan beban kerja berbasis kontainer di seluruh dunia. Dalam laporan CNCF (tautan berada di luar ibm.com), Kubernetes adalah proyek sumber terbuka terbesar kedua di dunia (setelah Linux) dan alat orkestrasi kontainer utama untuk 71% perusahaan Fortune 100.
Pada tahun 2018, Kubernetes merupakan proyek lulusan pertama CNCF, dan menjadi salah satu proyek sumber terbuka dengan pertumbuhan tercepat dalam sejarah. Sementara opsi orkestrasi kontainer lainnya, terutama Docker Swarm dan Apache Mesos, mendapatkan beberapa daya tarik sejak awal, Kubernetes dengan cepat menjadi yang paling banyak diadopsi.
Sejak Kubernetes bergabung dengan CNCF pada tahun 2016, jumlah kontributor telah tumbuh menjadi 8.012, meningkat 996% (tautan berada di luar ibm.com). Pada saat ini ditulis, para kontributor telah menambahkan lebih dari 123.000 commit ke repositori Kubernetes di GitHub (tautan berada di luar ibm.com).
Kubernetes menjadwalkan dan mengotomatiskan tugas-tugas terkait kontainer di seluruh siklus hidup aplikasi, termasuk yang berikut ini.
Menerapkan sejumlah kontainer tertentu ke host tertentu dan jaga agar tetap berjalan dalam keadaan yang diinginkan.
Peluncuran adalah perubahan pada penerapan. Kubernetes memungkinkan Anda memulai, menjeda, melanjutkan, atau memutar kembali peluncuran.
Kubernetes dapat secara otomatis mengekspos kontainer ke internet atau ke kontainer lain dengan menggunakan nama sistem nama domain (DNS) atau alamat IP.
Atur Kubernetes untuk memasang penyimpanan lokal atau cloud yang persisten untuk kontainer Anda sesuai kebutuhan.
Berdasarkan penggunaan CPU atau metrik khusus, penyeimbangan beban Kubernetes dapat mendistribusikan beban kerja di seluruh jaringan untuk menjaga kinerja dan stabilitas.
Saat lalu lintas melonjak, penskalaan otomatis Kubernetes dapat memutar kluster baru sesuai kebutuhan untuk menangani beban kerja tambahan.
Ketika sebuah kontainer gagal, Kubernetes dapat memulai ulang atau menggantinya secara otomatis untuk mencegah waktu henti. Kubernetes juga dapat menurunkan kontainer yang tidak memenuhi persyaratan pemeriksaan kesehatan Anda.
Penerapan Kubernetes melibatkan kluster, blok bangunan arsitektur Kubernetes. Kluster terdiri dari node, masing-masing mewakili host komputasi tunggal, baik mesin fisik (bare metal server) atau VM.
Arsitektur Kubernetes terdiri dari dua bagian utama: komponen panel kontrol dan komponen yang mengelola node individual.
Sebuah node terdiri dari pemalut. Ini adalah kelompok kontainer yang berbagi sumber daya komputasi dan jaringan yang sama. Mereka juga merupakan unit skalabilitas di Kubernetes. Jika sebuah kontainer dalam pemalut mendapatkan lalu lintas yang melebihi kapasitasnya, Kubernetes akan mereplikasi pemalut tersebut ke node lain dalam kluster.
Bidang kontrol secara otomatis menangani penjadwalan pemalut melintasi node dalam kluster.
Setiap kluster memiliki node utama yang menangani bidang kontrol kluster. Node master menjalankan layanan penjadwal yang mengotomatisasi kapan dan di mana kontainer diterapkan berdasarkan persyaratan penerapan yang ditetapkan pengembang dan kapasitas komputasi yang tersedia.
Komponen utama dalam kluster Kubernetes adalah kube-apiserver, etcd, kube-scheduler, kube-controller-manager, dan cloud-controller-manager:
Server API: Server antarmuka pemrograman aplikasi (API) di Kubernetes mengekspos Kubernetes API (antarmuka yang digunakan untuk mengelola, membuat, dan mengonfigurasi kluster Kubernetes) dan berfungsi sebagai titik masuk untuk semua perintah dan kueri.
etcd: etcd adalah penyimpanan nilai kunci terdistribusi sumber terbuka yang digunakan untuk menyimpan dan mengelola informasi penting yang dibutuhkan sistem terdistribusi untuk tetap berjalan. Di Kubernetes, etcd mengelola data konfigurasi, data status, dan metadata.
Penjadwal: Komponen ini melacak pemalut yang baru dibuat dan memilih node yang akan digunakan untuk menjalankannya. Penjadwal mempertimbangkan ketersediaan sumber daya dan batasan alokasi, persyaratan perangkat keras dan perangkat lunak, dan banyak lagi.
Pengelola-pengendali: Sekumpulan pengendali bawaan, pengendali-manajer Kubernetes menjalankan loop kontrol yang memantau status bersama kluster dan berkomunikasi dengan server API untuk mengelola sumber daya, pemalut, atau titik akhir layanan. Pengelola-pengendali terdiri dari proses-proses terpisah yang digabungkan bersama untuk mengurangi kerumitan dan berjalan dalam satu proses.
Pengelola-pengendali-cloud: Komponen ini memiliki fungsi yang mirip dengan tautan pengelola-pengendali. Komponen ini terhubung ke API penyedia cloud dan memisahkan komponen yang berinteraksi dengan platform cloud tersebut dari komponen yang hanya berinteraksi dalam kluster.
Node pekerja bertanggung jawab untuk menerapkan, menjalankan, dan mengelola aplikasi yang terkontainerisasi:
Kubelet: Kubelet adalah agen perangkat lunak yang menerima dan menjalankan perintah dari master node dan membantu memastikan bahwa kontainer berjalan dalam pemalut.
Kube-proxy: Diinstal di setiap node dalam kluster, kube-proxy menjaga aturan jaringan pada host dan memantau perubahan layanan dan pemalut.
Saat ini, ada lebih dari 90 penawaran Kubernetes bersertifikasi (tautan berada di luar ibm.com), termasuk platform manajemen tingkat perusahaan yang menyediakan alat, peningkatan, dan kemampuan add-on yang mempercepat pengembangan dan pengiriman aplikasi kontainer.
Meskipun merupakan teknologi pilihan untuk mengatur aplikasi cloud berbasis kontainer, Kubernetes bergantung pada komponen lain, mulai dari jaringan, ingress, penyeimbangan beban, penyimpanan, integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD), dan banyak lagi, agar berfungsi sepenuhnya.
Meskipun hosting mandiri kluster Kubernetes di lingkungan berbasis cloud dimungkinkan, penyiapan dan pengelolaannya bisa jadi rumit untuk organisasi perusahaan. Di sinilah Kubernetes service terkelola menjadi solusinya.
Dengan Kubernetes service terkelola, penyedia biasanya mengelola komponen bidang kontrol Kubernetes. Penyedia layanan terkelola membantu mengotomatiskan proses rutin untuk pembaruan, penyeimbangan beban, penskalaan, dan pemantauan. Sebagai contoh, Red Hat OpenShift adalah Kubernetes service yang dapat digunakan di lingkungan apa pun dan di semua cloud publik utama termasuk Amazon Web Services (AWS), Microsoft Azure, Google Cloud, dan IBM Cloud. Banyak penyedia cloud juga menawarkan Kubernetes service yang dikelola sendiri.
Pemantauan Kubernetes mengacu pada pengumpulan dan analisis data yang terkait dengan karakteristik kesehatan, kinerja, dan biaya aplikasi terkontainerisasi yang berjalan di dalam kluster Kubernetes.
Pemantauan kluster Kubernetes memungkinkan administrator dan pengguna untuk melacak waktu aktif, penggunaan sumber daya kluster, dan interaksi antar komponen kluster. Pemantauan membantu mengidentifikasi dengan cepat masalah seperti sumber daya yang tidak mencukupi, kegagalan, dan node yang tidak dapat bergabung dengan kluster. Solusi pemantauan Kubernetes saat ini mencakup alat otomatis untuk manajemen kinerja aplikasi (APM), observabilitas, manajemen sumber daya aplikasi (ARM), dan banyak lagi.
Kubernetes dapat menerapkan dan menskalakan pemalut, tetapi tidak dapat mengelola atau mengotomatisasi perutean di antara mereka dan tidak menyediakan alat apa pun untuk memantau, mengamankan, atau men-debug koneksi-koneksi ini.
Seiring bertambahnya jumlah kontainer dalam kluster, jumlah jalur koneksi yang mungkin di antara mereka meningkat secara eksponensial. Misalnya, 2 kontainer memiliki 2 koneksi potensial, tetapi 10 pemalut memiliki 90, menciptakan potensi masalah konfigurasi dan manajemen.
Istio, lapisan mesh layanan sumber terbuka yang dapat dikonfigurasi, memberikan solusi dengan menghubungkan, memantau, dan mengamankan kontainer dalam kluster Kubernetes. Manfaat signifikan lainnya termasuk kemampuan untuk debugging yang lebih baik dan dasbor yang dapat digunakan oleh tim DevOps dan administrator untuk memantau latensi, kesalahan time-in-service, dan karakteristik lain dari koneksi antar kontainer.
Knative (diucapkan 'kay-native') adalah platform sumber terbuka yang menyediakan jalan masuk yang mudah ke komputasi tanpa server, pengembangan aplikasi komputasi cloud dan model eksekusi yang memungkinkan pengembang untuk membangun dan menjalankan kode aplikasi tanpa menyediakan atau mengelola server atau infrastruktur backend.
Alih-alih menerapkan instans kode berkelanjutan yang diam sambil menunggu permintaan, tanpa server menampilkan kode sesuai kebutuhan, menskalakan atau menurunkannya saat permintaan berfluktuasi, lalu menghapus kode saat tidak digunakan. Komputasi tanpa server mencegah kapasitas dan daya komputasi yang terbuang dan mengurangi biaya karena Anda hanya membayar untuk menjalankan kode saat benar-benar berjalan.
Tekton adalah sebuah kerangka kerja sumber terbuka dan netral terhadap vendor untuk menciptakan sistem integrasi dan pengiriman berkelanjutan (CI/CD), yang diatur oleh Continuous Delivery Foundation (CDF) (tautan berada di luar ibm.com).
Sebagai kerangka kerja Kubernetes, Tekton membantu memodernisasi pengiriman berkelanjutan dengan menyediakan spesifikasi industri untuk pipeline, alur kerja, dan blok bangunan lainnya, sehingga penerapan di beberapa penyedia cloud atau lingkungan hybrid menjadi lebih cepat dan mudah.
Perlu dicatat bahwa Tekton adalah penerus Knative Build, yang masih didukung di beberapa distribusi Knative. Pipeline Tekton telah menjadi standar untuk membangun citra kontainer dan menerapkannya dalam Container Registry di lingkungan Kubernetes.
Organisasi perusahaan menggunakan Kubernetes untuk mendukung contoh penggunaan berikut ini yang semuanya memainkan peran penting dalam menyusun infrastruktur TI modern.
Cloud native adalah pendekatan pengembangan perangkat lunak untuk membangun, menerapkan, dan mengelola aplikasi berbasis cloud. Manfaat utama dari cloud native adalah memungkinkan DevOps dan tim lain untuk membuat kode sekali dan menerapkannya pada infrastruktur cloud apa pun dari penyedia layanan cloud mana pun.
Proses pengembangan modern ini bergantung pada layanan mikro, pendekatan yang memungkinkan satu aplikasi terdiri dari banyak komponen atau layanan yang lebih kecil yang digabungkan secara longgar dan dapat diterapkan secara independen, yang digunakan dalam kontainer yang dikelola oleh Kubernetes.
Kubernetes membantu memastikan bahwa setiap layanan mikro memiliki sumber daya yang dibutuhkan untuk berjalan secara efektif, sekaligus meminimalkan biaya operasional yang terkait dengan pengelolaan beberapa kontainer secara manual.
Hybrid cloud menggabungkan dan menyatukan public cloud, private cloud, dan infrastruktur pusat data on premises untuk menciptakan infrastruktur TI tunggal yang fleksibel dan hemat biaya.
Saat ini, hybrid cloud telah bergabung dengan multicloud, layanan cloud publik dari lebih dari satu vendor cloud, untuk menciptakan lingkungan multicloud hybrid.
Pendekatan multicloud hybrid menciptakan fleksibilitas yang lebih besar dan mengurangi ketergantungan organisasi pada satu vendor, mencegah vendor lock-in. Karena Kubernetes menciptakan fondasi untuk pengembangan cloud-native, ini adalah kunci untuk adopsi multicloud hybrid.
Kubernetes mendukung penerapan aplikasi cloud skala besar dengan penskalaan otomatis. Proses ini memungkinkan aplikasi untuk meningkatkan atau menurunkan skala, menyesuaikan diri dengan perubahan permintaan secara otomatis, dengan kecepatan, efisiensi, dan waktu henti yang minimal.
Skalabilitas elastis dari penerapan Kubernetes berarti sumber daya dapat ditambahkan atau dihapus berdasarkan perubahan lalu lintas pengguna seperti penjualan kilat pada situs web retail.
Kubernetes menyediakan platform cloud modern yang diperlukan untuk mendukung modernisasi aplikasi, dengan memigrasikan dan mengubah aplikasi lama monolitik menjadi aplikasi cloud yang dibangun di atas arsitektur layanan mikro.
Otomatisasi merupakan inti dari DevOps, yang mempercepat pengiriman perangkat lunak berkualitas tinggi dengan menggabungkan dan mengotomatiskan pekerjaan pengembangan perangkat lunak dan tim operasi TI.
Kubernetes membantu tim DevOps membangun dan memperbarui aplikasi secara cepat dengan mengotomatiskan konfigurasi dan penerapan aplikasi.
Model ML dan model bahasa besar (LLM) yang mendukung AI mencakup komponen yang akan sulit dan memakan waktu untuk dikelola secara terpisah. Dengan mengotomatiskan konfigurasi, penerapan, dan skalabilitas di seluruh lingkungan cloud, Kubernetes membantu memberikan kelincahan dan fleksibilitas yang diperlukan untuk melatih, menguji, dan menerapkan model-model yang kompleks ini.
Jika Anda siap untuk mulai bekerja dengan Kubernetes atau ingin membangun keterampilan Anda dengan alat ekosistem Kubernetes dan Kubernetes, cobalah salah satu tutorial berikut:
Red Hat OpenShift on IBM Cloud menawarkan cara yang cepat dan aman bagi para pengembang untuk mengkontainerisasi dan menerapkan beban kerja perusahaan dalam klaster Kubernetes.
Menerapkan kluster yang kaya keamanan dan sangat tersedia di pengalaman Kubernetes asli.
Menghadirkan lingkungan aplikasi yang bertransformasi dengan bisnis Anda. IBM Cloud Pak for Applications memberikan fleksibilitas tertinggi baik Anda membangun layanan dan aplikasi cloud native baru, atau memfaktorkan ulang atau melakukan platform ulang aplikasi yang ada.
Menerapkan dan menjalankan aplikasi secara konsisten di lingkungan cloud on premises, komputasi edge, dan cloud publik dari vendor cloud mana pun, menggunakan serangkaian layanan cloud yang umum termasuk rantai alat bantu, basis data, dan AI.
Platform tanpa server yang dikelola sepenuhnya, IBM Cloud Code Engine memungkinkan Anda menjalankan kontainer, kode aplikasi, atau pekerjaan batch pada runtime kontainer yang dikelola sepenuhnya.
Penelitian terbaru IBM mendokumentasikan momentum lonjakan adopsi kontainer dan Kubernetes.
Kontainer adalah bagian dari strategi hybrid cloud yang memungkinkan Anda membangun dan mengelola beban kerja dari mana saja.
Serverless adalah model pengembangan dan eksekusi aplikasi cloud yang memungkinkan pengembang membangun dan menjalankan kode tanpa mengelola server atau membayar infrastruktur cloud yang tidak aktif.
Jelajahi contoh bagaimana berkas YAML digunakan di Kubernetes.
Kontainer adalah unit perangkat lunak yang dapat dieksekusi yang di dalamnya kode aplikasi dikemas bersama dengan pustaka dan dependensinya, dengan cara yang umum sehingga kode dapat berjalan di mana saja, baik itu di desktop, IT tradisional, atau cloud.
Docker adalah platform sumber terbuka yang memungkinkan pengembang untuk membangun, menerapkan, menjalankan, memperbarui, dan mengelola komponen-komponen yang dapat dieksekusi dan terstandardisasi dalam kontainer yang menggabungkan kode sumber aplikasi dengan pustaka sistem operasi (OS) dan dependensi yang diperlukan untuk menjalankan kode tersebut di lingkungan apa pun.