Kubernetes

**Kubernetes** (selalunya disingkatkan kepada **k8s**) ialah sebuah sistem sumber terbuka untuk mengautomasi pengerahan, penskalaan, dan pengurusan aplikasi-aplikasi berkontena. Ia pada mulanya direka oleh Google dan kini diselenggara oleh Yayasan Pengkomputeran Asli Awan. Kubernetes mampu berfungsi dengan pelbagai peralatan kontena termasuk docker dan rkt. Kebanyakan perkhidmatan awan menawarkan pelantar atau infrastruktur berasaskan Kubernetes sebagai perkhidmatan (PaaS atau IaaS) di mana Kubernetes boleh dikerahkan sebagai khidmat pemberi pelantar.

## Sejarah

Kubernetes (, "gabenor", "jurumudi" atau "kapten" dalam bahasa Yunani) telah diasaskan oleh Joe Beda, Brendan Burns dan Craig McLuckie. Tidak lama kemudian jurutera-jurutera Google lain termasuk Brian Grant dan Tim Hockin pun turut serta. Projek ini julung kali diumumkan oleh Google pada pertengahan tahun 2014. Pembangunan dan reka bentuknya banyak dipengaruhi oleh sistem Borg oleh Google, malahan ramai penyumbang projek ini pernah terlibat dengan sistem tersebut. Nama kod asal bagi Kubernetes di Google ialah Project Seven sempena Seven of Nine, seorang Borg yang lebih mesra di dalam Star Trek. Tujuh ruji pada roda di dalam logo Kubernetes merujuk kepada nama kod tersebut. Projek Borg yang asal ditulis sepenuhnya dalam C++, tetapi sistem Kubernetes yang ditulis semula dilaksanakan dalam Go.

Kubernetes v1.0 telah dikeluarkan pada 21 Julai 2015. Seiring dengan keluaran Kubernetes v1.0, Google berkerja sama dengan Yayasan Linux telah membentuk Yayasan Pengkomputeran Asli Awan (*Cloud Native Computing Foundation*, CNCF) dan menawarkan Kubernetes sebagai teknologi permulaannya. Pada 6 Mac 2018, Projek Kubernetes mendapat tempat ke-9 mengikut jumlah lakuan (*commit*) di GitHub, dan tempat kedua mengikut pengarang dan isu kepada inti Linux.

## Objek-objek Kubernetes
Kubernetes menetapkan satu set blok binaan ("primitif") yang bersama-sama memberikan mekanisma yang mengerah, menyelenggara, dan menskala aplikasi-aplikasi berdasarkan CPU, ingatan, atau metrik-metrik tersuai. Kubernetes digandingkan secara longgar (*loosly coupled*) dan boleh diperluas supaya mampu menampung beban kerja berlainan. Sebahagian besar kebolehperluasan ini disediakan oleh Kubernetes API, yakni API yang digunakan oleh komponen-komponen dalaman, perluasan-perluasan (*extension*) dan kontena-kontena yang dijalankan pada Kubernetes.

### Pod
Unit penjadualan asas dalam Kubernetes ialah *pod*. Ia meninggikan tahap pengabstrakan dengan mengelompokan komponen-komponen berkontena. Satu pod terdiri daripada satu atau lebih kontena yang dijamin diletakkan di tempat yang sama di mesin hos dan boleh berkongsi sumber.

Setiap pod di dalam Kubernetes diberikan *[[alamat IP]] Pod* yang unik di dalam gugusan, lantas membolehkan aplikasi-aplikasi menggunakan port tertentu tanpa risiko port tersebut sudah digunakan oleh aplikasi lain.

### Perkhidmatan

Perkhidmatan atau servis Kubernetes ialah sekumpulan pod yang bekerjasama, seperti satu peringkat untuk aplikasi berbilang peringkat. Kumpulan pod yang membentuk perkhidmatan ditentukan dengan menggunakan pemilih label (*label selector*).

### Jilid
Sistem fail di dalam kontena Kubernetes secara lalai menyediakan storan sementara. Ini bermakna jika kontena sebegini dimulakan semula, semua datanya akan hilang, dan oleh yang demikan, storan sebegini adalah suatu batasan dalam semua jenis aplikasi kecuali aplikasi ringkas. Jilid (*volume*) Kubernetes menyediakan storan kekal yang kekal sepanjang hayat pod yang terbabit. Storan sebegini turut boleh dijadikan sebagai ruang cakera kongsian bagi kontena-kontena di dalam sesebuah pod.

### Ruang nama
Kubernetes menyediakan penyekatan (*partitioning*) sumber-sumber yang diurusnya kepada set-set yang tidak bertindih dipanggil ruang nama (*namespace*). Ia bertujuan untuk digunakan di dalam persekitaran yang mempunyai ramai pengguna dari pelbagai pasukan, projek, mahupun persekitaran berasingan seperti persekitaran pembangunan, ujian dan pengeluaran (*production*).

## Rujukan

## Pautan luar
*