Toto je další záznam notebooku související s Kubernetes, ve kterém zdokumentuji postup nastavení clusteru Kubernetes pomocí K3S ve virtuálních počítačích vytvořených pomocí Canonical Multipass. Kromě toho popíšu, jak nakonfigurovat kubectl, nástroj pro správu clusteru příkazového řádku Kubernetes pro správu clusteru K3S mimo virtuální počítače, na kterých bude cluster běžet.
Multipass lze spustit ve Windows, Mac OS X a Linux, takže postup popsaný v tomto článku by měl platit pro všechna výše zmíněná prostředí, i když jsem ho testoval pouze v Mac OS X.
Pozadí
Bystrý čtenář si vzpomene na můj nedávný článek, ve kterém jsem popisoval, jak spustit cluster Kubernetes v Dockeru, a možná se diví, proč jsem nyní místo Kind přešel na K3S.
Jsou pro to dva důvody:
- K3S tvrdí, že je připraven na výrobu.
Možná není připravena výroba v měřítku Google, ale mám podezření, že pro mé potřeby stačí. - K3S se více podobá skutečnému clusteru Kubernetes.
Během krátké doby, co pracuji s Kind, jsem se setkal se dvěma problémy, které mě donutily podívat se na K3S: - – Kind cluster nelze restartovat.
- – Kind nepodporuje typ LoadBalancer.
Předpoklady
Abych se připravil na K3S, nainstaluji si několik nástrojů, které budu potřebovat, a poté vytvořím virtuální stroje, na kterých K3S poběží.
Nástroje
Před instalací K3S je třeba na počítači, který má fungovat jako hostitel pro virtuální stroje, nainstalovat následující nástroje:
- Víceprůchodové
Virtuální stroj Canonical, na kterém lze spouštět instance Ubuntu.
Návod, jak nainstalovat Multipass, naleznete zde. - kubectl
Stejně jako dříve je kubectl nástroj pro správu clusteru příkazového řádku Kubernetes.
Návod jak nainstalovat kubectl naleznete zde.
Virtuální stroje
Vytvořím cluster Kubernetes, který se skládá ze dvou uzlů; jeden mistr a jeden agent. K tomu budu potřebovat dva virtuální stroje.
Po instalaci Multipass otevřete okno terminálu:
- Vytvořte a spusťte virtuální počítač hlavního uzlu:
multipass launch --name k3s-master --mem 4G --disk 5G 18.04
multipass launch --name k3s-agent --mem 4G --disk 5G 18.04
- Ověřte dva virtuální počítače:
multipass list
Výstup by měl být podobný následujícímu:
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
Poznamenejte si IP adresu k3s-master – bude potřeba později při instalaci K3S na uzel agenta.
Nainstalujte K3S
Následující text popisuje, jak nainstalovat K3S na hlavní uzly a uzly agenta.
Nainstalujte K3S na hlavní uzel
V tomto kroku nainstalujeme K3S na hlavní uzel a získáme token hlavního uzlu, který budeme později potřebovat k vytvoření uzlu K3S, který bude spravovat správce.
- V případě potřeby otevřete okno terminálu.
- Otevřete prostředí na hlavním virtuálním počítači k3s:
multipass shell k3s-master
curl -sfL https://get.k3s.io | sh -
V konzole by se měl objevit výstup podobný následujícímu:
[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
Ověřte instalaci K3S:
k3s -version
takže výstup z výše uvedeného příkazu vypadá takto:
k3s version v1.17.4+k3s1 (3eee8ac3)
Získejte token hlavního uzlu:
sudo cat /var/lib/rancher/k3s/server/node-token
K103a5c4b22b4de5715dff39d58b1325c38e84217d40146c0f65249d439cab1a531::server:271a74dadde37a98053a984a8dc676f8
Ukončete prostředí k3s-master VM:
exit
Nainstalujte K3S na Agent Node
S IP adresou a tokenem uzlu hlavního serveru K3S jsem nyní připraven nainstalovat K3S na uzel agenta:
- V případě potřeby otevřete okno terminálu.
- Otevřete prostředí na virtuálním počítači agenta k3s:
multipass shell k3s-agent
- Nainstalujte nejnovější verzi K3S pro uzel agenta.
Nahraďte IP adresu k3s-master v proměnné K3S_URL a token uzlu v proměnné K3S_TOKEN:
curl -sfL https://get.k3s.io | K3S_URL="https://192.168.64.7:6443" K3S_TOKEN="K103a5c4b22b4de5715dff39d58b1325c38e84217d40146c0f65249d439cab1a531::server:271a74dadde37a98053a984a8dc676f8" sh -
Výstup podobný tomuto by se měl objevit v konzole:
[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
Ukončete prostředí virtuálního počítače k3s-agent:
exit
Ověřte klastr
Před konfigurací kubectl v hostiteli Multipass VM (nebo jinde, mimo virtuální stroje K3S), chci rychle ověřit, zda je cluster K3S správně nastaven.
- V případě potřeby otevřete okno terminálu.
- Otevřete prostředí na hlavním virtuálním počítači k3s:
multipass shell k3s-master
Seznam uzlů v clusteru:
sudo kubectl get nodes -o wide
V mém případě vypadá seznam uzlů takto:
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
Konfigurovat externí kubectl
Se spuštěným a spuštěným clusterem K3S nyní nakonfiguruji kubectl, který jsem nainstaloval na hostiteli virtuálního počítače, což je můj vývojový počítač, abych mohl spravovat cluster K3S.
Načíst konfiguraci hlavního uzlu kubectl
Aby bylo možné nakonfigurovat externí nástroj pro správu kubectl pro správu právě vytvořeného clusteru K3S, zkopíruji konfiguraci kubectl z hlavního uzlu a později provedu několik úprav:
- V případě potřeby otevřete okno terminálu.
- Otevřete prostředí na hlavním virtuálním počítači k3s:
multipass shell k3s-master
- Zobrazit konfiguraci kubectl hlavního uzlu:
sudo kubectl config view
V mém případě to vypadá takto:
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
Všimněte si, že váš konfigurační soubor nebude totožný s výše uvedeným – bude se například lišit heslo.
- Ukončete prostředí k3s-master VM:
exit
Nahradit konfiguraci kubectl
Nyní mohu nahradit konfiguraci kubectl v hostiteli virtuálního počítače upravenou verzí konfigurace kubectl z hlavního uzlu:
- V případě potřeby otevřete okno terminálu.
- Upravte nebo vytvořte místní konfiguraci kubectl, pokud neexistuje:
vi ~/.kube/config
- Nahraďte obsah, pokud existuje, konfigurací kubectl z hlavního uzlu.
- Změňte IP adresu clusteru na IP adresu hlavního virtuálního počítače k3s a nakonfigurujte tak, aby přeskakovalo ověření TLS.
Výsledek bude vypadat takto, přičemž řádky 4 a 5 budou upraveny:
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
- Uložte konfiguraci a ukončete vi:
:wq - Ověřte konfiguraci:
kubectl get nodes
Stejné uzly, jaké jsou uvedeny v hlavním uzlu, by nyní měly být uvedeny také, i když v kompaktnějším seznamu:
NAME STATUS ROLES AGE VERSION
k3s-master Ready master 66m v1.17.4+k3s1
k3s-agent Ready <none> 32m v1.17.4+k3s1
Restartujte klastr K3S
Stejně jako v úvodu je jedním z důvodů přechodu z Kind na K3S možnost restartovat cluster K3S. Pokud potřebuji přerušit svou práci související s Kubernetes, prostě vypnu počítač, který je hostitelem virtuálních strojů K3S. Když později restartuji počítač, vše, co musím udělat, abych restartoval cluster K3S a obnovil jej do předchozího stavu, je restartování virtuálních počítačů clusteru pomocí následujících dvou příkazů:
multipass start k3s-master
multipass start k3s-agent