Menjalankan Cluster Kubernetes Di Docker Dengan K3d

  • Post author:
  • Post category:Tutorial

K3d adalah pembungkus sumber terbuka di sekitar distribusi Kubernetes Rancher/SUSE K3s yang memungkinkan Anda menjalankan bidang kontrol di dalam Docker. Seluruh tumpukan berjalan di Docker, memberi Anda kluster terkemas sepenuhnya yang ringan dan mudah disiapkan.

Meskipun K3s dirancang untuk berbagai alur kerja, K3d lebih berfokus secara khusus pada situasi pengembangan di mana Anda sudah menggunakan Docker. Ini memungkinkan Anda menjalankan klaster Kubernetes di host Docker yang ada tanpa menjalankan mesin virtual atau layanan sistem lainnya.

Artikel ini akan menunjukkan kepada Anda cara memulai dan menjalankan klaster K3d sederhana. Anda memerlukan Kubectl dan Docker v20.10.5 atau yang lebih baru yang sudah terinstal di sistem Anda sebelum memulai. K3d bekerja di Linux, Mac (termasuk melalui Homebrew), dan Windows (melalui Chocolatey). Panduan ini berfokus pada penggunaan dengan Linux; Petunjuk penginstalan k3d CLI untuk platform lain tersedia di dokumentasi.

Menginstal K3d CLI

K3d CLI menyediakan perintah manajemen untuk membuat dan mengelola klaster Anda. Anda dapat menemukan CLI terbaru di GitHub atau menjalankan skrip instalasi untuk secara otomatis mendapatkan unduhan yang benar untuk sistem Anda.

$ curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash

Skrip menyimpan biner k3d ke direktori /usr/local/bin Anda. Coba jalankan perintah k3d version untuk memeriksa instalasi Anda berhasil:

$ k3d version k3d version v5.4.6 k3s version v1.24.4-k3s1 (default)

Membuat Cluster

K3d CLI menyediakan perintah pembuatan cluster untuk membuat dan memulai cluster baru secara otomatis:

$ k3d cluster create INFO[0000] Persiapan: Network INFO[0000] Membuat jaringan `k3d-k3s-default` INFO[0000] Membuat volume gambar k3d-k3s-default-images INFO[0000] Memulai node alat baru… INFO[0001] Membuat simpul `k3d-k3s-default-server-0` INFO[0001] Menarik gambar `ghcr.io/k3d-io/k3d-tools:5.4.6` INFO[0002] Menarik gambar `docker.io /rancher/k3s:v1.24.4-k3s1` INFO[0002] Memulai Node `k3d-k3s-default-tools` INFO[0008] Membuat LoadBalancer `k3d-k3s-default-serverlb` INFO[0009] Menarik gambar `ghcr. io/k3d-io/k3d-proxy:5.4.6` INFO[0012] Menggunakan node k3d-tools untuk mengumpulkan informasi lingkungan INFO[0012] HostIP: using network gateway 172.25.0.1 alamat INFO[0012] Memulai cluster `k3s- default` INFO[0012] Memulai server… INFO [0012] Memulai Node `k3d-k3s-default-server-0` INFO[0016] Semua agen sudah berjalan. INFO[0016] Memulai helper… INFO[0016] Memulai Node `k3d-k3s-default-serverlb` INFO[0022] Menyuntikkan record untuk hostAliases (termasuk host.k3d.internal) dan untuk 2 anggota jaringan ke dalam peta konfigurasi CoreDNS. .. INFO[0025] Cluster `k3s-default` berhasil dibuat! INFO[0025] Sekarang Anda dapat menggunakannya seperti ini: kubectl cluster-info

Kluster akan diberi nama k3s-default ketika Anda menjalankan perintah tanpa argumen apa pun. Tetapkan nama Anda sendiri dengan memasukkannya sebagai argumen pertama perintah:

$ k3d cluster create demo ...

K3d secara otomatis memodifikasi file konfigurasi Kubernetes Anda (.kube/config) untuk menyertakan koneksi ke cluster baru Anda. Ini menandai koneksi sebagai default sehingga perintah kubectl sekarang akan menargetkan lingkungan K3d Anda.

