Peranan API Server dalam Kubernetes dan interaksinya dengan komponen lain
Bagaimana pentadbir Kubernetes menjalankan kerja kawal selia "resources" didalam cluster?
Dalam senibina Kubernetes laluan yang menghubungkan bagaimana komunikasi berlaku antara pentadbir dan komponen-komponen lain ialah melalui Kube API Server.
Kube API Server menyediakan fungsi tersebut dengan persekitaran selamat iaitu dengan penggunaan CLI dikenali "kubectl". Sebelum kubectl boleh berhubung dengan API-Server, pentadbir perlu mendapatkan kebenaran akses dan secure apikey. Maklumat tersebut akan diletakkan didalam file config.
API Server (kube-apiserver
) adalah komponen utama dalam Kubernetes yang berfungsi sebagai pintu masuk (gateway) untuk semua komunikasi dalam cluster. Ia bertindak sebagai pusat kawalan yang mengurus permintaan dari pengguna, alat (seperti kubectl
), dan komponen Kubernetes lain. API Server memastikan semua interaksi dalam cluster adalah konsisten, selamat, dan mengikut polisi yang ditetapkan.
Gambarajah dibawah menunjukkan 2 cara bagaimana kubernetes cluster diakses melalui kubectl dan juga web-admin portal:
Berikut adalah penjelasan tentang bagaimana API Server berfungsi dan berinteraksi dengan komponen-komponen lain dalam Kubernetes cluster:
1. Fungsi Utama API Server
API Server mempunyai beberapa peranan penting:
-
Menerima dan Memproses Permintaan: API Server menerima permintaan RESTful API dari pengguna atau komponen lain, seperti
kubectl
, Dashboard Kubernetes, atau alat automasi. - Mengesahkan dan Membenarkan Permintaan: API Server memastikan permintaan adalah sah dengan mengesahkan identiti pengguna (authentication) dan memeriksa kebenaran (authorization) menggunakan mekanisme seperti RBAC.
- Mengemas Kini State Cluster: API Server menyimpan state terkini cluster dalam etcd, sebuah penyimpanan key-value yang terdistribusi.
- Menyediakan Antaramuka Konsisten: API Server menyediakan antaramuka yang konsisten untuk semua komponen Kubernetes, memudahkan komunikasi antara komponen.
2. Interaksi API Server dengan Komponen Lain
a. etcd
- Peranan: etcd adalah penyimpanan key-value terdistribusi yang menyimpan semua data konfigurasi dan state cluster.
- Interaksi dengan API Server: API Server berkomunikasi dengan etcd untuk membaca dan menulis data. Setiap perubahan dalam cluster (seperti mencipta Pod atau Deployment) akan disimpan dalam etcd melalui API Server.
b. Controller Manager (kube-controller-manager
)
- Peranan: Controller Manager mengurus pelbagai controller yang memastikan state cluster sepadan dengan konfigurasi yang diinginkan.
- Interaksi dengan API Server: Controller Manager sentiasa memantau state cluster melalui API Server. Contohnya, jika bilangan Pod dalam Deployment tidak sepadan dengan konfigurasi, Controller Manager akan meminta API Server untuk mencipta atau memadam Pod.
c. Scheduler (kube-scheduler
)
- Peranan: Scheduler bertanggungjawab untuk menempatkan Pod pada nod yang sesuai berdasarkan keperluan sumber dan polisi.
- Interaksi dengan API Server: Scheduler menerima maklumat tentang Pod yang perlu dijadualkan melalui API Server. Selepas memilih nod yang sesuai, Scheduler akan memaklumkan API Server untuk mengemas kini state Pod.
d. Kubelet
- Peranan: Kubelet adalah agen yang berjalan pada setiap nod dan bertanggungjawab untuk memastikan kontena berjalan seperti yang ditetapkan.
- Interaksi dengan API Server: Kubelet sentiasa berkomunikasi dengan API Server untuk menerima arahan (seperti menjalankan Pod) dan melaporkan status nod dan Pod.
e. Kube Proxy
- Peranan: Kube Proxy mengurus peraturan rangkaian untuk membolehkan komunikasi antara Pod dan Service.
- Interaksi dengan API Server: Kube Proxy menerima maklumat tentang Service dan Endpoints dari API Server dan mengemas kini peraturan rangkaian pada nod.
f. Pengguna dan Alat (seperti kubectl
)
-
Peranan: Pengguna dan alat seperti
kubectl
berinteraksi dengan Kubernetes untuk mengurus sumber seperti Pod, Deployment, dan Service. - Interaksi dengan API Server: Semua permintaan dari pengguna atau alat dihantar ke API Server. API Server akan memproses permintaan tersebut dan mengemas kini state cluster jika perlu.
3. Proses Komunikasi API Server
Berikut adalah contoh aliran komunikasi antara API Server dan komponen lain:
-
Pengguna Menghantar Permintaan: Pengguna menggunakan
kubectl
untuk mencipta Deployment.
kubectl create deployment nginx --image=nginx
- API Server Mengesahkan dan Membenarkan: API Server mengesahkan identiti pengguna dan memeriksa kebenaran menggunakan RBAC.
- API Server Menyimpan Data dalam etcd: API Server menyimpan maklumat Deployment dalam etcd.
- Controller Manager Memantau Perubahan: Controller Manager memerhatikan perubahan dalam etcd melalui API Server dan memastikan bilangan Pod yang diperlukan dicipta.
- Scheduler Menjadualkan Pod: Scheduler menerima maklumat tentang Pod yang perlu dijadualkan dan memilih nod yang sesuai.
- Kubelet Menjalankan Pod: Kubelet pada nod yang dipilih menerima arahan dari API Server dan memulakan kontena.
- Kube Proxy Mengemas Kini Peraturan Rangkaian: Kube Proxy menerima maklumat tentang Service dan mengemas kini peraturan rangkaian untuk membolehkan komunikasi.
4. Keselamatan API Server
API Server dilindungi oleh beberapa lapisan keselamatan:
- Authentication: Mengesahkan identiti pengguna menggunakan token, sertifikat, atau kaedah lain.
- Authorization: Memeriksa kebenaran pengguna menggunakan RBAC atau polisi lain.
- Admission Control: Memproses permintaan tambahan seperti mengesahkan konfigurasi atau mengubah permintaan sebelum diterima.
5. Kelebihan API Server
- Pusat Kawalan Tunggal: Semua komunikasi dalam cluster melalui API Server, memudahkan pengurusan dan pemantauan.
- Konsistensi: API Server memastikan state cluster sentiasa konsisten dengan menyelaraskan semua perubahan melalui etcd.
- Keselamatan: API Server menyediakan lapisan keselamatan yang kukuh untuk melindungi cluster.
Untuk infra developer yang ingin membangunkan aplikasi UI untuk berinteraksi dengan API-Server boleh menggunakan protokol RESTFul. Terdapat beberapa aplikasi Admin Management dipasaran untuk memudahkan kerja kawal selia pentadbir.
1. Kubernetes Dashboard
Kubernetes Dashboard adalah antara muka pengguna web yang rasmi untuk Kubernetes. Ia menyediakan antara muka yang mudah digunakan untuk mengurus cluster Kubernetes, termasuk melihat dan mengurus "resources" seperti Pod, Services, Deployment, dan lain-lain.
2. Lens
Lens adalah IDE Kubernetes yang menyediakan antara muka pengguna yang kaya dan interaktif untuk mengurus cluster Kubernetes. Ia tersedia untuk Windows, macOS, dan Linux.
3. Rancher
Rancher adalah platform pengurusan cluster Kubernetes yang menyediakan antara muka pengguna yang menarik untuk mengurus cluster Kubernetes. Ia juga menyediakan ciri-ciri tambahan seperti pengurusan akses dan keselamatan.
4. Octant
Octant adalah antara muka pengguna web yang ringan untuk Kubernetes yang menyediakan antara muka yang mudah digunakan untuk mengurus dan memantau kluster Kubernetes.
5. KubeSphere
KubeSphere adalah platform pengurusan kluster Kubernetes yang menyediakan antara muka pengguna yang kuat untuk mengurus cluster Kubernetes.
6. OpenShift Console
OpenShift Console adalah antara muka pengguna web untuk Red Hat OpenShift, sebuah platform Kubernetes yang dikembangkan oleh Red Hat. Ia menyediakan antara muka yang interaktif untuk mengurus dan memantau cluster Kubernetes.
Top comments (0)