PuppetConf 2016. Kubernetes untuk administrator sistem. Bagian 2

PuppetConf 2016. Kubernetes untuk administrator sistem. Bagian 1

Tetapkan batas sumber daya. Dengan menggunakan matematika sederhana, Anda dapat menghitung berapa banyak salinan aplikasi yang dapat Anda jalankan - jika satu salinan membutuhkan 1 GB RAM, kemudian memiliki 10 GB memori, Anda dapat menjalankan 10 salinan. Ini tidak perlu dipantau, karena saya tahu bahwa inti dari sistem hanya akan mulai memenuhi kontrak yang ditentukan. Kontrak ini, atau perjanjian antara Anda dan sistem, sangat penting karena jika tersedia, semua alat bekerja lebih baik. Dengan demikian, kami memperkenalkan disiplin eksekusi ke dalam sistem.



Jadi, penjadwal akan meluncurkan ini hanya jika masing-masing replika mendapat 1 GB memori bebas. Jika tidak ada cukup memori, proses tidak akan dimulai. Jadi, saya memasukkan perintah create kubectl, dan setelah eksekusi, wadah mysql akan dibuat.



Ada satu peringatan di sini terkait dengan sistem stateful - Anda memiliki beberapa pilihan. Saya menyoroti sepotong kode di mana saya menunjukkan bahwa saya ingin menggunakan PersistentDisk dari penyedia cloud saya.



Ini bisa berupa NFS, ISCSI atau protokol lain yang menyediakan akses tingkat blok jaringan ke perangkat penyimpanan. Saya melakukan ini untuk memutuskan koneksi penyimpanan saya dari mesin. Jika salah satu mesin gagal, saya bisa membuat ulang proses di komputer lain menggunakan penyimpanan data yang sama. Jika Anda memasang penyimpanan dari host di mana kegagalan terjadi, Anda hanya kehilangan data Anda dan harus mengembalikan semuanya dari cadangan lagi.

Oleh karena itu, tujuan kami adalah agar penyimpanan berjalan lebih cepat karena jaringan kami tumbuh lebih cepat. Ini bukan tentang migrasi, tetapi tentang kemampuan untuk dengan cepat memasang dan melepas penyimpanan di luar mesin. Ini sangat mungkin dilakukan. Mari kita lihat bagaimana keadaannya dengan perapian kita - masih dibuat, dan sekarang saya ingin membuat layanan untuk itu sehingga aplikasi lain dapat menemukan milik kita.



Segera setelah saya membuat layanan ini, Kubernetes akan menghasilkan data DNS, jadi Anda bisa memanggil mysql dan secara otomatis mendeteksi bahwa wadah ini sedang berjalan. Mari kita lanjutkan dan masukkan perintah $ kubectl create –f services / mysql.yaml. Seperti yang Anda lihat, wadah masih dibuat. Omong-omong, Anda dapat menonton video demo ini di situs web saya. Anda melihat seperti apa layanan untuk aplikasi mysql - ini berisi alamat IP cluster, alamat IP eksternal, nomor port, dan protokol jaringan.



Mari kita lihat apa yang terjadi dengan wadah khusus ini. Seperti yang Anda lihat, ini berfungsi.



Jadi, saat ini, saya percaya bahwa aplikasi mysql benar-benar berfungsi. Hal berikutnya yang kita butuhkan adalah aplikasi web. Jadi mari kita gunakan aplikasi yang disebut "lobster", saya mengambilnya di GitHub, ini adalah tiruan dari Hacker News. Ini adalah proyek Ruby-on-Rails, saya baru saja membuat sebuah wadah berdasarkan data yang diberikan di sini dan konfigurasi dasar.



Jika Anda tidak mutakhir: Berita Peretas akan membuat Anda sangat populer di konferensi peretas mana pun. Baca saja apa yang tertulis di sini, dan Anda dapat mendiskusikan semua topik populer dari dunia teknologi komputer. Jadi jika Anda ingin mengesankan orang lain - baca berita portal ini.

