.
Maksud Docker Dan Kubernetes Dari Perspektif Senibina
Memahami kedua-dua Docker dan Kubernetes adalah penting jika kita mahu membina dan menjalankan infrastruktur awan moden. Lebih penting lagi untuk memahami bagaimana penyelesaian arkitek dan pemaju boleh menggunakannya semasa mereka bentuk penyelesaian berasaskan awan yang berbeza. Kedua-dua VM dan Kontena ini bertujuan untuk meningkatkan penggunaan pelayan dan mengurangkan pemisahan pelayan fizikal dan jumlah kos pemilikan untuk jabatan IT. Walau bagaimanapun, jika kita dapat melihat pertumbuhan dari segi penggunaan dalam beberapa tahun kebelakangan ini, terdapat pertumbuhan eksponen dalam penggunaan awan berasaskan kontena.
Asas-asas Konsep VM dan Docker
Mesin maya menyediakan keupayaan untuk mencontohi OS berasingan (tetamu), dan dengan itu komputer yang berasingan, dari dalam OS anda yang sedia ada (tuan rumah).Mesin Maya terdiri daripada ruang pengguna ditambah ruang kernel bagi sistem operasi. VM berjalan di atas mesin fizikal menggunakan "hypervisor," juga dikenali sebagai pengurus mesin maya, yang merupakan program yang membolehkan sistem operasi berbilang untuk berkongsi hos perkakasan tunggal.
Terdapat dua mod operasi dalam CPU, mod pengguna dan mod kernel. Apabila kita memulakan aplikasi mod pengguna, OS mewujudkan satu proses dengan ruang alamat maya peribadi untuk dimainkan. Kami mungkin mempunyai banyak proses pengguna ruang yang berjalan tetapi mereka boleh dibuat untuk dijalankan secara berasingan supaya jika satu proses runtuh maka proses lain tidak terluka. Walau bagaimanapun, proses pengguna mungkin memerlukan perkhidmatan khas dari OS (misalnya, I / O, penciptaan proses kanak-kanak, dan sebagainya) yang boleh dicapai dengan melaksanakan panggilan sistem yang memindahkan proses ke mod kernel secara sementara dengan kaedah yang dikenali sebagai perangkap. Arahan yang hanya boleh dilaksanakan dalam mod kernel (misalnya, panggilan sistem) dipanggil arahan yang sensitif. Terdapat juga satu set arahan yang boleh dijebak jika dilaksanakan dalam mod pengguna dipanggil sebagai arahan istimewa.
Kontena adalah satu cara perisian pembungkusan, terutamanya semua kod aplikasi, perpustakaan dan kebergantungan. Mereka menyediakan persekitaran maya yang ringan yang mengelompokkan dan mengasingkan satu set proses dan sumber seperti memori, CPU, cakera, dan lain-lain, dari tuan rumah dan mana-mana bekas lain. Pengasingan menjamin bahawa apa-apa proses di dalam bekas tidak dapat melihat apa-apa proses atau sumber di luar bekas. Sebuah bekas menyediakan operasi virtualisasi peringkat sistem dengan abstrak ruang pengguna. Kontena juga menyediakan kebanyakan ciri yang disediakan oleh mesin maya seperti alamat IP, pemasangan volum, pengurusan sumber (CPU, memori, cakera), SSH (exec), imej OS, dan imej bekas, tetapi kontena tidak menyediakan sistem init sebagai bekas direka untuk menjalankan satu proses. Secara amnya, kontena menggunakan ciri-ciri kernel Linux seperti ruang nama (ipc, uts, mount, pid, rangkaian dan pengguna), kumpulan untuk menyediakan lapisan abstraksi di atas contoh kernel sedia ada untuk mewujudkan persekitaran terpencil yang serupa dengan mesin maya.
Rajah 1: Perbezaan antara VM dan Container
Ruang nama: Salah satu fungsi OS yang membolehkan perkongsian sumber global seperti rangkaian dan cakera untuk proses iaitu sumber global dibungkus dalam ruang nama supaya ia hanya dapat dilihat oleh proses-proses yang berjalan dalam ruang nama yang sama. Kita boleh mengambil contoh di mana pengguna perlu mendapatkan sepotong cakera dan meletakkannya di ruang nama "A" dan kemudian memproses berjalan di ruang nama "B" tidak dapat melihat atau mengaksesnya. Begitu juga, proses dalam ruang nama "A" tidak dapat mengakses apa-apa dalam memori yang diperuntukkan kepada ruang nama "B." Proses juga dalam "A" tidak dapat melihat atau bercakap dengan proses di ruang nama "B." Fungsi namespace ini memberikan pengasingan untuk sumber global dan inilah cara kerja Docker. Kernel OS mengetahui ruang nama yang diberikan kepada proses dan semasa panggilan API ia memastikan proses itu hanya dapat mengakses sumber dalam ruang nama sendiri. Docker menggunakan ruang nama ini bersama-sama untuk mengasingkan dan memulakan penciptaan bekas.
Terdapat beberapa jenis ruang nama dalam kernel yang digunakan oleh Docker, sebagai contoh:
BERSIH: Ia menyediakan bekas dengan pandangan sendiri tentang susunan rangkaian sistem (contohnya alamat IP, jadual Routing, nombor port, yang lain.
PID (ID Proses): Ruang nama PID (arahan Linux "
ps -aux
"PID lajur) menyediakan kontena pandangan imbasan mereka sendiri proses termasuk init independen (PID 1), yang merupakan nenek moyang semua proses.
MNT: Ia menyediakan kontena pandangan sendiri tentang "mount" pada sistem. Oleh itu, proses-proses dalam ruang nama gunung berlainan mempunyai pandangan yang berbeza mengenai hirarki sistem fail.
UTS ( UNIX Timesharing System): Ia menyediakan satu proses untuk mengenal pasti pengenal sistem (iaitu nama host, nama domain, dll.). UTS membolehkan bekas mempunyai nama hos mereka sendiri dan nama domain NIS yang bebas daripada bekas lain dan sistem tuan rumah.
IPC (Komunikasi Interprocess) : Ruang nama IPC bertanggungjawab untuk mengasingkan sumber IPC antara proses yang berjalan di dalam setiap bekas.
USER: Ruang nama ini digunakan untuk mengasingkan pengguna dalam setiap bekas. Ia berfungsi dengan membenarkan kontena mempunyai pandangan yang berbeza dari julat UID (ID pengguna) dan gid (kumpulan ID) yang boleh berbeza di dalam dan di luar ruang nama pengguna yang menyediakan proses untuk mempunyai pengguna yang tidak berharga di luar bekas tanpa mengorbankan keistimewaan akar di dalam bekas.
Kumpulan kawalan (kumpulan): Ini adalah ciri kernel Linux yang mengasingkan dan menguruskan sumber yang berbeza seperti penggunaan CPU, memori, cakera I / O, rangkaian, dan sebagainya. Cgroup juga memastikan bahawa satu bekas tidak membuang salah satu daripada sumber tersebut dan membawa keseluruhan sistem ke bawah.
Bekas Docker
Docker adalah teknologi berasaskan bekas dan bekas hanya ruang pengguna sistem operasi. Pada tahap yang rendah, sebuah bekas hanyalah satu set proses yang terpencil dari seluruh sistem, berjalan dari imej yang berbeza yang menyediakan semua fail yang diperlukan untuk menyokong proses. Ia dibina untuk menjalankan aplikasi. Dalam Docker, bekas yang menjalankan berkongsi kernel OS tuan rumah.Docker adalah projek sumber terbuka berdasarkan bekas Linux. Ia menggunakan ciri-ciri Linux Kernel seperti ruang nama dan kumpulan kawalan untuk membuat bekas di atas sistem pengendalian. Docker melampirkan perisian aplikasi ke dalam kotak yang tidak kelihatan dengan semua yang diperlukan untuk berjalan seperti OS, kod aplikasi, Run-time, alat sistem dan perpustakaan dan lain-lain. Bekas docker dibina dari imej Docker dan imej hanya baca, So Docker menambahkan sistem fail baca-tulis melalui sistem fail baca sahaja imej untuk membuat bekas. Docker pada masa ini merupakan bekas yang paling popular dan mengapa komponen-komponen seni bina yang sangat popular dan berbeza, menggunakan kes akan menerangkan secara terperinci di bawah seksyen.
Komponen Docker:
Docker terdiri daripada enam komponen yang berbeza iaitu:
- Docker Client;
- Docker Daemon;
- Docker Images;
- Pendaftar Docker;
- Kontena
- Enjin Docker
Rajah 2: Komponen Docker Container Tahap Tinggi
Docker Client: Ini adalah alat CLI (Command Line Interface) yang digunakan untuk mengkonfigurasi dan berinteraksi dengan Docker. Apabila pemaju atau pengguna menggunakan arahan seperti
docker run
, klien menghantar arahan ini kepada Docker daemon (dockerd) yang membawa mereka keluar. Perintah docker menggunakan API Docker dan pelanggan Docker boleh berkomunikasi dengan lebih daripada satu daemon.
Docker Daemon: Ini adalah pelayan Docker yang berjalan sebagai daemon. Daemon ini mendengarkan permintaan API dan menguruskan objek Docker (imej, bekas, rangkaian, dan jumlah). Daemon juga boleh berkomunikasi dengan daemon lain untuk menguruskan perkhidmatan Docker.
Imej: Imej adalah templat / snapshot baca sahaja yang digunakan untuk membuat bekas Docker dan Imej-imej ini boleh ditarik dan ditarik dari repositori awam atau swasta.Inilah komponen pembina dermaga. Imej ringan, kecil, dan pantas berbanding dengan Imej Mesin Maya.
Fail dok: Digunakan untuk membina imej
Kontainer: Aplikasi yang dijalankan menggunakan bekas dan kontena adalah contoh yang menjalankan imej. Kita boleh membuat, menjalankan, berhenti, bergerak, atau memadamkan bekas menggunakan CLI dan juga boleh menyambungkan bekas ke satu atau lebih rangkaian, melampirkan storan ke sana, atau membuat imej baru berdasarkan keadaan semasa.
Pendaftar Docker: Ini adalah komponen pengedaran docker atau dipanggil sebagai repositori Pusat imej Dock yang menyimpan imej Docker. Hab Docker dan Docker Cloud adalah pendaftaran awam yang boleh digunakan sesiapa sahaja, dan Docker dikonfigurasikan untuk mencari imej di Hab Docker secara lalai. Apabila kami menggunakan perintah pelarik tarik atau pelindung pantau maka imej yang diperlukan ditarik dari pendaftaran yang dikonfigurasikan kami. Apabila kami menggunakan perintah push docker, imej kami akan didaftarkan ke registry dikonfigurasikan kami. Kami boleh menaik taraf aplikasi dengan menarik versi baru imej dan mengimport semula bekas.
Enjin Docker: Gabungan daemon Docker, API Rehat dan alat CLI
Kelebihan Docker
- Mudah untuk mengalihkan aplikasi antara platform awan
- Mengedarkan dan berkongsi kandungan
- Mempercepat pemaju onboarding
- Memberi kreativiti pemaju
- Menghapuskan ketidakkonsistenan persekitaran
- Perisian kapal lebih cepat
- Mudah untuk skala permohonan
- Isu pemantauan dengan cekap
- Ringan
- Mudah dimulakan (beberapa saat)
- Mudah untuk berhijrah
- Penyelenggaraan OS yang sangat kurang
Kes Use Key Docker
- Memodenkan Aplikasi Tradisional
- DevOps (CI / CD)
- Awan Hibrid
- Microservices
- Pengoptimuman Infrastruktur
- Data besar
Orkestra Container Docker Menggunakan Kubernetes
Dalam persekitaran kluster Docker, terdapat banyak tugas yang diperlukan untuk mengurus seperti penjadualan, komunikasi, dan kebolehkerjaan dan tugas-tugas ini dapat dijaga oleh mana-mana alat orkestrasi yang terdapat di pasaran tetapi beberapa alat yang diakui industri adalah Swap Docker yang Alat penyusun alat docker asli dan "Kubernetes" yang merupakan salah satu projek halaju tertinggi dalam sejarah sumber terbuka.
Kubernetes adalah alat pengurusan kontena (alat orkestrasi) sumber terbuka. Ia adalah tanggungjawab pengurusan kontena termasuk penggunaan kontena, penskalaan, dan penyingkiran bekas dan keseimbangan beban kontena.Terdapat perkhidmatan Kubernet berasaskan Awan yang dipanggil KaaS (Kubenetes sebagai Perkhidmatan) juga tersedia iaitu AWS ECS, EKS, Azure AKS, dan GCP GKE.
Rajah 3: Pandangan Aras Tinggi Kubernetes
Komponen Induk: Komponen induk menyediakan satah kawalan kluster dan bertanggungjawab untuk aktiviti global mengenai kluster seperti penjadualan, mengesan dan menanggapi peristiwa cluster.
- Server API: Mengekspos API Kubernetes dan merupakan bahagian depan untuk pesawat kawalan Kubernetes.Server API adalah titik masuk untuk semua arahan REST yang digunakan untuk mengawal kluster. Ia memproses permintaan REST, mengesahkannya dan melaksanakan logik perniagaan terikat.
- dan lain-lain: Semua data kluster disimpan dalam penyimpanan dll dan kedai kunci-kunci yang sederhana, diedarkan, konsisten. Ia digunakan terutamanya untuk penemuan konfigurasi dan penemuan perkhidmatan. Ia menyediakan API REST untuk operasi CRUD.
- Pengawal-pengurus: Pengurus pengawal menjalankan pengawal yang mengendalikan tugas-tugas rutin dalam kluster seperti Pengawal Replikasi, Pengawal Akhir Pengawal dan lain-lain Pengawal menggunakan pelayan API untuk melihat keadaan bersama kluster dan membuat perubahan pembetulan pada keadaan semasa untuk mengubahnya kepada yang dikehendaki satu.
- Penjadual: Penjadual mempunyai maklumat mengenai sumber yang tersedia pada anggota kelompok. Penjadual juga menonton pod baru yang tidak mempunyai nod yang ditugaskan dan memilih nod untuk dijalankan.
Komponen Nod: Komponen nod berjalan pada setiap nod, mengekalkan polongan dan menyediakannya kepada lingkungan runtime Kubernetes.
- kubelet: Ejen nod utama yang mengawasi pod yang ditugaskan ke simpulnya dan melakukan tindakan untuk menjaga kesihatan dan berfungsi seperti vols pod volum, memuat rahasia pod, mengendalikan bekas, melakukan pemeriksaan kesihatan dan lain-lain. Kubelet mendapat konfigurasi pod dari apiserver dan memastikan bahawa bekas yang diletupkan itu berjalan dan berjalan. Ini adalah perkhidmatan pekerja yang bertanggungjawab untuk berkomunikasi dengan nod induk. Ia juga berkomunikasi dengan etcd, untuk mendapatkan maklumat tentang perkhidmatan dan menulis butiran mengenai yang baru dicipta.
- kube-proxy: Membolehkan abstraksi perkhidmatan Kubernetes dengan mengekalkan peraturan rangkaian pada hos dan melaksanakan penghantaran sambungan.kube-proksi bertindak sebagai proksi rangkaian dan pengimbang beban untuk perkhidmatan pada satu nod pekerja tunggal. Ia menangani routing rangkaian untuk paket TCP dan UDP.
- Docker: Ia digunakan untuk sebenarnya menjalankan bekas. Docker berjalan pada setiap nod pekerja, dan menjalankan pod dikonfigurasi. Ia mengambil alih memuat turun imej dan memulakan bekas.
Diterjemah dari sumber: https://dzone.com/articles/docker-containers-and-kubernetes-an-architectural
.
No comments:
Post a Comment