GNU/Linux >> Belajar Linux >  >> Cent OS

Memahami Arsitektur Kubernetes dengan Diagram

Pendahuluan

Tutorial ini adalah yang pertama dari serangkaian artikel yang berfokus pada Kubernetes dan konsep penyebaran container. Kubernetes adalah alat yang digunakan untuk mengelola klaster aplikasi dalam container. Dalam komputasi, proses ini sering disebut sebagai orkestrasi .

Analogi dengan orkestra musik, dalam banyak hal, cocok. Seperti halnya konduktor, Kubernetes mengoordinasikan banyak layanan mikro yang bersama-sama membentuk aplikasi yang berguna. Kubernetes secara otomatis dan terus-menerus memantau cluster dan membuat penyesuaian pada komponennya.

Memahami arsitektur Kubernetes sangat penting untuk menerapkan dan memelihara aplikasi dalam container.

Apa itu Kubernetes?

Kubernetes, atau k8s singkatnya, adalah sistem untuk mengotomatisasi penerapan aplikasi. Aplikasi modern tersebar di cloud, mesin virtual, dan server. Mengelola aplikasi secara manual bukan lagi pilihan yang layak.

K8s mengubah mesin virtual dan fisik menjadi permukaan API terpadu. Pengembang kemudian dapat menggunakan Kubernetes API untuk men-deploy, menskalakan, dan mengelola aplikasi dalam container.

Arsitekturnya juga menyediakan kerangka kerja yang fleksibel untuk sistem terdistribusi. K8 secara otomatis mengatur penskalaan dan failover untuk aplikasi Anda dan menyediakan pola penerapan.

Ini membantu mengelola container yang menjalankan aplikasi dan memastikan tidak ada waktu henti di lingkungan produksi. Misalnya, jika sebuah wadah mati, wadah lain secara otomatis menggantikannya tanpa diketahui oleh pengguna akhir.

Kubernetes bukan hanya sistem orkestrasi. Ini adalah satu set independen, proses kontrol yang saling berhubungan. Perannya adalah untuk terus bekerja pada keadaan saat ini dan memindahkan proses ke arah yang diinginkan.

Lihat artikel kami tentang Apa itu Kubernetes jika Anda ingin mempelajari lebih lanjut tentang orkestrasi container.

Arsitektur dan Komponen Kubernetes

Kubernetes memiliki arsitektur terdesentralisasi yang tidak menangani tugas secara berurutan. Ini berfungsi berdasarkan model deklaratif dan mengimplementasikan konsep 'keadaan yang diinginkan .’ Langkah-langkah ini menggambarkan proses dasar Kubernetes:

  1. Seorang administrator membuat dan menempatkan status aplikasi yang diinginkan ke dalam file manifes.
  2. File disediakan ke Kubernetes API Server menggunakan CLI atau UI. Alat baris perintah default Kubernetes disebut kubectl . Jika Anda memerlukan daftar lengkap perintah kubectl, lihat Lembar Cheat Kubectl kami.
  3. Kubernetes menyimpan file (status aplikasi yang diinginkan) dalam database yang disebut Key-Value Store (dll) .
  4. Kubernetes kemudian mengimplementasikan status yang diinginkan pada semua aplikasi yang relevan di dalam cluster.
  5. Kubernetes terus memantau elemen cluster untuk memastikan status aplikasi saat ini tidak berbeda dari status yang diinginkan.

Sekarang kita akan menjelajahi komponen individual dari cluster Kubernetes standar untuk memahami prosesnya secara lebih rinci.

Apa itu Master Node dalam Arsitektur Kubernetes?

Master Kubernetes (Master Node) menerima input dari CLI (Command-Line Interface) atau UI (User Interface) melalui API. Ini adalah perintah yang Anda berikan ke Kubernetes.

Anda menentukan pod, set replika, dan layanan yang Anda ingin Kubernetes pertahankan. Misalnya, image container mana yang akan digunakan, port mana yang akan diekspos, dan berapa banyak replika pod yang harus dijalankan.

Anda juga memberikan parameter status yang diinginkan untuk aplikasi yang berjalan di cluster tersebut.

Node Master Kubernetes

Server API

Server API adalah ujung depan bidang kontrol dan satu-satunya komponen di bidang kontrol yang berinteraksi langsung dengan kita. Komponen sistem internal, serta komponen pengguna eksternal, semuanya berkomunikasi melalui API yang sama.

Penyimpanan Nilai Kunci (dst)

Toko Nilai Kunci, juga disebut dll , adalah database yang digunakan Kubernetes untuk mencadangkan semua data cluster. Ini menyimpan seluruh konfigurasi dan status cluster. Node Master menanyakan etcd untuk mengambil parameter status node, pod, dan container.