Jadi, saya ingin membuat tiruan dari hal ini dan menaruhnya di Internet untuk menghasilkan uang. Tentu saja, ini bukan proyek bisnis nyata, tetapi hanya demonstrasi peluang.
Saat ini saya sedang menyebarkan aplikasi bernama Lobster. Dari rahasiaku, aku mendapatkan URL basis data, dan untuk itu aku menggunakan perintah $ kubectl get secrets. Rahasia juga memiliki nama pengguna dan kata sandi.



Selanjutnya, saya ingin membuat sebuah wadah yang akan berkomunikasi dengan aplikasi saya, yang untuknya saya menggunakan perintah $ kubectl create –f deployments / lobsters.yaml. Seperti yang Anda lihat, aplikasi sedang berjalan.



Selain itu, kami memiliki alamat IP. Saya memasukkan perintah $ kubectl get svc dan menggunakan penyeimbang beban global, yang menunjuk ke halaman dengan alamat IP eksternal 101.198.12.60.





Kami akan pergi ke browser dan mencoba memasukkan alamat ini melalui HTTP. Ya, kesalahan menunggu migrasi! Ini adalah Ruby-on-Rails, jadi saya mengharapkan sesuatu seperti itu.



Jadi, kita perlu migrasi basis data. Kami perlu menjalankan proses ini sekali, dan hanya itu. Namun, kami ingin melakukan ini dengan cara yang sama - tidak ada otorisasi di server, tidak ada server khusus seperti Jump box, kami ingin menghubungi penjadwal dan berkata: "Hei, jalankan tugas ini sekali dan setelah eksekusi, hentikan saja prosesnya!". Artinya, saya ingin menjalankan hanya satu perintah dan keluar. Oleh karena itu, untuk melakukan pemrosesan batch menggunakan perintah $ cat jobs / lobster-db-schema-load.yaml, saya membuat objek Jobs yang mengimplementasikan skema semacam itu.



Bendera perintah rake "db: schema: load" dikirim langsung ke situs web GitHub dan mengatakan: "ambil gambar kode: kelseyhightower / lobster: 2.0.0 dan jalankan perintah ini 1 kali". The restartPolicy: tidak pernah baris di akhir kode memberitahu Kubernetis bahwa ia harus menjalankan ini hanya sekali dan tidak pernah mengulanginya. Saya juga membatasi sumber daya prosesor dan memori, yaitu, saya menunjukkan parameter mesin yang sesuai di mana ini dapat dimulai dan dieksekusi, setelah itu transfer database akan selesai. Jadi saya “letakkan di rel” semua objek Jobs yang harus dijalankan pada sistem menggunakan perintah $ kubectl create –f jobs / lobster-db-schema-load.yaml.
Anda melihat bahwa pekerjaan yang sesuai dibuat, setelah itu saya ketik perintah $ watch kubectl mendapatkan pekerjaan.



Jadi, wadah ditarik ke mesin, penjadwal bekerja, tugas menyapu dibuat. Mari kita kembali dan menyegarkan halaman kesalahan basis data. Seperti yang Anda lihat, sekarang skema kami telah berhasil diimplementasikan.



Selanjutnya saya harus masuk. Saya menggunakan perintah $ kubectl create –f jobs / lobster-db-seed.yaml. Anda melihat bahwa penjadwal masih memuat wadah, dan setelah beberapa detik pekerjaan selesai. Untuk memulai migrasi, kami menggunakan level kode yang sama seperti sebelumnya. Saya masuk ke halaman ini, dan semua yang perlu dilakukan sekarang adalah untuk mendapatkan konten. Konten diperlukan jika kita ingin "mengumpulkan" sejumlah uang. Seperti inilah pertumbuhan peretasan, atau “pertumbuhan peretasan” - Anda pergi ke situs orang lain, mengambil konten dari sana dan mempostingnya di situs Anda sendiri, yang terlihat mirip dengan aslinya.



