
Pada artikel ini saya akan memberi tahu Anda cara menjalankan master kubernetes di dalam sebuah wadah LXC.
Metode ini bekerja sangat baik dengan Proxmox dan dapat dianggap sebagai alternatif untuk penyebaran kubernet klasik dengan beberapa penyihir.
Mengapa proxmox?
Karena proxmox di luar kotak menyediakan banyak fitur berguna.
Proxmox termasuk fitur-fitur ketersediaan tinggi, migrasi, cadangan otomatis, kontrol akses dan semua ini dapat diakses melalui antarmuka grafis sederhana.
Anda juga dapat menggunakan konfigurasi kubernet paling sederhana dengan wizard tunggal, proxmox akan menyediakan ketersediaan tinggi.
Metode ini sangat bagus untuk menyebarkan tes atau cluster kecil.
Untuk penyebaran yang lebih besar, disarankan untuk menempatkan etcd dalam wadah terpisah yang akan menggunakan disk lokal cepat dan menggabungkannya ke dalam sebuah cluster.
Namun demikian, kubernetes-master itu sendiri masih dapat tetap menjadi wadah ha biasa, tidak perlu memiliki penyimpanan cepat.
Selain itu, jika Anda membaca artikel ini, saya berasumsi bahwa dalam kebanyakan kasus Anda sudah memiliki semacam infrastruktur pada Proxmox, dan mungkin Anda ingin memiliki satu antarmuka untuk mengelola layanan Anda.
Mengapa LXC?
Kubernetes akan mulai tanpa masalah di dalam mesin virtual biasa. Tetapi kontainer LXC memberikan fleksibilitas yang tidak tersedia dengan mesin virtual konvensional.
Pada kenyataannya, kontainer LXC tidak menyediakan isolasi lengkap kontainer dari host, sebaliknya, semua proses di dalam kontainer mulai sebagai proses host normal, hanya dalam namespace terpisah.
Metode ini memberi Anda kinerja yang baik tetapi memaksakan beberapa batasan dalam kasus kami.
Saya akan membahas batasan-batasan ini dan bagaimana menghadapinya dalam artikel ini.
Konfigurasi
Karena, secara default, kontainer tidak diperbolehkan memuat modul kernel sendiri, Anda harus mengonfigurasinya untuk memuat langsung pada hypervisor.
Kami akan menggunakan driver overlay
untuk buruh pelabuhan, jadi ini yang kami butuhkan:
echo overlay >> /etc/modules
Sekarang kita perlu menambahkan lebih banyak hak istimewa untuk wadah kami untuk memungkinkannya menjalankan wadah lain di dalamnya, tambahkan baris ini ke konfigurasi wadah Anda:
lxc.apparmor.profile: unconfined lxc.cap.drop: lxc.cgroup.devices.allow: a lxc.mount.auto: proc:rw sys:rw
Dimulai dengan versi v11.0, kubelet membutuhkan mode bersama untuk semua mount dari host.
Retasan kotor ini akan memungkinkan Anda untuk mencapai hal ini, di dalam wadah LXC, jalankan:
echo '#!/bin/sh -e mount --make-rshared /' > /etc/rc.local
Tindakan ini akan menambahkan mount --make-rshared /
ke /etc/rc.local
dan menjalankannya setiap kali kontainer memuat.
Juga, jika Anda berencana untuk menggunakan HA-manager dalam proxmox, ketahuilah bahwa saat ini ada bug yang tidak menyenangkan # 1842 , yang secara paksa membunuh proses kontainer selama migrasi, yang dapat memunculkan proses zombie atau bahkan memblokir penyimpanan Anda.
Ini tidak baik, untungnya ada solusi sederhana:
sed -i 's/forceStop => 1/forceStop => 0/' /usr/share/perl5/PVE/HA/Resources/PVECT.pm
Selain itu, Anda dapat menambahkan opsi berikut untuk buruh pelabuhan:
--storage-driver overlay2 --iptables=false --ip-masq=false
Salin docker.service
dari /lib
ke /etc
untuk mengganti opsinya:
cp /{lib,etc}/systemd/system/docker.service
Sekarang tambahkan opsi ini ke bagian ExecStart
.
Itu saja, setelah langkah-langkah ini instalasi kubeadm standar harus bekerja tanpa masalah.