Membangun Dan Mengoptimalkan Containers for Kubernetes

Membangun Dan Mengoptimalkan Containers for Kubernetes
February 22, 2023 No Comments Kubernetes G6k1JiPxqm

Introduction

Dalam artikel kami sebelumnya, kami membahas arsitektur Kubernetes dan menganalisis fungsi dan fitur utamanya. Kami kemudian menginstal Kubernetes dan menerapkan kluster Kubernetes di server Bare Metal .

Tujuan kami adalah membuat kerangka kerja yang sangat kuat untuk penyebaran perangkat lunak. Aspek penting adalah membangun citra wadah yang efektif yang menyempurnakan dan melengkapi fitur Kubernetes.

Artikel ini mengeksplorasi cara terbaik untuk membuat dan mengoptimalkan container untuk kluster Kubernetes.

Praktik Terbaik untuk Membuat Gambar Container

Kubernetes adalah alat yang sangat otomatis , dan sangat penting untuk mengoptimalkan wadah Anda selama proses pembuatan gambar.

Gambar wadah adalah kumpulan semua file yang membentuk aplikasi yang dapat dieksekusi. Koleksi ini mencakup aplikasi, semua binari, pustaka, dan dependensi lainnya. File-file tersebut bersifat read-only, yang pada gilirannya berarti konten gambarnya konstan. Berikut adalah beberapa konsep dasar yang perlu diingat saat membuat gambar penampung:

  • Cobalah untuk tidak mengemas terlalu banyak fungsi dalam satu gambar. Fokus pada layanan tertentu.
  • Wadah bersifat dinamis. Anda perlu memahami sepenuhnya bagaimana perangkat lunak Container Runtime Anda, seperti Docker, mengelola kontainer untuk melengkapi Kubernetes.
  • Gunakan lapisan gambar untuk keuntungan Anda. Melapisi aplikasi Anda dengan benar membuatnya jauh lebih fleksibel dalam kluster otomatis.
  • Kubernetes adalah alat otomatisasi. Gambar Anda harus mencerminkan hal itu dan tidak bergantung pada manajemen manual atau input setelah diterapkan.
  • Manfaatkan alat dan fitur penampung pihak ketiga tambahan untuk meningkatkan kemampuan klaster Anda lebih lanjut.
  • Pastikan gambar yang Anda gunakan berasal dari sumber tepercaya dan aman. Mematuhi praktik terbaik keamanan Kubernetes di titik masuk dapat mencegah potensi konsekuensi bencana.

1. Gambar Kontainer Memerlukan Fokus yang Ketat

Buat arsitektur aplikasi Anda dan coba bagi menjadi beberapa layanan. Wadah harus fokus melakukan satu fungsi kecil dan melakukannya dengan baik. Pendekatan ini membuatnya lebih mudah untuk menskalakan aplikasi secara horizontal dan menggunakan kembali wadah.

Jangan mencoba menyelesaikan setiap masalah di dalam wadah. Manfaatkan kemampuan penautan wadah Kubernetes dan biarkan wadah berkomunikasi satu sama lain. Kubernetes memperkenalkan level abstraksi lain dengan pods . Lapisan abstraksi tambahan ini meningkatkan kemampuan Kubernetes untuk melengkapi dan mengontrol container.

Pod Kubernetes memungkinkan skenario di mana banyak kontainer berjalan dalam satu pod. Kontainer tambahan yang digabungkan dengan erat dapat mendukung atau meningkatkan fungsionalitas inti dari kontainer utama atau membantunya beradaptasi dengan lingkungan penerapannya.

Misalnya, Anda dapat membuat wadah proxy untuk membantu menyambungkan ke database eksternal.

Contoh Pod Kubernetes dengan dua kontainer

2. Kontainer Berumur Pendek

Mengotomatiskan penerapan kontainer dengan Kubernetes berarti sebagian besar operasi sekarang berjalan tanpa masukan langsung dari Anda. Buat gambar wadah Anda sehingga dapat dipertukarkan dan tidak memerlukan manajemen mikro yang konstan.

