GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Mengapa saya harus peduli dengan Kubernetes, Docker, dan Container Orchestration?

Seseorang di tempat kerja mengobrol dengan saya, mengomentari posting blog terbaru saya di Raspberry Pi Kubernetes Clusters yang sedang dibangun, dan bertanya-tanya "mengapa saya harus peduli dengan Kubernetes atau Docker atau sejenisnya?"

Pertanyaan bagus, dan saya mencari tahu sendiri. Ada banyak sumber daya di luar sana tetapi tidak ada yang berbicara bahasa saya, jadi inilah pemikiran saya dan bagaimana saya menjelaskannya.

"Hei, saya punya aplikasi blog baru yang hebat ini!"

"Hebat, beri aku!"

"Tentu, pertama-tama pastikan Anda memiliki versi Windows/Linux ini, versi .NET/Python/Node ini, dan prasyarat ini."

"Tunggu, biar aku meneleponmu minggu depan kalau sudah ditangani."

Ini adalah bagaimana perangkat lunak dibangun selama bertahun-tahun. Sekarang mari kita terapkan.

"Ini kode/dlls/aplikasi yang di-zip."

"Biarkan FTP/SFTP/Seret ini dari satu Jendela Penjelajah ke Jendela Penjelajah lainnya."

"Apakah versi file ini disetel ke ini?"

"Tunggu, apa?"

"Pastikan system/boss/dll/nounjs adalah versi 4.5.4.1, mereka menambalnya."

"Oke, aku diam* masuk ke produksi."

Sekali lagi, kita semua pernah ke sana. Ini tahun 2018 dan ada lebih banyak orang yang melakukan ini daripada yang Anda akui.

Masuk ke Mesin Virtual! Jauh lebih baik, bukan? Berikut adalah kunci USB dengan file yang SEMUA yang Anda butuhkan. Ditangani.

"Lupakan itu, gunakan ini. Ini lebih baik daripada komputer, ini adalah Mesin Virtual. Tapi perlu diketahui, itu tidak tahu itu Virtual, jadi hormati kebohongannya."

"Oke, kirim email ke saya."

"Yah, ini 32 gigs. Biar di-UP."

Aplikasi Anda hanya 100 MB, dan VM ini puluhan gigs. Mengapa orang dengan berat 150 pon membutuhkan Hummer 6000lb? Isolasi, kurasa.

"Aplikasinya semakin kompleks, tapi keren. Ada empat VM sekarang. Satu untuk DB, satu untuk Redis, dan satu front end, dan keranjang belanja mendapat satu. Ini layanan mikro!"

"Aku menyukainya."

"Ini adalah drive 2 TB."

Bagus bahwa kita memecahnya, tetapi tidak begitu baik sehingga kita menjadi kembung. Sekarang kita harus menjalankan apt upgrade/windows update pada semua hal ini dan memeliharanya. Mengapa mengendarai Hummer ketika saya bisa mendapatkan Lyft?

"Oke, saya menjalankan semuanya di mesin gemuk ini di bawah meja saya."

"Keren, kita pindah ke awan."

"Huh. Saya perlu memperbarui semua string koneksi ini dan mulai mengupload VM."

"Akan sangat bagus. Ini seperti mesin di bawah meja Anda, hanya saja meja Anda ada di awan."

"Apa itu awan?"

"Ini adalah ruang server yang tidak bisa Anda lihat. Pada dasarnya ini adalah komputer di bawah meja Anda. Tapi tidak terlihat."

Sebagian besar infrastruktur VM cukup ceroboh. Ini adalah alamat IP yang dikodekan dengan keras, itu adalah VM bernama buruk yang tinggal di subnet yang sama, kemudian kami akan memindahkannya ke cloud (angkat dan geser!) tetapi kemudian mereka masih berantakan, tetapi mereka ada di Cloud™, kan?

"Anda tahu, semua VM ini berat. Saya harus memelihara dan memindahkan banyak hal yang BUKAN aplikasinya. Kontainer adalah caranya. Cukup tentukan kebutuhan dasar aplikasi dan bagikan yang lainnya."

"Saya telah mendengar tentang ini. Saya dapat mengetikkan "docker run hello-world" dan pada mesin apa pun itu akan memuat gambar hello world (berdasarkan Ubuntu) dari hub pusat dan menjalankannya dengan cara yang sebagian besar terisolasi. Dijamin untuk bekerja dan berlari, bahkan seiring berjalannya waktu."

"Bagus, karena semakin banyak bagian dari aplikasi kami di .NET Core di Linux, tetapi ada juga beberapa Python dan node."

"Ya dan semuanya hanya akan berjalan karena prasyaratnya tercantum dengan jelas di penampung...dan persyaratan sebenarnya adalah referensi ke gambar penampung lain."

"Ini kontainer sampai ke bawah."

