W tym artykule przeprowadzę Cię przez kroki instalacji i konfiguracji k3s oraz rancher.
Oto tutorial wideo; kontynuuj czytanie, aby uzyskać listę pisemnych instrukcji. VIDEO
Ćwiczenia do wykonania:# Odinstaluj k3s na węźle głównym i węzłach roboczych Odinstaluj rancher Dodaj wpisy cgroup do cmdline.txt i zrestartuj każdy węzeł z procesorem ARM Zainstaluj bezpiecznie k3s v1.21.1+k3s1 bez traefika Sprawdź status k3s Skopiuj token Skopiuj adres IP węzła głównego Zainstaluj k3s v1.21.1+k3s1 na węzłach roboczych Dodaj etykiety do węzłów roboczych na węźle głównym Włącz uzupełnianie k3s Zainstaluj nginx jako kontroler dostępu w k3s Sprawdź status węzłów i podów Utwórz balanser obciążenia, aby udostępnić porty kontrolera dostępu NGINX Utwórz przestrzeń nazw test Utwórz przykład do testowania Przetestuj konfigurację Sprawdź przykładową aplikację testową Zainstaluj i skonfiguruj Rancher Odinstalowanie k3s na węźle głównym i węzłach roboczych# Skrypt Bash dla węzła głównego: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#! /bin/ bash
# Sprawdź , czy użytkownik jest rootem
if [ "$UID" - ne 0 ]; then
echo "Nie jesteś użytkownikiem root."
exit 1
fi
echo "Jesteś użytkownikiem root."
# Sprawdź , czy k3s - killall .sh istnieje w /usr/ local /bin
if [ - f "/usr/local/bin/k3s-killall.sh" ]; then
echo "Wykonuję k3s-killall.sh..."
/usr/ local /bin/ k3s - killall .sh
else
echo "k3s-killall.sh nie istnieje w /usr/local/bin."
fi
# Sprawdź , czy k3s - uninstall .sh istnieje w /usr/ local /bin
if [ - f "/usr/local/bin/k3s-uninstall.sh" ]; then
echo "Wykonuję k3s-uninstall.sh..."
/usr/ local /bin/ k3s - uninstall .sh
else
echo "k3s-uninstall.sh nie istnieje w /usr/local/bin."
fi
apt install iptables
iptables - save | awk '/^[*]/ { print $1 } /COMMIT/ { print $0; }' | sudo iptables - restore
iptables - S
iptables - F
update - alternatives -- set iptables /usr/ sbin /iptables - legacy
update - alternatives -- set ip6tables /usr/ sbin /ip6tables - legacy
reboot
Kopiuj
Skrypt Bash dla węzłów roboczych: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#! /bin/ bash
# Sprawdź , czy użytkownik jest rootem
if [ "$UID
" -ne 0 ]; then
echo "Nie jesteś użytkownikiem root."
exit 1
fi
echo "Jesteś użytkownikiem root."
# Sprawdź , czy k3s - killall .sh istnieje w /usr/ local /bin
if [ - f "/usr/local/bin/k3s-killall.sh" ]; then
echo "Wykonuję k3s-killall.sh..."
/usr/ local /bin/ k3s - killall .sh
else
echo "k3s-killall.sh nie istnieje w /usr/local/bin."
fi
# Sprawdź , czy k3s - agent - uninstall .sh istnieje w /usr/ local /bin
if [ - f "/usr/local/bin/k3s-agent-uninstall.sh" ]; then
echo "Wykonuję k3s-agent-uninstall.sh..."
/usr/ local /bin/ k3s - agent - uninstall .sh
else
echo "k3s-agent-uninstall.sh nie istnieje w /usr/local/bin."
fi
apt install iptables
iptables - save | awk '/^[*]/ { print $1 } /COMMIT/ { print $0; }' | sudo iptables - restore
iptables - S
iptables - F
update - alternatives -- set iptables /usr/ sbin /iptables - legacy
update - alternatives -- set ip6tables /usr/ sbin /ip6tables - legacy
reboot
Kopiuj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#! /bin/ bash
# Sprawdź , czy użytkownik jest rootem
if [ "$UID" - ne 0 ]; then
echo "Nie jesteś użytkownikiem root."
exit 1
fi
echo "Jesteś użytkownikiem root."
# Sprawdź , czy rancherd - killall .sh istnieje w /usr/ local /bin
if [ - f "/usr/local/bin/rancherd-killall.sh" ]; then
echo "Wykonuję rancherd-killall.sh..."
/usr/ local /bin/ rancherd - killall .sh
else
echo "rancherd-killall.sh nie istnieje w /usr/local/bin."
fi
# Sprawdź , czy rancherd - uninstall .sh istnieje w /usr/ local /bin
if [ - f "/usr/local/bin/rancherd-uninstall.sh" ]; then
echo "Wykonuję rancherd-uninstall.sh..."
/usr/ local /bin/ rancherd - uninstall .sh
else
echo "rancherd-uninstall.sh nie istnieje w /usr/local/bin."
fi
apt install iptables
iptables - save | awk '/^[*]/ { print $1 } /COMMIT/ { print $0; }' | sudo iptables - restore
iptables - S
iptables - F
update - alternatives -- set iptables /usr/ sbin /iptables - legacy
update - alternatives -- set ip6tables /usr/ sbin /ip6tables - legacy
reboot
Kopiuj
Dodanie wpisów cgroup do pliku cmdline.txt na każdym węźle działającym na procesorze ARM.# 1
sudo vim /boot/cmdline.txt
Kopiuj
Dodaj na końcu linii rozpoczynającej się od console= poniższe wpisy: 1
cgroup_memory = 1 cgroup_enable = memory
Kopiuj
Restart serwera# Bezpieczna instalacja k3s v1.21.1+k3s1 na węźle głównym bez traefik# 1
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION = "v1.21.1+k3s1" INSTALL_K3S_EXEC = "--disable traefik" K3S_KUBECONFIG_MODE = "644" sh -s -
Kopiuj
Sprawdź status k3s# 1
2
systemctl status k3s
systemctl is-enabled k3s
Kopiuj
Skopiuj token# 1
sudo cat /var/lib/rancher/k3s/server/node-token
Kopiuj
Skopiuj adres IP węzła głównego# 1
hostname -I | awk '{ print $1 }'
Kopiuj
Instalacja k3s v1.21.1+k3s1 na węzłach roboczych# 1
2
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION = "v1.21.1+k3s1" K3S_TOKEN = "<TWÓJ_TOKEN>" K3S_URL = "https://<URL_WĘZŁA_GŁÓWNEGO>:6443" K3S_NODE_NAME = "worker1" sh -
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION = "v1.21.1+k3s1" K3S_TOKEN = "<TWÓJ_TOKEN>" K3S_URL = "https://<URL_WĘZŁA_GŁÓWNEGO>:6443" K3S_NODE_NAME = "worker2" sh -
Kopiuj
Dodawanie etykiet do węzłów roboczych na węźle głównym# 1
2
kubectl label nodes worker1 kubernetes.io/role= worker
kubectl label nodes worker2 kubernetes.io/role= worker
Kopiuj
Włączenie uzupełniania k3s# 1
2
3
echo 'source <(kubectl completion bash)' >>~/.bashrc
source <( kubectl completion bash)
source .bashrc
Kopiuj
Czym jest kontroler ingress NGINX?# roboczych
Zobacz dokumentację: Kontroler dostępu NGINX
Zainstaluj NGINX jako kontroler ingress w k3s# 1
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.1/deploy/static/provider/baremetal/deploy.yaml
Kopiuj
Zobacz dokumentację: Przewodnik instalacji kontrolera dostępu NGINX
Sprawdzanie statusu węzłów# 1
kubectl get nodes
Kopiuj
Sprawdzanie podów# 1
kubectl get pods -A
Kopiuj
Utwórz load balancer, aby udostępnić porty kontrolera wejściowego NGINX# 1
vim ingress-controller-load-balancer.yaml
Kopiuj
Wprowadź poniższą zawartość do pliku 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
---
apiVersion : v1
kind : Service
metadata :
name : ingress-nginx-controller-loadbalancer
namespace : ingress-nginx
spec :
selector :
app.kubernetes.io/component : controller
app.kubernetes.io/instance : ingress-nginx
app.kubernetes.io/name : ingress-nginx
ports :
- name : http
port : 80
protocol : TCP
targetPort : 80
- name : https
port : 443
protocol : TCP
targetPort : 443
type : LoadBalancer
Kopiuj
Uruchom plik yaml za pomocą kubectl# 1
kubectl apply -f ingress-controller-load-balancer.yaml
Kopiuj
Utwórz przestrzeń nazw test# 1
kubectl create namespace test
Kopiuj
Utwórz przykład do testowania# Poniższy przykład wykorzystuje kontroler dostępu NGINX do utworzenia wdrożenia (deployment) i jego udostępnienia. Ponieważ domyślnie będzie używany SSL i może wystąpić błąd z powodu braku certyfikatu, ważne jest zwrócenie uwagi na adnotację nginx.ingress.kubernetes.io/ssl-redirect: “false”.
Kolejnym ważnym czynnikiem jest użyta nazwa domeny. Będę używać nazwy domeny test.localhost, ale oczywiście powinieneś ją zmienić na swoją i skierować do węzła Twojej instancji k3s.
Utwórz plik o nazwie my-example.yaml i użyj poniższej składni, aby zaimplementować ten przykład do testowania Ingress:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
---
apiVersion : apps/v1
kind : Deployment
metadata :
name : test-nginx-app
namespace : test
spec :
selector :
matchLabels :
name : test-nginx-backend
template :
metadata :
labels :
name : test-nginx-backend
spec :
containers :
- name : backend
image : docker.io/nginx:alpine
imagePullPolicy : Always
ports :
- containerPort : 80
---
apiVersion : v1
kind : Service
metadata :
name : test-nginx-service
namespace : test
spec :
ports :
- name : http
port : 80
protocol : TCP
targetPort : 80
selector :
name : test-nginx-backend
---
apiVersion : networking.k8s.io/v1
kind : Ingress
metadata :
name : test-nginx-ingress
namespace : test
annotations :
nginx.ingress.kubernetes.io/ssl-redirect : "false"
spec :
rules :
- host : test.localhost
http :
paths :
- path : /
pathType : Prefix
backend :
service :
name : test-nginx-service
port :
number : 80
Kopiuj
Zastosuj przykład do testowania# 1
kubectl apply -f my-example.yaml --namespace test
Kopiuj
Testowanie konfiguracji# 1
2
3
4
5
kubectl cluster-info
kubectl get nodes
kubectl get pods -A
kubectl config get-contexts
kubectl get all --all-namespaces
Kopiuj
Sprawdzanie usług k3s# 1
kubectl get svc --all-namespaces -o wide
Kopiuj
Sprawdź przykładową aplikację testową# 1
curl http://10.43.XX.XX
Kopiuj
Jeśli nie zadziała, wykonaj poniższe polecenie, a następnie sprawdź ponownie aplikację
1
kubectl replace -f test.yaml --namespace test --force
Kopiuj
Instalacja Rancher# 1
mkdir -p /etc/rancher/rke2
Kopiuj
1
vim /etc/rancher/rke2/config.yaml
Kopiuj
Dodaj poniższe wpisy do pliku config.yaml. Zmień adres IP - musi być taki sam, jak na maszynie, na której instalujesz Rancher. 1
2
3
token : Adw94lUaTgKfR93V0BZU
tls - san :
- 10 .XX .X .XXX
Kopiuj
Instalacja Rancher v. 2.5.8# 1
curl -sfL https://get.rancher.io | INSTALL_RANCHERD_VERSION = "v2.5.8" sh -
Kopiuj
Włącz i uruchom usługę rancherd-server# 1
2
systemctl enable rancherd-server.service
systemctl start rancherd-server.service
Kopiuj
Sprawdzaj postępy z journalctl# 1
journalctl -eu rancherd-server -f
Kopiuj
Pamiętaj, aby czekać do końca. Zobacz wideo, aby zrozumieć wyjaśnienie. ctrl+c pozwoli Ci wyjść z okna journalctl.
Sprawdź wersję rancher# Zresetuj hasło rancher dla admina# 1
rancherd reset-admin
Kopiuj
Jeśli nie zadziała, spróbuj ponownie uruchomić usługę rancherd-server.
1
systemctl restart rancherd-server.service
Kopiuj
Poczekaj chwilę i uruchom ponownie:
1
rancherd reset-admin
Kopiuj
Powinno pokazać coś takiego:
1
2
INFO[ 0000] Server URL: https://10.10.0.120:8443
INFO[ 0000] Default admin and password created. Username: admin, Password: bk777mwr69wfgpwvbbk2d52f4mjsj4ssqxqnwstcpzvlc9wnlf59mk
Kopiuj
Skopiuj URL i hasło.
Wklej URL do przeglądarki i zaloguj się jako admin z wygenerowanym hasłem.
Zmień hasło na to, którego chcesz używać. System poprosi o to. Pozostaw resztę bez zmian. Zaznacz, że zgadzasz się z warunkami użytkowania.
Nadpisz obraz agenta dla węzłów/klasterów z procesorami ARM. Zobacz wideo# W polu agentimageoverride API: dodaj
1
rancher /rancher - agent :v2 .5 .8 - linux - arm64
Kopiuj
Comments