$ kubectl cluster-info

Control plane Kubernetes berjalan di https://0.0.0.0:42879 CoreDNS berjalan di https://0.0.0.0: 42879/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy Metrics-server berjalan di https://0.0.0.0:42879/api/v1/namespaces/kube-system/services/https :metrics-server:https/proxy

Menjalankan docker ps akan menunjukkan dua kontainer telah dimulai, satu untuk K3 dan satu lagi untuk proksi K3d yang meneruskan lalu lintas ke cluster Anda:

$ docker ps CONTAINER ID IMAGE COMMAND NAMA PORT STATUS YANG DIBUAT 9b6b610ad312 ghcr.io/ k3d-io/k3d-proxy:5.4.6 “/bin/sh -c nginx-pr…” 3 menit yang lalu Naik 3 menit 80/tcp, 0.0.0.0:42879->6443/tcp k3d-k3s-default -serverlb 842cc90b78bf rancher/k3s:v1.24.4-k3s1 “/bin/k3s server –t…” 3 menit yang lalu Naik 3 menit k3d-k3s-default-server-0

Menggunakan Cluster Anda

Gunakan perintah Kubectl yang sudah dikenal untuk berinteraksi dengan cluster Anda dan men-deploy Pod Anda:

$ kubectl run nginx --image nginx:latest pod/nginx created 
$ kubectl expose pod/nginx --port 80 --type service NodePort/nginx terkena

Untuk mengakses server NGINX Anda, pertama-tama temukan alamat IP yang ditetapkan untuk Kubernetes Anda Node:

$ kubectl dapatkan node -o lebar NAMA STATUS PERAN USIA VERSI INTERNAL-IP EKSTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER- RUNTIME k3d-k3s-default-server-0 Pesawat kontrol siap, master 102s v1.24.4+k3s1 172.27.0.2 K3s dev 5.4.0-125-generic containerd://1.6.6-k3s1

IP yang benar untuk digunakan adalah 172.27. 0.2.

Selanjutnya temukan NodePort yang ditetapkan untuk layanan nginx Anda:

$ kubectl get services

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.43.0.1 443/TCP 5 m49s nginx NodePort 10.43.235.233 80:31214/TCP 1s

Nomor port yang terbuka adalah 31214. Membuat permintaan ke 172.17.0.2:31214 akan mengeluarkan halaman selamat datang NGINX default:

$ curl http://172.17.0.2:31214

Selamat datang di nginx ! …

Anda bisa mendapatkan panduan lebih lanjut tentang mengekspos layanan dan menyiapkan jaringan Ingress dalam dokumentasi K3d.

Mengaktifkan Bendera K3s

Perintah pembuatan klaster membungkus proses pembuatan klaster K3s standar. Anda dapat meneruskan argumen ke K3 dengan menyediakan flag –k3s-arg. Nilai flag harus berupa argumen yang akan disertakan saat K3d memanggil biner K3s.

$ k3s cluster create --k3s-arg "--disable=traefik"

Contoh ini menginstruksikan K3 untuk menonaktifkan komponen Traefik bawaannya.

Mengakses Layanan yang Berjalan di Host

Beberapa beban kerja yang Anda jalankan di K3d mungkin perlu mengakses layanan yang sudah berjalan di host Docker Anda. K3d menyediakan nama host yang disebut host.k3d.internal dalam konfigurasi DNS default-nya. Ini akan secara otomatis menyelesaikan ke mesin host Anda. Anda dapat mereferensikan nama host khusus ini di dalam Pod Anda untuk mengakses database yang ada, berbagi file, dan API lain yang berjalan di luar Kubernetes.

Menggunakan Gambar Docker Lokal

Kluster K3d/K3s Anda tidak dapat mengakses image Docker lokal Anda. Cluster dan semua komponennya berjalan di dalam Docker. Mencoba menggunakan gambar pribadi yang hanya ada di host akan gagal dan melaporkan kesalahan.