Sekarang DB, Redis, ujung depan, dan panggilan keranjang belanja dapat didefinisikan dalam beberapa file teks sederhana. Daripada OS Host Anda (komputer utama ... logam) memuat banyak OS Tamu (secara harfiah menyalin!) Dan kemudian memuat semua aplikasi dan prasyarat, Anda akan berbagi OS, dan bila perlu, binari dan perpustakaan .

"Oke, sekarang kami memiliki banyak kontainer yang berjalan di Docker, tetapi terkadang mereka turun atau berhenti."

"Jalankan lagi?"

"Lebih dari itu, terkadang kita membutuhkan 3 kontainer keranjang belanja, dan terkadang kita membutuhkan 2 kontainer DB atau lebih. Ditambah IP mereka terkadang berubah"

"Jadi kami membutuhkan sesuatu untuk membuatnya tetap berjalan, menskalakan atau menskalakannya secara otomatis, serta mengelola jaringan dan penamaan/dns."

Masukkan orkestra kontainer. Ada Docker Swarm, Mesos/Marathon, Azure Service Fabric, dan lainnya, tetapi untuk postingan kali ini kita akan menggunakan Kubernetes.

"Jadi Kubernetes menjalankan container saya, membuatnya tetap berjalan, dan membantu mengelola jaringan?"

"Ya, dan tidak. Bagian dari Kubernetes - atau k8s, seperti yang dikatakan orang keren seperti saya yang telah menggunakannya selama hampir 3 jam - adalah bagian dari komponen master, seperti etcd untuk penyimpanan nilai kunci, dan kube-scheduler untuk memilih node mana untuk menjalankan "pod" (pod lebih keren untuk dikatakan daripada container, tetapi terkadang pod lebih dari satu container. Tetap saja, sangat keren.)

"Saya perlu membuat glosarium."

"Sialan, kamu akan melakukannya."

Kubernetes pada dasarnya memiliki segalanya yang dapat dicolokkan. Tidak suka pengaturan jaringan mereka? Ada lebih dari selusin pilihan. Ingin bagan dan grafik yang lebih baik? Seluruh dunia pilihan.

Sama seperti satu Dockerfile dapat menjelaskan mendeklarasikan apa yang diperlukan untuk menjalankan aplikasi, file YAML Kubernetes menjelaskan tidak hanya container, tetapi juga port yang dibutuhkan, jumlah replika masing-masing (pikirkan web farm), nama, variabel lingkungan, dan banyak lagi. Berikut adalah file yang menunjukkan front end, back end, dan load balancer. Semuanya ada di sana, string koneksi menjadi pencarian DNS internal, setiap layanan memiliki penyeimbang beban (jika Anda mau), dan Anda dapat menskalakan secara manual atau otomatis.

"Oke jadi kenapa aku harus peduli?"

"Beberapa alasan. Dulu, untuk menginstal aplikasi kami, saya perlu memberi Anda dokumen Word dan akhir pekan. Sekarang Anda mengetik kubectl apply theapp.yaml dan itu berjalan dalam waktu kurang dari satu menit."

"Saya masih menagih untuk akhir pekan."

Sederhananya, kami berada di awal fase baru DevOps. Salah satunya adalah programmatic, elastic, dan declarative. Ini konsisten dan jelas dan modular.

Saya sarankan Anda membaca "Alasan Kubernetes keren" Julia Evans serta membaca tentang cara membuat cluster Kubernetes (dan VMS manajemen gratis) di Azure.

* Aku mencoba diam. Kami tidak Es Es Eaytch menjadi mesin! Kami diam! Ini diucapkan di suatu tempat antara shush dan shoosh. Pastikan Anda memberikan sedikit petit jeté saat mengucapkannya.

* Foto digunakan di bawah CC

Sponsor: Bebaskan Python yang lebih cepat Tingkatkan kinerja aplikasi Anda pada platform Intel® yang akan datang dengan Distribusi Intel® untuk Python. Tersedia untuk Windows, Linux, dan macOS. Dapatkan Distribusi Intel® untuk Python* Sekarang!


Docker
  1. Kapan dan Mengapa Menggunakan Docker

  2. Bagaimana dan Mengapa Menggunakan Host Docker Jarak Jauh

  3. Instal Docker dan WordPress Di Ubuntu

  1. Cara:Apa itu Git dan Github? Bagaimana cara menggunakannya dan mengapa saya harus peduli?

  2. Cara Mendapatkan Informasi Tentang Kontainer Di Docker

  3. Cara membuat Gambar Docker dari Wadah dan File Docker

  1. Cara menginstal Docker dan menyebarkan LAMP Stack

  2. Apa itu containerd, Dan Bagaimana Hubungannya dengan Docker dan Kubernetes?

  3. Apa Itu Volume Docker, dan Bagaimana Anda Menggunakannya?