Kubernetes memiliki reputasi kompleksitas tetapi rilis modern relatif mudah disiapkan. Alat administrasi cluster resmi Kubeadm memberikan pengalaman otomatis untuk mem-boot control plane Anda dan mendaftarkan node pekerja.
Artikel ini akan memandu Anda dalam menyiapkan cluster Kubernetes sederhana menggunakan konfigurasi default. Ini adalah panduan "dari awal" yang harus bekerja pada host yang baru saja disediakan. Sistem berbasis Debian diasumsikan tetapi Anda dapat menyesuaikan sebagian besar perintah agar sesuai dengan manajer paket sistem operasi Anda. Langkah-langkah ini telah diuji menggunakan Ubuntu 22.04 dan Kubernetes v1.25.
Menginstal Container Runtime
Kubernetes membutuhkan container runtime yang kompatibel dengan CRI untuk memulai dan menjalankan container Anda. Distribusi Kubernetes standar tidak disertai dengan runtime sehingga Anda harus menginstalnya sebelum melanjutkan. containerd adalah pilihan paling populer. Ini adalah runtime yang disertakan dengan rilis Docker modern.
Anda dapat menginstal containerd menggunakan repositori Apt Docker. Pertama tambahkan beberapa dependensi yang akan digunakan selama prosedur instalasi:
$ sudo apt update $ sudo apt install -y ca-certificates curl gnupg lsb-release
Selanjutnya tambahkan kunci GPG repositori ke direktori keyrings Apt:
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Sekarang Anda dapat menambahkan repositori yang benar untuk sistem Anda dengan menjalankan perintah ini:
$ echo "deb [arch=$(dpkg --print-architecture) signed -by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Perbarui daftar paket Anda untuk memasukkan isi dari repositori Docker:
$ sudo apt update
Akhirnya install containerd:
$ sudo apt install -y containerd. io
Check layanan containerd telah dimulai:
$ sudo service containerd status containerd.service - container runtime containerd Loaded: loading (/lib/systemd/system/containerd.service; diaktifkan; preset vendor: diaktifkan) Aktif: aktif (berjalan) sejak Sel 2022-09-13 16:50:12 WIB; 6s ago
Beberapa penyesuaian pada file konfigurasi containerd diperlukan untuk membuatnya bekerja dengan baik dengan Kubernetes. Pertama-tama ganti konten file dengan konfigurasi default containerd:
$ sudo containerd config default > /etc/containerd/config.toml
Ini mengisi semua bidang konfigurasi yang tersedia dan menyelesaikan beberapa masalah, seperti dukungan CRI dinonaktifkan pada instalasi baru.
Next open / etc/containerd/config.toml dan temukan baris berikut:
SystemdCgroup = false
Ubah nilainya menjadi true:
SystemdCgroup = true
Modifikasi ini diperlukan untuk mengaktifkan dukungan penuh untuk manajemen systemdcgroup. Tanpa opsi ini, container sistem Kubernetes akan restart sendiri secara berkala.
Restart containerd untuk menerapkan perubahan Anda:
$ sudo service containerd restart
Menginstal Kubeadm, Kubectl, dan Kubelet
Tahap kedua dalam proses ini adalah menginstal alat Kubernetes. Ketiga utilitas ini menyediakan kemampuan berikut:
Kubeadm – Alat administrasi yang beroperasi di tingkat cluster. Anda akan menggunakan ini untuk membuat cluster Anda dan menambahkan node tambahan. Kubectl – Kubectl adalah CLI yang Anda gunakan untuk berinteraksi dengan cluster Kubernetes Anda setelah berjalan. Kubelet – Ini adalah proses Kubernetes yang berjalan pada node pekerja cluster Anda. Ini bertanggung jawab untuk menjaga kontak dengan bidang kontrol dan memulai wadah baru saat diminta.
Ketiga biner tersedia di repositori Apt yang dihosting oleh Google Cloud. Pertama, daftarkan keyring GPG repositori:
$ sudo curl -fsSLo /etc/apt/keyrings/kubernetes.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
Selanjutnya tambahkan repositori ke sumber Anda …
$ echo "deb [signed-by=/etc/apt/keyrings/kubernetes.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
…dan perbarui daftar paket Anda:
$ sudo apt update
Sekarang instal paket:
$ sudo apt install -y kubeadm kubectl kubelet
Praktik terbaik untuk "menahan" paket-paket ini jadi Apt tidak secara otomatis memperbaruinya saat Anda menjalankan apt upgrade. Upgrade cluster Kubernetes harus dimulai secara manual untuk mencegah downtime dan menghindari perubahan yang tidak diinginkan.
$ sudo apt-mark hold kubeadm kubectl kubelet
Disabling Swap
Kubernetes tidak berfungsi saat swap diaktifkan. Anda harus mematikan swap sebelum membuat cluster. Jika tidak, Anda akan menemukan proses penyediaan macet saat menunggu Kubelet untuk memulai.
Run perintah ini untuk menonaktifkan swap:
$ sudo swapoff -a
Next edit file /etc/fstab Anda dan nonaktifkan semua swap mount:
UUID=ec6efe91-5d34-4c80- b59c-cafe89cc6cb2 / ext4 errors=remount-ro 0 1 /swapfile none swap sw 0 0
File ini menunjukkan mount dengan tipe swap sebagai baris terakhir. Itu harus dihapus atau dikomentari sehingga swap tetap dinonaktifkan setelah sistem di-boot ulang.
Memuat Modul br_netfilter
Modul kernel br_netfilter diperlukan untuk mengaktifkan iptables untuk melihat lalu lintas yang dijembatani. Kubeadm tidak akan membiarkan Anda membuat cluster Anda ketika modul ini hilang.
Anda dapat mengaktifkannya dengan perintah berikut:
$ sudo modprobe br_netfilter
Buat bertahan setelah reboot dengan memasukkannya ke dalam daftar modul sistem Anda:
$ echo br_netfilter | sudo tee /etc/modules-load.d/kubernetes.conf
Membuat Cluster Anda
Anda siap membuat cluster Kubernetes. Jalankan kubeadm init pada mesin yang Anda inginkan untuk meng-host bidang kontrol Anda:
$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16
Bendera --pod-network-cidr disertakan sehingga alokasi CIDR yang benar tersedia ke addon jaringan Pod yang akan diinstal nanti. Nilai default 10.244.0.0/16 berfungsi dalam banyak kasus tetapi Anda mungkin harus mengubah rentang jika Anda menggunakan lingkungan jaringan yang sangat disesuaikan. Pembuatan
Cluster dapat memakan waktu beberapa menit untuk diselesaikan. Informasi kemajuan akan ditampilkan di terminal Anda. Anda akan melihat pesan ini setelah berhasil:
Control-plane Kubernetes Anda telah berhasil diinisialisasi!
Output juga mencakup informasi tentang cara mulai menggunakan cluster Anda.
Mempersiapkan File Kubeconfig Anda
Mulai dengan menyalin file Kubeconfig yang dibuat secara otomatis ke direktori .kube/config Anda sendiri . Sesuaikan kepemilikan file sendiri sehingga Kubectl dapat membaca isinya dengan benar.
$ mkdir -p $HOME/.kube $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config $ sudo chown $( id -u):$(id -g) $HOME/.kube/config
Menginstal Addon Jaringan Pod
Kubernetes memerlukan addon jaringan Pod untuk ada di cluster Anda sebelum node pekerja mulai beroperasi secara normal. Anda harus menginstal addon yang kompatibel secara manual untuk menyelesaikan instalasi Anda.
Calico dan Flannel adalah dua pilihan paling populer. Panduan ini menggunakan Flannel karena pengalaman instalasinya yang sederhana.
Gunakan Kubectl untuk menambahkan Flannel ke cluster Anda:
$ kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel. yml
Tunggu beberapa saat lalu jalankan kubectl get node di terminal Anda. Anda akan melihat tampilan Node Anda sebagai Ready dan Anda dapat mulai berinteraksi dengan cluster Anda.
$ kubectl get nodes
NAMA STATUS PERAN VERSI USIA
ubuntu22 Ready control-plane 7m19s v1.25.0
Jika Anda menjalankan kubectl get pods --all-namespaces, Anda harus lihat bahwa komponen control plane, CoreDNS, dan Flannel semuanya aktif dan berjalan:
$ kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE kube-flannel kube-flannel-ds-xlrk6 1/1 Running 5 (16s yang lalu) 11m kube-system coredns-565d847f94-bzzkf 1/1 Berjalan 5 (2m9 detik yang lalu) 14m kube-system coredns-565d847f94-njrdc 1/1 Berjalan 4 (30 detik yang lalu) 14m kube-system etcd-ubuntu22 1/1 Berjalan 6 (113 detik yang lalu) 13m kube-system kube-apiserver-ubuntu22 1/1 Berjalan 5 (30 detik yang lalu) 16m kube-system kube-controller-manager-ubuntu22 1/1 Berjalan 7 (3m 59 detik yang lalu) 13m kube-system kube-proxy-r9g9k 1/1 Berjalan 8 (21 detik yang lalu) 14m kube-system kube-scheduler-ubuntu22 1/1 Berjalan 7 (30 detik yang lalu) 15m
Berinteraksi Dengan Cluster Anda
Sekarang Anda dapat mulai menggunakan Kubectl untuk berinteraksi dengan klaster Anda. Sebelum melanjutkan, hapus taint default pada node control plane Anda agar Pod dapat menjadwalkannya. Kubernetes mencegah Pod berjalan pada node control plane untuk menghindari pertengkaran sumber daya tetapi pembatasan ini tidak diperlukan untuk penggunaan lokal.
$ kubectl taint node ubuntu22 node-role.kubernetes.io/control-plane:NoSchedule- node/ubuntu22 untainted
Ganti ubuntu22 di perintah di atas dengan nama yang ditetapkan untuk node Anda sendiri.
Sekarang coba mulai Pod NGINX sederhana:
$ kubectl run nginx --image nginx:pod terbaru/nginx create
Ekspos dengan layanan NodePort:
$ kubectl expose pod/nginx --port 80 --type layanan NodePort/nginx terkena
Temukan port host yang dialokasikan untuk layanan:
$ kubectl get services
NAMA JENIS CLUSTER-IP EXTERNAL-IP PORT(S) USIA
kubernetes ClusterIP 10.96.0.1 443/TCP 18m nginx NodePort 10.106. 44.155 80:30647/TCP 27s
Port adalah 30647. Permintaan HTTP ke titik akhir ini sekarang harus mengeluarkan halaman arahan NGINX default sebagai tanggapan:
$ curl http://localhost:30647
Kami lcome to nginx!
Kluster Kubernetes Anda berfungsi!
Menambahkan Node
lainUntuk mengonfigurasi node pekerja tambahan, pertama ulangi semua langkah di bagian hingga “Membuat Cluster Anda” pada setiap mesin yang ingin Anda gunakan. Setiap Node akan membutuhkan containerd, Kubeadm dan Kubelet yang diinstal. Anda juga harus memeriksa node Anda memiliki konektivitas jaringan penuh ke mesin yang menjalankan control plane Anda.
Next jalankan perintah berikut pada node pekerja baru Anda:
kubeadm join 192.168.122.229:6443 --node-name node-b --token --discovery-token-ca-cert-hash sha256:
Ganti alamat IP dengan node bidang kontrol Anda. Nilai dari dan akan ditampilkan saat Anda menjalankan kubeadm init untuk membuat bidang kontrol Anda. Anda dapat mengambilnya menggunakan langkah-langkah berikut.
Token
Run daftar token kubeadm pada node bidang kontrol. Nilai token akan ditampilkan di kolom TOKEN.
$ kubeadm daftar token TOKEN TTL KEDALUWARSA PENGGUNAAN DESKRIPSI GRUP TAMBAHAN lkoz6v.cw1e01ckz2yqvw4u 23h 2022-09-14T19:35:03Z otentikasi,signing
Token CA Cert Hash
Jalankan perintah ini dan gunakan outputnya nilai:
$ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed `s/^.* //`
Bergabung dengan Cluster
Perintah kubeadm join akan menghasilkan output ini setelah berhasil:
$ kubeadm join 192.168.122.229:6443 --node-name node-b --token --discovery- token-ca-cert-hash sha256: [kubelet-start] Memulai kubelet[kubelet-start] Menunggu kubelet melakukan Bootstrap TLS... Node ini telah bergabung dengan cluster: * Permintaan penandatanganan sertifikat telah dikirim ke apiserver dan sebuah tanggapan diterima. * Kubelet telah diberitahu tentang detail koneksi aman yang baru. Jalankan `kubectl get nodes` pada control-plane untuk melihat node ini bergabung dengan cluster.
Verifikasi node bergabung dengan cluster dan siap menerima Pod dengan menjalankan kubectl get nodes perintah:
$ kubectl get nodes NAMA STATUS PERAN AGE VERSION node -b Ready 91s v1.25.0 ubuntu22 Ready control-plane 100m v1.25.0
Node muncul dalam daftar dan berstatus Ready sebagai statusnya. Ini berarti ia beroperasi dan Kubernetes dapat menjadwalkan Pod ke dalamnya.
Summary
Menyiapkan Kubernetes mungkin tampak menakutkan, tetapi Kubeadm mengotomatiskan sebagian besar bit sulit untuk Anda. Meskipun masih ada beberapa langkah yang harus diselesaikan, Anda tidak akan mengalami masalah jika Anda memastikan prasyarat terpenuhi sebelum memulai.
Kebanyakan masalah terjadi karena tidak ada runtime container yang tersedia, modul kernel br_netfilter tidak ada, swap diaktifkan, atau kebutuhan untuk menyediakan addon jaringan Pod telah diabaikan. Pemecahan masalah harus dimulai dengan memeriksa kesalahan umum ini.
Kubeadm memberi Anda versi terbaru Kubernetes langsung dari proyek itu sendiri. Distribusi alternatif tersedia yang memungkinkan Anda memulai cluster node tunggal dengan satu perintah. Minikube, MicroK8s, dan K3s adalah tiga opsi populer. Meskipun ini biasanya lebih mudah untuk diatur dan ditingkatkan, semuanya memiliki sedikit perbedaan dibandingkan dengan Kubernetes upstream. Menggunakan Kubeadm membuat Anda lebih dekat dengan cara kerja internal Kubernetes dan dapat diterapkan ke berbagai lingkungan.
Itulah berita seputar
Cara Memulai Cluster Kubernetes Dari Awal Dengan Kubeadm dan Kubectl, semoga bermanfaat.
Disadur dari HowToGeek.com.