Menggunakan perangkat lunak runtime container seperti Docker memudahkan untuk menjalankan, menghentikan, menambah, atau mencantumkan container dalam lingkungan langsung.


Catatan: Waktu proses kontainer adalah perangkat lunak yang membuat, menyimpan, dan mengeksekusi gambar kontainer. Runtime container yang paling populer adalah Docker , tetapi alternatif seperti CRI-O , containerd , atau frakti juga mendukung Kubernetes.


Kontainer tidak dapat diubah, yang berarti Anda tidak boleh mengubahnya, melainkan memulai ulang dari gambar dasar Anda. Saat menggunakan Kubernetes, anggap wadah Anda adalah entitas jangka pendek yang akan dihentikan dan dimulai ulang secara berkala .

3. Gambar Induk Kecil dan Pelapisan yang Efisien

Jumlah lapisan gambar harus mencerminkan kompleksitas aplikasi Anda. Tujuan dari layering adalah untuk memberikan level abstraksi yang tipis di atas layer sebelumnya untuk membangun fungsi yang lebih kompleks.

Lapisan adalah unit logis di mana isinya adalah jenis objek yang sama atau melakukan tugas serupa. Terlalu banyak lapisan bisa menjadi terlalu rumit dan juga menantang untuk diterapkan dan dikelola.

Jika setiap image container di pusat data Anda menggunakan image dasar yang sama, Anda hanya memerlukan satu salinan image dasar tersebut di setiap node Kubernetes tempat container berjalan. Lapisan tambahan hanya perlu diunduh saat Anda menarik gambar yang melakukan pekerjaan tertentu.

Gambar siap pakai sangat mempersingkat waktu pembuatan kontainer karena runtime kontainer menghitung perbedaan dalam kode sumber. Demikian pula, alat orkestrasi wadah , seperti Kubernetes, mendapat manfaat yang signifikan dari gambar kecil dan efisien ini.

Dalam contoh sederhana ini, dasar gambar adalah lapisan gambar kosong yang disebut Scratch. Scratch memungkinkan kita untuk menambahkan sistem operasi di atasnya.

Untuk memfasilitasi koneksi yang lancar dan aman antar server, kami menambahkan Apache. Akhirnya, kami menambahkan aplikasi kami ke struktur. Setelah dibuat, file gambar wadah khusus ini tidak dapat diubah, tetapi dimungkinkan untuk menggunakan setiap contoh untuk membuat di atasnya.

Contoh gambar kontainer dasar

Banyak distribusi Linux sekarang menawarkan gambar dasar yang menyertakan komponen minimal yang Anda perlukan untuk membuat wadah berdasarkan distribusinya. Gambar dasar ini dikonfigurasikan untuk membantu Anda menginstal perangkat lunak tambahan dengan cepat di dalam penampung tersebut.

4. Bantu Kubernetes Memantau dan Mengelola Kontainer

Hindari menyertakan paket perangkat lunak yang digunakan untuk menyelidiki atau memecahkan masalah wadah di dalam wadah itu sendiri. Konfigurasikan infrastruktur Anda untuk memanfaatkan Kubernetes dan izinkan untuk mengelola ketersediaan dan kesehatan aplikasi Anda.

Jika Anda menginstruksikan Kubernetes untuk menjaga lima instance container tetap berjalan dan satu instance gagal, Kubernetes akan membuat container lain untuk menggantikan proses yang gagal. Agar Kubernetes memahami cara memantau dan menginterpretasikan kesehatan aplikasi Anda, pertimbangkan untuk menentukan pemeriksaan keaktifan dan kesiapan .

  • Pemeriksaan keaktifan adalah alat yang memantau kesehatan kontainer. Jika suatu proses gagal dalam pemeriksaan, wadah berakhir, dan Kubernetes membuat instance baru untuk menggantikannya.
  • Gunakan probe kesiapan untuk menentukan apakah pod siap menerima lalu lintas. Jika ia menentukan bahwa sebuah pod tidak responsif, ia akan memicu proses untuk memulai ulang pod tersebut.

