Membuat klaster Kubernetes di Fedora
|
Halaman ini membahas sumber perangkat lunak pihak ketiga yang tidak secara resmi berafiliasi atau didukung oleh Proyek Fedora. Gunakan sumber-sumber ini dengan pertimbangan Anda sendiri. Fedora merekomendasikan penggunaan perangkat lunak bebas dan sumber terbuka serta menghindari perangkat lunak yang terikat oleh paten. |
Membuat klaster Kubernetes dengan kubeadm
kubeadmDi bawah ini adalah panduan untuk membuat klaster Kubernetes yang berfungsi di satu mesin Fedora yang cocok untuk lingkungan pembelajaran dan eksplorasi. Panduan ini tidak dimaksudkan untuk membuat lingkungan produksi.
Panduan di bawah ini secara umum mengikuti dan banyak mengacu pada panduan Membuat klaster dengan kubeadm yang dibuat oleh tim Kubernetes.
Fedora 41 memiliki rpm Kubernetes dengan versi tertentu maupun tanpa versi (v1.29). Kubernetes 1.29 tidak lagi didukung oleh komunitas Kubernetes.
-
Perbarui sistem dengan DNF. Lakukan reboot jika diperlukan, meskipun reboot dapat ditunda hingga setelah langkah berikutnya.
sudo dnf update -
Nonaktifkan swap. Proses instalasi kubeadm akan menghasilkan peringatan jika swap terdeteksi (lihat tiket ini untuk detailnya). Untuk lingkungan belajar dan laboratorium, menonaktifkan swap bisa menjadi pilihan termudah. Swap dapat dibiarkan aktif jika diinginkan dan kubeadm dikonfigurasi agar tidak berhenti saat mendeteksi swap. Sistem Fedora modern menggunakan zram secara bawaan. Lakukan reboot setelah menonaktifkan swap.
sudo systemctl stop swap-create@zram0 sudo dnf remove zram-generator-defaults sudo reboot now -
SELinux. Sebagian besar panduan instalasi Kubernetes di Fedora menyarankan agar SELinux dinonaktifkan. Kubernetes tetap dapat berfungsi dengan baik saat SELinux diaktifkan dan banyak container juga akan berjalan sebagaimana mestinya. Jika muncul masalah, menonaktifkan SELinux bisa menjadi salah satu opsi untuk dicoba. Lihat panduan Quick Doc SELinux tentang mengubah status SELinux untuk informasi lebih lanjut.
-
Nonaktifkan firewall. Kubeadm akan menampilkan peringatan instalasi jika firewall sedang berjalan. Menonaktifkan firewall menghilangkan salah satu sumber kompleksitas di lingkungan pembelajaran. Sistem Fedora modern menggunakan firewalld.
sudo systemctl disable --now firewalldLihat bagian Aturan Firewall dalam artikel Roman Gherta Kubernetes dengan CRI-O di Fedora 39 untuk cara yang tepat mengonfigurasi firewall Fedora agar dapat bekerja dengan Kubernetes.
Daftar terkini port dan protokol yang digunakan oleh klaster Kubernetes dapat ditemukan di https://kubernetes.io/docs/reference/networking/ports-and-protocols/.
-
Instal
iptablesdaniproute-tc.Paket-paket ini sudah termasuk dalam rpm Kubernetes versi terbaru.sudo dnf install iptables iproute-tc -
Konfigurasikan penerusan IPv4 dan filter jembatan. Bagian di bawah ini disalin dari https://kubernetes.io/docs/setup/production-environment/container-runtimes/.
sudo cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF -
Muat modul overlay dan filter jembatan.
sudo modprobe overlay sudo modprobe br_netfilter -
Tambahkan parameter
sysctlyang diperlukan dan buat agar tetap tersimpan.# sysctl params required by setup, params persist across reboots sudo cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF -
Terapkan parameter
sysctltanpa melakukan reboot.sudo sysctl --system -
Verifikasi bahwa modul
br_filterdan overlay telah dimuat.lsmod | grep br_netfilter lsmod | grep overlay -
Verifikasi bahwa variabel sistem
net.bridge.bridge-nf-call-iptables,net.bridge.bridge-nf-call-ip6tables, dannet.ipv4.ip_forwarddisetel ke1dalam konfigurasi sysctl Anda dengan menjalankan perintah berikut:sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward -
Instal container runtime. Dalam contoh ini digunakan CRI-O. Containerd juga bisa menjadi pilihan. Catatan: Jika menggunakan CRI-O, pastikan versi mayor:minor dari cri-o sama dengan versi Kubernetes (yang akan diinstal di bawah). Rpm CRI-O memiliki versi yang mengikuti versi Kubernetes. Instal versi CRI-O yang sesuai dengan versi Kubernetes yang dituju.
sudo dnf install cri-o1.31 containernetworking-plugins -
Periksa versi Kubernetes yang tersedia. Jika tidak yakin dengan versi Kubernetes apa saja yang saat ini tersedia di Fedora 41 atau lebih baru, perintah berikut dapat membantu. Dalam contoh di bawah, rpm versi Kubernetes 1.29, 1.30, 1.31, dan 1.32 tersedia di Fedora 41. Informasi terkini mengenai rilis yang didukung dan tanggal akhir siklus hidupnya dapat ditemukan di halaman Riwayat Rilis yang dikelola oleh tim Kubernetes.
sudo dnf list kubernetes1.??Keluaran akan terlihat seperti ini:
> sudo dnf list kubernetes1.?? Updating and loading repositories: Repositories loaded. Available packages kubernetes1.29.x86_64 1.29.11-2.fc41 updates kubernetes1.30.x86_64 1.30.7-1.fc41 updates kubernetes1.31.x86_64 1.31.3-1.fc41 updates kubernetes1.32.x86_64 1.32.0-1.fc41 updates -
Instal Kubernetes. Dalam contoh ini, ketiga aplikasi Kubernetes (
kubectl,kubelet, dankubeadm) diinstal pada satu mesin node tunggal. Silakan lihat catatan di atas mengenai paket yang direkomendasikan untuk node control plane atau worker jika klaster akan memiliki kedua jenis mesin tersebut.sudo dnf install kubernetes1.31 kubernetes1.31-kubeadm kubernetes1.31-client -
Mulai dan aktifkan cri-o.
sudo systemctl enable --now crio -
Tarik image container sistem yang diperlukan untuk Kubernetes. Langkah ini sepenuhnya opsional. Perintah
kubeadm initsudo kubeadm config images pull -
Mulai dan aktifkan
kubelet. Kubelet akan masuk ke mode crash loop hingga klaster diinisialisasi pada langkah berikutnya.sudo systemctl enable --now kubelet -
Inisialisasi klaster.
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 -
kubeadm akan menampilkan keluaran di terminal yang menunjukkan langkah-langkah inisialisasi. Jika berhasil, keluaran berikut akan muncul. Pada tahap ini, klaster sudah berjalan di mesin tunggal ini. Setelah kubeadm selesai, Anda akan melihat:
Kubernetes control-plane Anda telah berhasil diinisialisasi! Untuk mulai menggunakan klaster Anda, jalankan perintah berikut sebagai pengguna biasa: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config Sebagai alternatif, jika Anda adalah pengguna root, jalankan perintah berikut: export KUBECONFIG=/etc/kubernetes/admin.conf
-
Langkah-langkah di atas memungkinkan pengguna non-root untuk menggunakan
kubectl, alat baris perintah Kubernetes. Jalankan perintah-perintah tersebut sekarang.mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config -
Izinkan mesin control plane juga menjalankan pod untuk aplikasi. Jika tidak, dibutuhkan lebih dari satu mesin dalam klaster.
kubectl taint nodes --all node-role.kubernetes.io/control-plane- -
Instal flannel ke dalam klaster untuk menyediakan jaringan antar node. Ada banyak solusi jaringan lain selain flannel. Flannel sederhana dan cocok untuk panduan ini.
kubectl apply -f https://github.com/coreos/flannel/raw/master/Documentation/kube-flannel.yml -
Tampilkan daftar pod yang sedang berjalan di klaster. Semua pod seharusnya menunjukkan status Running. Status CrashLoopBackOff mungkin muncul untuk pod coredns. Hal ini umum terjadi saat menginstal Kubernetes di mesin virtual karena layanan DNS dalam klaster mungkin tidak memilih jaringan yang tepat. Gunakan mesin pencari favorit Anda untuk menemukan kemungkinan solusinya. Lihat juga bagian pemecahan masalah di bawah untuk dua solusi yang memungkinkan.
kubectl get pods --all-namespaces
Pada tahap ini, terdapat satu mesin dalam klaster yang menjalankan control plane dan siap digunakan sebagai node.
Peningkatan versi klaster Kubernetes memerlukan perhatian dan perencanaan. Lihat Meningkatkan klaster kubeadm untuk informasi lebih lanjut.
Plugin DNF Versionlock berguna untuk mencegah pembaruan tak terencana pada rpm Kubernetes. Terkadang, versi Kubernetes di rilis Fedora mencapai akhir masa dukungannya dan versi baru ditambahkan ke repositori. Atau, peningkatan versi Fedora pada mesin klaster juga akan menyebabkan perbedaan versi Kubernetes. Setelah DNF Versionlock terinstal, perintah berikut akan menahan rpm Kubernetes dan rpm cri-o pada versi mayor:minor 1.31 tetapi tetap mengizinkan pembaruan patch.
sudo dnf versionlock add kubernetes*-1.31.* cri-o-1.31.*
Pemecahan masalah CrashLoopBackOff
Tim CoreDNS menyediakan panduan untuk memecahkan masalah loop di klaster Kubernetes dengan beberapa opsi yang dapat membantu menyelesaikan masalah tersebut.
Opsi “cepat dan sederhana”, seperti yang dijelaskan oleh tim CoreDNS, adalah dengan mengedit configmap CoreDNS menggunakan kubectl. Dalam configmap, ganti forward . /etc/resolv.conf dengan alamat IP server DNS untuk jaringan Anda. Jika server DNS memiliki alamat IP 192.168.110.201, maka hasilnya akan menjadi forward . 192.168.110.201. Untuk mengedit configmap CoreDNS, gunakan perintah berikut:
kubectl edit configmap coredns -n kube-system
kubectl akan membuka editor sesuai dengan yang digunakan pada Fedora Anda. Secara default Fedora menggunakan nano yang dapat dengan mudah diubah.
Opsi lain adalah menonaktifkan sistem stub resolving systemd-resolved pada mesin yang menjalankan klaster dengan menggunakan kode di bawah ini. Terima kasih kepada @jasonbrooks (https://pagure.io/user/jasonbrooks) atas tinjauan dan sarannya.
sudo mkdir -p /etc/systemd/resolved.conf.d/
sudo cat <<EOF | sudo tee /etc/systemd/resolved.conf.d/stub-listener.conf
[Resolve]
DNSStubListener=no
EOF
Want to help? Learn how to contribute to Fedora Docs ›