ProHoster > blog > administrasi > CRI-O sebagai pengganti Docker sebagai lingkungan runtime untuk Kubernetes: diatur pada CentOS 8
CRI-O sebagai pengganti Docker sebagai lingkungan runtime untuk Kubernetes: diatur pada CentOS 8
Halo! Nama saya Sergey, saya DevOps di Surf. Departemen DevOps di Surf bertujuan tidak hanya untuk menjalin interaksi antar spesialis dan mengintegrasikan proses kerja, namun juga untuk secara aktif meneliti dan menerapkan teknologi terkini baik di infrastrukturnya sendiri maupun di infrastruktur pelanggan.
Di bawah ini saya akan berbicara sedikit tentang perubahan tumpukan teknologi untuk container yang kami temui saat mempelajari distribusinya 8 CentOS dan tentang apa itu CRI-O dan cara cepat menyiapkan lingkungan yang dapat dieksekusi Kubernetes.
Mengapa Docker tidak disertakan dalam CentOS 8?
Setelah menginstal rilis besar terbaru RHEL 8 ΠΈΠ»ΠΈ 8 CentOS orang pasti memperhatikan: distribusi dan repositori resmi ini tidak berisi aplikasi Buruh pelabuhan, yang secara ideologis dan fungsional menggantikan paket tukang pod, Membangunah (ada dalam distribusi secara default) dan CRI-O. Hal ini disebabkan oleh penerapan praktis standar yang dikembangkan, antara lain, oleh Red Hat sebagai bagian dari proyek Open Container Initiative (OCI).
Tujuan OCI, yang merupakan bagian dari The Linux Foundation, adalah untuk menciptakan standar industri terbuka untuk format container dan runtime yang memecahkan beberapa masalah sekaligus. Pertama, mereka tidak bertentangan dengan filosofi Linux (misalnya, setiap program harus melakukan satu tindakan, dan Buruh pelabuhan adalah sejenis gabungan all-in-one). Kedua, mereka dapat menghilangkan semua kekurangan yang ada pada perangkat lunak Buruh pelabuhan. Ketiga, mereka akan sepenuhnya kompatibel dengan kebutuhan bisnis platform komersial terkemuka untuk menerapkan, mengelola, dan melayani aplikasi dalam container (misalnya, Red Hat OpenShift).
Kekurangan: Buruh pelabuhan dan keunggulan perangkat lunak baru ini telah dijelaskan secara rinci di Artikel ini, dan penjelasan rinci tentang keseluruhan tumpukan perangkat lunak yang ditawarkan dalam proyek OCI dan fitur arsitekturalnya dapat ditemukan di dokumentasi resmi dan artikel dari Red Hat sendiri (tidak buruk artikel di blog Red Hat) dan di pihak ketiga ulasan.
Penting untuk dicatat fungsionalitas apa yang dimiliki komponen tumpukan yang diusulkan:
tukang pod β interaksi langsung dengan container dan penyimpanan gambar melalui proses runC;
Membangunah β merakit dan mengunggah gambar ke registri;
CRI-O β lingkungan yang dapat dieksekusi untuk sistem orkestrasi container (misalnya, Kubernetes).
Saya pikir untuk memahami skema umum interaksi antara komponen tumpukan, disarankan untuk menyediakan diagram koneksi di sini Kubernetes c menjalankanC dan perpustakaan tingkat rendah menggunakan CRI-O:
CRI-O ΠΈ Kubernetes mematuhi siklus rilis dan dukungan yang sama (matriks kompatibilitasnya sangat sederhana: versi utama Kubernetes ΠΈ CRI-O bertepatan), dan ini, dengan mempertimbangkan fokus pada pengujian lengkap dan komprehensif pengoperasian tumpukan ini oleh pengembang, memberi kita hak untuk mengharapkan stabilitas maksimum yang dapat dicapai dalam pengoperasian dalam skenario penggunaan apa pun (relatif ringan juga bermanfaat di sini CRI-O dibandingkan dengan Buruh pelabuhan karena pembatasan fungsionalitas yang disengaja).
Saat memasang Kubernetes cara "benar" (menurut OCI, tentu saja) menggunakan CRI-O pada 8 CentOS Kami menemui beberapa kesulitan kecil, namun berhasil kami atasi. Saya akan dengan senang hati berbagi dengan Anda petunjuk instalasi dan konfigurasi, yang totalnya akan memakan waktu sekitar 10 menit.
Cara men-deploy Kubernetes di CentOS 8 menggunakan framework CRI-O
Prasyarat: kehadiran setidaknya satu host (2 core, RAM 4 GB, penyimpanan minimal 15 GB) dengan terpasang 8 CentOS (disarankan profil instalasi "Server"), serta entri untuk itu di DNS lokal (sebagai upaya terakhir, Anda dapat menggunakan entri di /etc/hosts). Dan jangan lupa nonaktifkan pertukaran.
Kami melakukan semua operasi pada host sebagai pengguna root, hati-hati.
Pada langkah pertama, kita akan mengkonfigurasi OS, menginstal dan mengkonfigurasi dependensi awal untuk CRI-O.
Mari perbarui OS:
dnf -y update
Selanjutnya Anda perlu mengkonfigurasi firewall dan SELinux. Di sini semuanya tergantung pada lingkungan di mana host atau host kita akan bekerja. Anda dapat mengatur firewall sesuai dengan rekomendasi dari dokumentasi, atau, jika Anda berada di jaringan tepercaya atau menggunakan firewall pihak ketiga, ubah zona default menjadi tepercaya atau matikan firewall:
atur versi yang diperlukan CRI-O (versi utama CRI-O, sebagaimana telah disebutkan, cocok dengan versi yang diperlukan Kubernetes), sejak versi stabil terbaru Kubernetes saat ini 1.18:
Perhatikan nuansa pertama yang kita temui selama proses instalasi: Anda perlu mengedit konfigurasi CRI-O sebelum memulai layanan, karena komponen conmon yang diperlukan memiliki lokasi yang berbeda dari yang ditentukan:
sed -i 's//usr/libexec/crio/conmon//usr/bin/conmon/' /etc/crio/crio.conf
Sekarang Anda dapat mengaktifkan dan memulai daemon CRI-O:
Nuansa penting kedua: karena kita tidak menggunakan daemon Buruh pelabuhan, tapi kami menggunakan daemon CRI-O, sebelum peluncuran dan inisialisasi Kubernetes Anda perlu membuat pengaturan yang sesuai di file konfigurasi /var/lib/kubelet/config.yaml, setelah terlebih dahulu membuat direktori yang diinginkan:
Poin penting ketiga yang kami temui selama instalasi: meskipun kami telah menunjukkan driver yang digunakan grup c, dan konfigurasinya melalui argumen yang disampaikan kubus sudah usang (seperti yang dinyatakan secara eksplisit dalam dokumentasi), kita perlu menambahkan argumen ke file tersebut, jika tidak, cluster kita tidak akan diinisialisasi:
Untuk menyesuaikan bidang kendali ΠΈΠ»ΠΈ pekerja node dalam hitungan menit, Anda dapat menggunakan dengan skrip ini.
Saatnya menginisialisasi cluster kita.
Untuk menginisialisasi cluster, jalankan perintah:
kubeadm init --pod-network-cidr=10.244.0.0/16
Pastikan untuk menuliskan perintah untuk bergabung dengan cluster βkubeadm joinβ¦β, yang akan diminta untuk Anda gunakan di akhir output, atau setidaknya token yang ditentukan.
Mari kita instal plugin (CNI) untuk jaringan Pod. Saya sarankan menggunakan Belacu. Mungkin lebih populer Flanel memiliki masalah kompatibilitas dengan nftables, ya dan Belacu - satu-satunya penerapan CNI yang direkomendasikan dan diuji sepenuhnya oleh proyek Kubernetes:
Untuk menghubungkan node pekerja ke cluster kami, Anda perlu mengkonfigurasinya sesuai dengan instruksi 1 dan 2, atau gunakan naskah, lalu jalankan perintah dari output βkubeadm initβ¦β yang telah kita tulis di langkah sebelumnya:
Mari kita periksa apakah cluster kita telah diinisialisasi dan mulai bekerja:
kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
Siap! Anda sudah dapat menghosting payload di kluster K8s Anda.
Apa yang menanti kita di depan
Saya harap petunjuk di atas membantu menghemat waktu dan kegelisahan Anda.
Hasil dari proses yang terjadi di industri sering kali bergantung pada bagaimana proses tersebut diterima oleh sebagian besar pengguna akhir dan pengembang perangkat lunak lain di ceruk yang sesuai. Belum jelas apa yang akan dihasilkan oleh inisiatif OCI dalam beberapa tahun ke depan, namun kami akan menyaksikannya dengan senang hati. Anda dapat membagikan pendapat Anda sekarang di komentar.