Saat bekerja dengan file konfigurasi besar yang membutuhkan banyak waktu untuk memuat, atur waktu tunda sebelum mengirim probe kesiapan . Itu memberi pod waktu yang diperlukan untuk memuat file konfigurasi, sehingga menghentikannya memasuki loop restart. Penundaan waktu pada akhirnya tidak terlalu berdampak pada cluster.

Dokumentasi untuk mengonfigurasi probe ini sudah tersedia di situs web resmi Kubernetes .

Untuk mempelajari lebih lanjut tentang memelihara kesehatan dan ketersediaan aplikasi Kubernetes, lihat artikel kami tentang praktik terbaik pemantauan Kubernetes .

5. Gunakan Build Multi-Stage

Dengan menambahkan terlalu banyak lapisan, Anda dengan cepat tumpang tindih dengan alat yang ada dan lapisan lainnya. Build multi-tahap adalah peningkatan signifikan yang memungkinkan Anda membuat image container yang jauh lebih ramping. Fitur ini tersedia di Docker, dimulai dengan versi 17.05.

Beberapa FROM pernyataan sekarang dapat digunakan dalam satu Dockerfile untuk membuat bagian yang berbeda; setiap bagian mereferensikan gambar dasar yang berbeda. Fitur ini mengurangi ukuran wadah Docker akhir secara signifikan. Lapisan sebelumnya tidak lagi disimpan di file/gambar akhir. Setiap lapisan sedang ‘ditarik’ berdasarkan FROMperintah yang terletak di wadah yang diterapkan.

Dengan build multi-tahap, Anda dapat memisahkan lingkungan build, pengujian, dan runtime yang memerlukan file Docker terpisah. Anda sekarang dapat menjalankan tahapan ini secara paralel.

Build multi-tahap dapat membuat image container berukuran setengah dari instance sebelumnya. Pengurangan ukuran menyelesaikan salah satu masalah utama saat mengoptimalkan wadah untuk Kubernetes.

6. Jalankan Gambar Kontainer dari Pihak Tepercaya

Gambar penampung yang tidak tepercaya yang diunduh dari domain publik, dapat mengakibatkan tindakan jahat. Menggabungkan gambar yang tidak tepercaya dengan alat otomatisasi seperti Kubernetes mempersulit untuk membatasi tingkat kerusakan.

Jangan menjalankan image container acak dan belum teruji di sistem Anda, alih-alih gunakan repositori image dan container tepercaya. Analisis gambar kontainer yang sudah ada secara berkala untuk menemukan kelemahan keamanan dan jangan nonaktifkan fitur keamanan sistem operasi host.


Catatan: Registri gambar adalah tempat yang menyimpan gambar untuk akses publik atau pribadi. Pengembang perangkat lunak menggunakannya untuk membuat aplikasi baru dan komposit secara efisien. Semua gambar yang disimpan melalui beberapa validasi, verifikasi, dan penyempurnaan. Kualitas dan keamanan gambar-gambar ini tinggi.


Kesimpulan

Saran yang diuraikan dalam artikel ini membantu Anda membuat penampung yang dioptimalkan sepenuhnya. Gunakan fitur lanjutan yang ditawarkan Kubernetes, dan otomatiskan pengelolaan dan penerapan kontainer ini.

Cara lain untuk meningkatkan kinerja klaster adalah dengan menggunakan Kubernetes DaemonSets untuk menerapkan Pod yang melakukan tugas pemeliharaan dan layanan dukungan ke setiap node. Pelajari praktik terbaik Kubernetes lebih lanjut saat membuat cluster yang efisien.

Anda dijamin akan melihat peningkatan yang signifikan dalam pengembangan dan operasi produksi Anda.

About The Author

Leave a reply

Your email address will not be published. Required fields are marked *