GNU/Linux >> Belajar Linux >  >> Linux

Cluster Kubernetes menggunakan K3S dengan Multipass Canonical

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


Linux
  1. Apa itu Kubernetes? Panduan Lengkap

  2. Cara men-deploy pod pertama Anda di Cluster Kubernetes

  3. Siapkan cluster Kubernetes dengan Rancher

  1. Cara Mengatur Cluster Kubernetes dengan Rancher

  2. Cara Menyebarkan Cluster Redis di Kubernetes

  3. Cara Memasang Cluster Kubernetes di CentOS 7

  1. Cara Memasang Cluster Kubernetes (k8s) di RHEL 8

  2. Cara Install Cluster Kubernetes di Rocky Linux 8

  3. Cara Mengatur Cluster Kubernetes(k8s) di HA dengan Kubeadm