Ada dua cara untuk menyelesaikan ini: dorong gambar Anda ke registri, atau gunakan fitur impor gambar K3d untuk menyalin gambar lokal ke dalam cluster Anda. Metode pertama umumnya lebih disukai karena memusatkan penyimpanan gambar Anda dan memungkinkan Anda mengakses gambar dari lingkungan apa pun. Namun, saat menguji perubahan lokal dengan cepat, Anda mungkin ingin langsung mengimpor gambar yang baru saja Anda buat:

$ k3d image import demo-image:latest

Perintah ini akan membuat demo-image:latest tersedia di dalam cluster Anda.

K3d juga dapat membuat dan mengekspos registri gambar untuk Anda. Registri paling baik dibuat bersama cluster Anda karena K3d kemudian dapat secara otomatis mengonfigurasi akses cluster:

$ k3d cluster create --registry-create demo-registry

Ini memulai cluster baru dengan registri yang disebut demo-registry. Registri akan berjalan dalam wadah Docker-nya sendiri. Anda dapat menemukan nomor port tempat registri terbuka dengan menjalankan docker ps -f name=-registry, di mana nama cluster Anda. Mendorong image ke registry ini akan membuatnya dapat diakses oleh Pod di cluster.

$ tag docker Anda demo-image:latest k3d-demo-registry.localhost:12345/demo-image:latest 
$ docker push k3d-demo-registry.localhost: 12345/demo-image:latest

Anda juga dapat membuat registry sesuai permintaan, tetapi Anda harus mengonfigurasi ulang cluster secara manual untuk menyediakan detail koneksi.

Menghentikan Cluster

Cluster K3d Anda akan terus berjalan hingga Anda menghentikannya sendiri. Perintah cluster stop berhenti menjalankan container Docker sambil mempertahankan data cluster Anda:

$ k3d cluster stop k3s-default

Mulai ulang cluster Anda di masa mendatang menggunakan perintah cluster start:

$ k3d cluster start k3s-default

Menghapus Cluster Anda

Anda dapat menghapus cluster kapan saja dengan menjalankan perintah hapus cluster dan berikan namanya. Ini akan menghapus semua jejak cluster, menghapus wadah Docker dan volume yang menyediakannya. Menghapus semua cluster Anda akan membawa host Anda kembali ke kondisi yang bersih dengan hanya menginstal K3d CLI.

$ cluster k3d delete k3s-default INFO[0000] Menghapus cluster `k3s-default` INFO[0001] Menghapus jaringan cluster `k3d-k3s -default` INFO[0001] Menghapus 2 volume terlampir… INFO[0001] Menghapus detail cluster dari kubeconfig default… INFO[0001] Menghapus file kubeconfig mandiri (jika ada)… INFO[0001] Berhasil dihapus cluster k3s-default!

Proses penghapusan secara otomatis menghapus referensi ke cluster dari Kubeconfig.

K3d memungkinkan Anda menjalankan cluster Kubernetes dalam container. Ini menyediakan lingkungan K3 yang lengkap di mana pun Docker tersedia. K3d mendukung banyak node, memiliki dukungan terintegrasi untuk pendaftar gambar, dan dapat digunakan untuk membuat cluster yang sangat tersedia dengan beberapa bidang kontrol.

Pengembang yang sudah menjalankan Docker dapat menggunakan K3d untuk menambahkan Kubernetes dengan cepat ke lingkungan kerja mereka. K3d ringan, mudah dikelola, dan tidak menambahkan layanan sistem lain ke mesin Anda. Ini menjadikannya pilihan yang bagus untuk penggunaan lokal tetapi ketergantungannya pada Docker berarti mungkin tidak cocok untuk host produksi di mana Anda tidak ingin menambahkan ketergantungan lain. Distribusi Kubernetes lainnya seperti Minikube, Microk8s, dan K3 biasa semuanya merupakan alternatif yang layak.

Itulah berita seputar Menjalankan Cluster Kubernetes Di Docker Dengan K3d, semoga bermanfaat. Disadur dari HowToGeek.com.