Pengontrol

Peran Pengontrol adalah untuk mendapatkan status yang diinginkan dari Server API. Ini memeriksa status node saat ini yang ditugaskan untuk mengontrol, dan menentukan apakah ada perbedaan, dan menyelesaikannya, jika ada.

Penjadwal

Penjadwal mengawasi permintaan baru yang datang dari Server API dan menetapkannya ke node yang sehat. Ini memberi peringkat kualitas node dan menyebarkan pod ke node yang paling cocok. Jika tidak ada node yang cocok, pod akan berada dalam status pending sampai node tersebut muncul.

Apa itu Worker Node di Arsitektur Kubernetes?

Node pekerja mendengarkan Server API untuk tugas kerja baru; mereka menjalankan tugas kerja dan kemudian melaporkan hasilnya kembali ke node Master Kubernetes.

Node Pekerja Kubernetes

Kubelet

kubelet berjalan pada setiap node dalam cluster. Ini adalah agen utama Kubernetes. Dengan menginstal kubelet, CPU, RAM, dan penyimpanan node menjadi bagian dari cluster yang lebih luas. Itu mengawasi tugas yang dikirim dari Server API, menjalankan tugas, dan melaporkan kembali ke Master. Itu juga memonitor pod dan melaporkan kembali ke panel kontrol jika pod tidak berfungsi penuh. Berdasarkan informasi tersebut, Master kemudian dapat memutuskan bagaimana mengalokasikan tugas dan sumber daya untuk mencapai keadaan yang diinginkan.

Waktu Proses Penampung

Waktu proses penampung menarik gambar dari registri gambar kontainer dan memulai dan menghentikan kontainer. Perangkat lunak atau plugin pihak ketiga, seperti Docker, biasanya menjalankan fungsi ini.

Kube-proxy

kube-proxy memastikan bahwa setiap node mendapatkan alamat IP-nya, mengimplementasikan iptables local lokal dan aturan untuk menangani perutean dan penyeimbangan beban lalu lintas.

Pod

Sebuah pod adalah elemen penjadwalan terkecil di Kubernetes. Tanpa itu, sebuah wadah tidak dapat menjadi bagian dari sebuah cluster. Jika Anda perlu menskalakan aplikasi, Anda hanya dapat melakukannya dengan menambahkan atau menghapus pod.

Pod berfungsi sebagai 'pembungkus' untuk satu wadah dengan kode aplikasi. Berdasarkan ketersediaan sumber daya, Master menjadwalkan pod pada node tertentu dan berkoordinasi dengan runtime container untuk meluncurkan container.

Jika pod tiba-tiba gagal menjalankan tugasnya, Kubernetes tidak akan mencoba memperbaikinya. Sebagai gantinya, ia membuat dan memulai pod baru sebagai gantinya. Pod baru ini adalah replika, kecuali DNS dan alamat IP. Fitur ini memiliki dampak besar pada cara pengembang mendesain aplikasi.

Karena sifat arsitektur Kubernetes yang fleksibel, aplikasi tidak perlu lagi terikat pada instance tertentu dari sebuah pod. Sebagai gantinya, aplikasi perlu dirancang agar pod yang sama sekali baru, yang dibuat di mana saja di dalam cluster, dapat menggantikannya dengan mulus. Untuk membantu proses ini, Kubernetes menggunakan layanan .

Layanan Kubernetes

Pod tidak konstan. Salah satu fitur terbaik yang ditawarkan Kubernetes adalah pod yang tidak berfungsi diganti dengan yang baru secara otomatis.

Namun, pod baru ini memiliki set IP yang berbeda. Ini dapat menyebabkan masalah pemrosesan, dan IP churn karena IP tidak lagi cocok. Jika dibiarkan tanpa pengawasan, properti ini akan membuat pod sangat tidak dapat diandalkan.

Layanan diperkenalkan untuk menyediakan jaringan yang andal dengan menghadirkan alamat IP dan nama DNS yang stabil ke dunia pod yang tidak stabil.

Dengan mengontrol lalu lintas yang datang dan pergi ke pod, layanan Kubernetes menyediakan titik akhir jaringan yang stabil – IP tetap, DNS, dan port. Melalui layanan, setiap pod dapat ditambahkan atau dihapus tanpa takut informasi jaringan dasar akan berubah dengan cara apa pun.

Bagaimana Cara Kerja Layanan Kubernetes?

Pod dikaitkan dengan layanan melalui pasangan nilai kunci yang disebut label dan pemilih . Sebuah layanan secara otomatis menemukan pod baru dengan label yang cocok dengan pemilih.

