Ini adalah entri notebook terkait Kubernetes lainnya di mana saya akan mendokumentasikan prosedur untuk menyiapkan cluster Kubernetes menggunakan K3S di mesin virtual yang dibuat dengan Multipass Canonical. Selain itu, saya akan menjelaskan cara mengonfigurasi kubectl, alat manajemen klaster baris perintah Kubernetes untuk mengelola klaster K3S dari luar mesin virtual tempat klaster akan dijalankan.
Multipass dapat dijalankan di Windows, Mac OS X dan Linux sehingga prosedur yang dijelaskan dalam artikel ini harus berlaku untuk semua lingkungan yang disebutkan di atas meskipun saya hanya mengujinya di Mac OS X.
Latar Belakang
Pembaca yang cerdik akan mengingat artikel saya baru-baru ini di mana saya menjelaskan cara menjalankan cluster Kubernetes di Docker dan mungkin bertanya-tanya mengapa saya sekarang pindah ke K3S daripada Kind.
Ada dua alasan untuk ini:
- K3S mengklaim siap produksi.
Mungkin belum siap produksi skala Google, tapi saya rasa cukup untuk kebutuhan saya. - K3S lebih mirip dengan cluster Kubernetes asli.
Selama waktu singkat saya bekerja dengan Kind, saya mengalami dua masalah yang membuat saya melihat K3S: - – Jenis cluster tidak dapat dimulai ulang.
- – Jenis tidak mendukung jenis LoadBalancer.
Prasyarat
Untuk mempersiapkan K3S, saya akan menginstal beberapa alat yang saya perlukan dan kemudian membuat mesin virtual di mana K3S akan berjalan.
Alat
Sebelum menginstal K3S, alat-alat berikut perlu diinstal pada komputer yang bertindak sebagai host untuk mesin virtual:
- Multipass
Mesin virtual Canonical tempat instance Ubuntu dapat dijalankan.
Petunjuk tentang cara menginstal Multipass dapat ditemukan di sini. - kubectl
Seperti sebelumnya, kubectl adalah alat manajemen cluster baris perintah Kubernetes.
Petunjuk tentang cara menginstal kubectl dapat ditemukan di sini.
Mesin Virtual
Saya akan membuat cluster Kubernetes yang terdiri dari dua node; satu master dan satu agen. Untuk ini saya membutuhkan dua mesin virtual.
Setelah menginstal Multipass, buka jendela terminal:
- Buat dan mulai mesin virtual node master:
multipass launch --name k3s-master --mem 4G --disk 5G 18.04
multipass launch --name k3s-agent --mem 4G --disk 5G 18.04
- Verifikasi kedua mesin virtual:
multipass list
Outputnya harus seperti berikut:
Name State IPv4 Image
k3s-agent Running 192.168.64.10 Ubuntu 18.04 LTS
k3s-master Running 192.168.64.7 Ubuntu 18.04 LTS
Catat alamat IP k3s-master – ini akan dibutuhkan nanti saat menginstal K3S di node agen.
Instal K3S
Berikut ini menjelaskan cara menginstal K3S pada node master dan agen.
Instal K3S di Master Node
Pada langkah ini kita akan menginstal K3S pada master node dan mengambil token master node yang nantinya kita perlukan untuk membuat node K3S yang akan dikelola oleh manager.
- Buka jendela terminal jika perlu.
- Buka shell pada VM k3s-master:
multipass shell k3s-master
curl -sfL https://get.k3s.io | sh -
Output yang mirip dengan berikut ini akan muncul di konsol:
[INFO] Finding latest release
[INFO] Using v1.17.4+k3s1 as release
[INFO] Downloading hash https://github.com/rancher/k3s/releases/download/v1.17.4+k3s1/sha256sum-amd64.txt
[INFO] Downloading binary https://github.com/rancher/k3s/releases/download/v1.17.4+k3s1/k3s
[INFO] Verifying binary download
[INFO] Installing k3s to /usr/local/bin/k3s
chcon: can't apply partial context to unlabeled file '/usr/local/bin/k3s'
[INFO] Creating /usr/local/bin/kubectl symlink to k3s
[INFO] Creating /usr/local/bin/crictl symlink to k3s
[INFO] Creating /usr/local/bin/ctr symlink to k3s
[INFO] Creating killall script /usr/local/bin/k3s-killall.sh
[INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO] env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO] systemd: Creating service file /etc/systemd/system/k3s.service
[INFO] systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO] systemd: Starting k3s
Verifikasi instalasi K3S:
k3s -version
sehingga output dari perintah di atas terlihat seperti ini:
k3s version v1.17.4+k3s1 (3eee8ac3)
Ambil token simpul master:
sudo cat /var/lib/rancher/k3s/server/node-token
K103a5c4b22b4de5715dff39d58b1325c38e84217d40146c0f65249d439cab1a531::server:271a74dadde37a98053a984a8dc676f8
Keluar dari shell VM k3s-master:
exit
Instal K3S di Node Agen
Dengan alamat IP dan token node master K3S, saya sekarang siap untuk menginstal K3S pada node agen:
- Buka jendela terminal jika perlu.
- Buka shell di k3s-agent VM:
multipass shell k3s-agent
- Instal K3S versi terbaru untuk node agen.
Ganti alamat IP k3s-master di variabel K3S_URL dan token node di variabel K3S_TOKEN:
curl -sfL https://get.k3s.io | K3S_URL="https://192.168.64.7:6443" K3S_TOKEN="K103a5c4b22b4de5715dff39d58b1325c38e84217d40146c0f65249d439cab1a531::server:271a74dadde37a98053a984a8dc676f8" sh -
Output yang mirip dengan ini akan muncul di konsol:
[INFO] Finding latest release
[INFO] Using v1.17.4+k3s1 as release
[INFO] Downloading hash https://github.com/rancher/k3s/releases/download/v1.17.4+k3s1/sha256sum-amd64.txt
[INFO] Downloading binary https://github.com/rancher/k3s/releases/download/v1.17.4+k3s1/k3s
[INFO] Verifying binary download
[INFO] Installing k3s to /usr/local/bin/k3s
chcon: can't apply partial context to unlabeled file '/usr/local/bin/k3s'
[INFO] Creating /usr/local/bin/kubectl symlink to k3s
[INFO] Creating /usr/local/bin/crictl symlink to k3s
[INFO] Creating /usr/local/bin/ctr symlink to k3s
[INFO] Creating killall script /usr/local/bin/k3s-killall.sh
[INFO] Creating uninstall script /usr/local/bin/k3s-agent-uninstall.sh
[INFO] env: Creating environment file /etc/systemd/system/k3s-agent.service.env
[INFO] systemd: Creating service file /etc/systemd/system/k3s-agent.service
[INFO] systemd: Enabling k3s-agent unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s-agent.service → /etc/systemd/system/k3s-agent.service.
[INFO] systemd: Starting k3s-agent
Keluar dari shell VM k3s-agent:
exit
Verifikasi Cluster
Sebelum mengonfigurasi kubectl di host VM Multipass (atau di tempat lain, di luar mesin virtual K3S), saya ingin segera memverifikasi bahwa cluster K3S sudah diatur dengan benar.
- Buka jendela terminal jika perlu.
- Buka shell pada VM k3s-master:
multipass shell k3s-master
Buat daftar node dalam cluster:
sudo kubectl get nodes -o wide
Dalam kasus saya, daftar simpul terlihat seperti ini:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
k3s-agent Ready <none> 5m31s v1.17.4+k3s1 192.168.64.10 <none> Ubuntu 18.04.4 LTS 4.15.0-91-generic containerd://1.3.3-k3s2
k3s-master Ready master 39m v1.17.4+k3s1 192.168.64.7 <none> Ubuntu 18.04.4 LTS 4.15.0-91-generic containerd://1.3.3-k3s2
exit
Konfigurasi kubectl Eksternal
Dengan mengaktifkan dan menjalankan cluster K3S, sekarang saya akan mengonfigurasi kubectl yang telah saya instal di host VM, yang merupakan komputer pengembangan saya, untuk dapat mengelola cluster K3S.
Ambil Konfigurasi Master Node kubectl
Agar dapat mengonfigurasi alat manajemen kubectl eksternal untuk mengelola cluster K3S yang baru saja dibuat, saya menyalin konfigurasi kubectl dari node master dan kemudian membuat beberapa modifikasi:
- Buka jendela terminal jika perlu.
- Buka shell pada VM k3s-master:
multipass shell k3s-master
- Melihat konfigurasi kubectl node master:
sudo kubectl config view
Dalam kasus saya, terlihat seperti ini:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://127.0.0.1:6443
name: default
contexts:
- context:
cluster: default
user: default
name: default
current-context: default
kind: Config
preferences: {}
users:
- name: default
user:
password: ea3527757bd8c5c9ae8dbb00fef7595c
username: admin
Perhatikan bahwa file konfigurasi Anda tidak akan sama dengan di atas – kata sandinya akan berbeda misalnya.
- Keluar dari shell VM k3s-master:
exit
Ganti Konfigurasi kubectl
Saya sekarang dapat mengganti konfigurasi kubectl di host VM dengan versi modifikasi dari konfigurasi kubectl dari master node:
- Buka jendela terminal jika perlu.
- Edit, atau buat jika tidak ada, konfigurasi kubectl lokal:
vi ~/.kube/config
- Ganti isinya, jika ada, dengan konfigurasi kubectl dari master node.
- Ubah alamat IP cluster ke alamat IP VM k3s-master dan konfigurasikan untuk melewati verifikasi TLS.
Hasilnya akan terlihat seperti ini, dengan baris 4 dan 5 diubah:
apiVersion: v1
clusters:
- cluster:
insecure-skip-tls-verify: true
server: https://192.168.64.7:6443
name: default
contexts:
- context:
cluster: default
user: default
name: default
current-context: default
kind: Config
preferences: {}
users:
- name: default
user:
password: ea3527757bd8c5c9ae8dbb00fef7595c
username: admin
- Simpan konfigurasi dan keluar vi:
:wq - Verifikasi konfigurasi:
kubectl get nodes
Node yang sama seperti yang terdaftar dari dalam master node harus terdaftar sekarang juga, meskipun dalam daftar yang lebih ringkas:
NAME STATUS ROLES AGE VERSION
k3s-master Ready master 66m v1.17.4+k3s1
k3s-agent Ready <none> 32m v1.17.4+k3s1
Mulai ulang K3S Cluster
Seperti pada pendahuluan, salah satu alasan untuk beralih dari Kind ke K3S adalah kemampuan untuk dapat memulai kembali klaster K3S. Jika saya perlu menghentikan pekerjaan saya yang berhubungan dengan Kubernetes, saya hanya mematikan komputer saya, yang menjadi host dari mesin virtual K3S. Ketika saya me-restart komputer, yang harus saya lakukan untuk me-restart cluster K3S dan mengembalikannya ke keadaan sebelumnya adalah me-restart mesin virtual cluster dengan dua perintah berikut:
multipass start k3s-master
multipass start k3s-agent