Kubernetes - API

Kubernetes API berfungsi sebagai fondasi untuk skema konfigurasi deklaratif untuk sistem. Kubectlalat baris perintah dapat digunakan untuk membuat, memperbarui, menghapus, dan mendapatkan objek API. Kubernetes API bertindak sebagai komunikator di antara berbagai komponen Kubernetes.

Menambahkan API ke Kubernetes

Menambahkan API baru ke Kubernetes akan menambahkan fitur baru ke Kubernetes, yang akan meningkatkan fungsionalitas Kubernetes. Namun, di samping itu juga akan meningkatkan biaya dan pemeliharaan sistem. Untuk menciptakan keseimbangan antara biaya dan kompleksitas, ada beberapa set yang ditentukan untuknya.

API yang ditambahkan harus berguna bagi lebih dari 50% pengguna. Tidak ada cara lain untuk mengimplementasikan fungsionalitas di Kubernetes. Keadaan luar biasa dibahas dalam pertemuan komunitas Kubernetes, dan kemudian API ditambahkan.

Perubahan API

Untuk meningkatkan kapabilitas Kubernetes, perubahan terus-menerus diperkenalkan ke sistem. Hal ini dilakukan oleh tim Kubernetes untuk menambahkan fungsionalitas ke Kubernetes tanpa menghapus atau memengaruhi fungsionalitas sistem yang ada.

Untuk mendemonstrasikan proses umum, berikut adalah contoh (hipotetis) -

  • Seorang pengguna mengeposkan objek Pod ke /api/v7beta1/...

  • JSON tidak diatur menjadi v7beta1.Pod struktur

  • Nilai default diterapkan ke v7beta1.Pod

  • Itu v7beta1.Pod diubah menjadi api.Pod struktur

  • Itu api.Pod divalidasi, dan setiap kesalahan dikembalikan ke pengguna

  • Itu api.Pod diubah menjadi v6.Pod (karena v6 adalah versi stabil terbaru)

  • Itu v6.Pod disusun menjadi JSON dan ditulis ke etcd

Sekarang setelah kita menyimpan objek Pod, pengguna bisa MENDAPATKAN objek itu dalam versi API yang didukung. Misalnya -

  • Seorang pengguna MENDAPATKAN Pod dari /api/v5/...

  • JSON dibaca etcd dan unmarshalled menjadi v6.Pod struktur

  • Nilai default diterapkan ke v6.Pod

  • Itu v6.Pod diubah menjadi struktur api.Pod

  • Itu api.Pod diubah menjadi v5.Pod struktur

  • Itu v5.Pod diatur ke dalam JSON dan dikirim ke pengguna

Implikasi dari proses ini adalah bahwa perubahan API harus dilakukan dengan hati-hati dan kompatibel ke belakang.

Pembuatan Versi API

Untuk mempermudah dalam mendukung banyak struktur, Kubernetes mendukung beberapa versi API, masing-masing di jalur API yang berbeda seperti /api/v1 atau /apsi/extensions/v1beta1

Standar pembuatan versi di Kubernetes didefinisikan dalam beberapa standar.

Tingkat Alfa

  • Versi ini mengandung alfa (misalnya v1alpha1)

  • Versi ini mungkin bermasalah; versi yang diaktifkan mungkin memiliki bug

  • Dukungan untuk bug dapat dihentikan kapan saja.

  • Direkomendasikan untuk digunakan dalam pengujian jangka pendek hanya karena dukungan mungkin tidak selalu ada.

Tingkat Beta

  • Nama versi mengandung beta (mis. V2beta3)

  • Kode sepenuhnya diuji dan versi yang diaktifkan seharusnya stabil.

  • Dukungan fitur tidak akan hilang; mungkin ada beberapa perubahan kecil.

  • Direkomendasikan hanya untuk penggunaan yang tidak penting bagi bisnis karena potensi perubahan yang tidak kompatibel dalam rilis berikutnya.

Tingkat Stabil

  • Nama versinya adalah vX dimana X adalah bilangan bulat.

  • Versi fitur yang stabil akan muncul di perangkat lunak yang dirilis untuk banyak versi berikutnya.