Proses ini menambahkan pod baru ke layanan dengan lancar, dan pada saat yang sama, menghapus pod yang dihentikan dari cluster.

Misalnya, jika status yang diinginkan menyertakan tiga replika pod dan sebuah simpul yang menjalankan satu replika gagal , status saat ini dikurangi menjadi dua pod. Kubernetes mengamati bahwa keadaan yang diinginkan adalah tiga buah pod. Kemudian menjadwalkan satu replika baru untuk menggantikan pod yang gagal dan menugaskannya ke node lain dalam cluster.

Hal yang sama akan berlaku saat memperbarui atau menskalakan aplikasi dengan menambahkan atau menghapus pod. Setelah kami memperbarui status yang diinginkan, Kubernetes melihat perbedaan tersebut dan menambahkan atau menghapus pod agar sesuai dengan file manifes. Panel kontrol Kubernetes merekam, mengimplementasikan, dan menjalankan loop rekonsiliasi latar belakang yang terus menerus memeriksa untuk melihat apakah lingkungan cocok dengan persyaratan yang ditentukan pengguna.

Apa itu Penempatan Kontainer?

Untuk sepenuhnya memahami bagaimana dan apa yang diatur oleh Kubernetes, kita perlu mempelajari konsep penempatan container .

Penerapan Tradisional

Awalnya, pengembang menyebarkan aplikasi pada server fisik individu. Jenis penyebaran ini menimbulkan beberapa tantangan. Berbagi sumber daya fisik berarti bahwa satu aplikasi dapat menghabiskan sebagian besar daya pemrosesan, membatasi kinerja aplikasi lain pada mesin yang sama.

Penerapan Tradisional

Perlu waktu lama untuk memperluas kapasitas perangkat keras, yang pada gilirannya meningkatkan biaya. Untuk mengatasi keterbatasan perangkat keras, organisasi mulai memvirtualisasikan mesin fisik.

Penerapan Virtual

Penerapan virtual memungkinkan Anda membuat lingkungan virtual yang terisolasi, Mesin Virtual (VM) , pada satu server fisik. Solusi ini mengisolasi aplikasi dalam VM, membatasi penggunaan sumber daya, dan meningkatkan keamanan. Sebuah aplikasi tidak dapat lagi secara bebas mengakses informasi yang diproses oleh aplikasi lain.

Penerapan Virtual

Penerapan virtual memungkinkan Anda menskalakan dengan cepat dan menyebarkan sumber daya dari satu server fisik, memperbarui sesuka hati, dan menjaga biaya perangkat keras tetap terkendali. Setiap VM memiliki sistem operasinya sendiri dan dapat menjalankan semua sistem yang diperlukan di atas perangkat keras tervirtualisasi.

Penempatan Kontainer

Container Deployment adalah langkah berikutnya dalam upaya untuk menciptakan model yang lebih fleksibel dan efisien. Sama seperti VM, container memiliki memori individual, file sistem, dan ruang pemrosesan. Namun, isolasi yang ketat tidak lagi menjadi faktor pembatas.

Beberapa aplikasi sekarang dapat berbagi sistem operasi dasar yang sama. Fitur ini membuat container jauh lebih efisien daripada VM full-blown. Mereka portabel di seluruh awan, perangkat yang berbeda, dan hampir semua distribusi OS.

Penempatan Kontainer

Struktur container juga memungkinkan aplikasi berjalan sebagai bagian yang lebih kecil dan independen. Bagian-bagian ini kemudian dapat digunakan dan dikelola secara dinamis di beberapa mesin. Struktur yang rumit dan segmentasi tugas terlalu rumit untuk dikelola secara manual.

Solusi otomatisasi, seperti Kubernetes, diperlukan untuk mengelola semua bagian bergerak yang terlibat dalam proses ini secara efektif.


Cent OS
  1. Memahami panggilan sistem di Linux dengan strace

  2. Cara Menginstal Kubernetes dengan Minikube di Ubuntu 20.04

  3. Siapkan cluster Kubernetes dengan Rancher

  1. Penjelasan Arsitektur Apache Hadoop (dengan Diagram)

  2. Cara Mengatur Cluster Kubernetes dengan Rancher

  3. Kembalikan ke Status Bekerja Dengan btrfs + apt-btrfs-snapshot Di Ubuntu 12.10

  1. Ansible vs Kubernetes:Memahami Perbedaan

  2. Cara Memantau Kubernetes Dengan Prometheus

  3. Cara Menginstal Kubernetes(k8s) dengan Minikube di CentOS 8