Tetapi kita tidak hanya membutuhkan konten, tetapi konten yang baik. Ini akan memalukan untuk membiarkan segalanya melayang, jadi saya meminjam berita secara manual. Anda dapat menyalin konten secara otomatis, tetapi itu tidak sah. Jadi saya pilih berita, salin alamat tautan, atur tag "test", centang kotak "Saya penulis cerita yang terletak di URL ini" dan tekan tombol Kirim. Lihat betapa hebatnya berita yang dicuri itu!



Sekarang saatnya untuk mengukur aplikasi. Untuk melakukan ini, Anda hanya perlu mengubah definisi tentang apa yang kami lakukan - alih-alih 1 replika, lanjutkan, misalnya menjadi 10. Lalu saya menjalankan blok perintah lagi.



Kubernet menerima informasi ini, melakukan tindakan, dan sekarang kami memiliki 10 salinan aplikasi Lobster yang berjalan di perapian kami. Selain itu, proses ini secara otomatis ditambahkan ke penyeimbang beban berkat pekerjaan Layanan.



Mari kita lihat apa yang terjadi di backend. Untuk melakukan ini, saya menggunakan perintah $ kubectl get svc, dapatkan status singkat dan minta untuk menggambarkannya dengan $ kubectl menjelaskan perintah svc. Kubernetes secara otomatis mendeteksi semua titik akhir kami dan menempatkannya di belakang penyeimbang beban.



Pada saat yang sama, semua yang tidak berguna dihapus, dan semua yang diperlukan ditambahkan secara otomatis. Kami tidak perlu membuat hal ini lagi dan lagi, semuanya sepenuhnya terintegrasi ke dalam platform.
Pertanyaan penting berikutnya adalah bagaimana cara memperbarui dan cara mendapatkan log. Jika Anda ingat, saya mengambil akses SSH Anda, jadi Anda perlu memusatkan log menggunakan sesuatu seperti Log Stash atau internal Google Cloud logging. Tetapi jika Anda hanya ingin melihat log ad hoc, ingatlah bahwa Anda tidak memiliki akses ke mesin. Namun, Anda dapat menggunakan API untuk mengambil log menggunakan nama kontainer. Untuk melakukan ini, masukkan perintah $ kubectl logs lobster-240734871-03rmn –f, di mana 03rmn adalah nama salinan spesifik aplikasi lobster-240734871 dalam wadah. Jadi, Anda dapat melihat log setiap wadah dengan replika, sehingga jika perlu, atasi masalah.



Mari kita lihat konten kita menggunakan perintah $ kubectl get pods, seperti yang Anda lihat, semuanya berfungsi. Hal penting berikutnya yang harus dilakukan adalah menyewa seorang pemasar. Dia melihat halaman ini dan berkata: "Lakukan apa yang Anda inginkan, tetapi hapus bintik-bintik putih ini dari situs!".



Yang perlu Anda lakukan untuk ini adalah membuat wadah baru selain yang sudah dibuat dan menyesuaikan CSS untuk apa yang ingin kami promosikan. Biarkan saya mengingatkan Anda bahwa kita tidak berbicara tentang node, node tidak penting bagi kami, karena sistem itu sendiri akan memberikan apa yang kita inginkan.

Akan dilanjutkan segera ...


Sedikit iklan :)


Terima kasih untuk tetap bersama kami. Apakah Anda suka artikel kami? Ingin melihat materi yang lebih menarik? Dukung kami dengan melakukan pemesanan atau merekomendasikan kepada teman Anda VPS berbasis cloud untuk pengembang mulai $ 4,99 , analog unik dari server entry-level yang diciptakan oleh kami untuk Anda: Seluruh kebenaran tentang VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps mulai dari $ 19 atau cara membagi server? (opsi tersedia dengan RAID1 dan RAID10, hingga 24 core dan hingga 40GB DDR4).

Dell R730xd 2 kali lebih murah di pusat data Equinix Tier IV di Amsterdam? Hanya kami yang memiliki 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV dari $ 199 di Belanda!Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - mulai dari $ 99! Baca tentang Cara Membangun Infrastruktur Bldg. kelas c menggunakan server Dell R730xd E5-2650 v4 seharga 9.000 euro untuk satu sen?

All Articles