add: k3s (второй мастер)
This commit is contained in:
parent
374f356435
commit
bbaf3c4014
@ -23,7 +23,7 @@ IoT-устройства, edge-серверы и т.п.). Для кластер
|
||||
Мне же надо, чтобы как миниум две (а лучше все) ноды могли быть мастерами, так что я буду делать k3s-кластер
|
||||
с использованием *etcd*.
|
||||
|
||||
## Установка k3s на первом узле
|
||||
## Установка k3s на первом узле (мастер)
|
||||
|
||||
Некоторые требования к узлам:
|
||||
* На всех Orange Pi установлена одинаковая версия Ubuntu (например, 22.04 или 24.04).
|
||||
@ -33,7 +33,7 @@ IoT-устройства, edge-серверы и т.п.). Для кластер
|
||||
|
||||
Установливаем первый мастер:
|
||||
```bash
|
||||
curl -sfL https://get.k3s.io | sh -s - server --cluster-init --tls-san=192.168.1.10
|
||||
curl -sfL https://get.k3s.io | sh -s - server --cluster-init --tls-san=192.168.1.27
|
||||
```
|
||||
|
||||
Здесь:
|
||||
@ -44,7 +44,7 @@ curl -sfL https://get.k3s.io | sh -s - server --cluster-init --tls-san=192.168.1
|
||||
* `--cluster-init` -- добавляет поддержку высокой доступности (HA -- High Availability) через встроенный `etcd`. Это
|
||||
значит, что узел инициализирует новый кластер и готов к тому, чтобы другие мастер-узлы могли к нему подключиться
|
||||
(для создания HA-конфигурации).
|
||||
* `--tls-san=192.168.1.10` -- добавляет IP 192.168.1.10 в сертификаты API-сервера, чтобы другие узлы и клиенты
|
||||
* `--tls-san=192.168.1.27` -- добавляет IP 192.168.1.27 в сертификаты API-сервера, чтобы другие узлы и клиенты
|
||||
могли обращаться к нему по этому адресу.
|
||||
|
||||
Проверим, что все k3s запущен:
|
||||
@ -129,7 +129,7 @@ kube-system traefik-5d45fc8cc9-t5d58 1/1 Running 0
|
||||
|
||||
Можно проверить, что API нашего узла (кластера) отвечает:
|
||||
```bash
|
||||
curl -k https://192.168.1.10
|
||||
curl -k https://192.168.1.27
|
||||
```
|
||||
|
||||
Здесь ключ `-k` означает, что мы не проверяем сертификаты (нам важно только, что сервер отвечает). Должны получить
|
||||
@ -146,8 +146,55 @@ Unauthorized JSON-ответ от API. Что-то вроде:
|
||||
}
|
||||
```
|
||||
|
||||
## Подключение второго узла (мастер)
|
||||
|
||||
----
|
||||
На первой ноде запускаем. Пока без кластерного etcd (ока хранение идёт в SQLite) и без Traefik (Traefik -- это
|
||||
ingress-контроллера в k3s, и в Kubernetes в целом, — это компонент, который управляет входящим сетевым трафиком
|
||||
кластера и позволяет маршрутизировать HTTP/HTTPS-запросы к соответствующим подам, с динамической конфигурацией
|
||||
Для начала, на первой ноде получим токен для подключения нового узла к кластеру:
|
||||
```bash
|
||||
sudo cat /var/lib/rancher/k3s/server/node-token
|
||||
```
|
||||
|
||||
Вывод будет что-то вроде `K10...::server:longrandomstring`. Это и есть токен, который нужно будет использовать.
|
||||
|
||||
Теперь на втором Orange Pi (например, с IP 192.168.1.28) можно запустить второй мастер-узел (вставим токен
|
||||
из предыдущего шага):
|
||||
```bash
|
||||
curl -sfL https://get.k3s.io | sh -s - server --server https://192.168.1.27:6443 --token <ТОКЕН> --tls-san=192.168.1.28
|
||||
```
|
||||
Здесь ключи:
|
||||
* `--server https://192.168.1.27:6443` -- указывает на API мастер-узла, чтобы наш новый узел мог подключиться к кластеру.
|
||||
* `--token` — токен аутентификации из предыдущего шага.
|
||||
* `--tls-san=192.168.1.28` -- добавляет IP нашего второго мастера в сертификаты (для будущих подключений).
|
||||
|
||||
Проверим какие теперь ноды в кластере:
|
||||
```bash
|
||||
sudo k3s kubectl get nodes
|
||||
```
|
||||
|
||||
Теперь увидим две ноды:
|
||||
```text
|
||||
NAME STATUS ROLES AGE VERSION
|
||||
opi5plus-2 Ready control-plane,etcd,master 2h v1.31.5+k3s1
|
||||
opi5plus-3 Ready control-plane,etcd,master 110s v1.31.5+k3s1
|
||||
```
|
||||
|
||||
Проверим поды кластера и посмотрим на каких нодах они запущены:
|
||||
```bash
|
||||
sudo k3s kubectl get pods -A -o wide
|
||||
```
|
||||
|
||||
И увидим, что на второй ноде запустились те же поды, что и на первой:
|
||||
```text
|
||||
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
|
||||
kube-system coredns-ccb96694c-tfjwj 1/1 Running 0 2h 10.42.0.4 opi5plus-2 <none> <none>
|
||||
kube-system helm-install-traefik-crd-bdbgd 0/1 Completed 0 2h <none> opi5plus-2 <none> <none>
|
||||
kube-system helm-install-traefik-mlztm 0/1 Completed 1 2h <none> opi5plus-2 <none> <none>
|
||||
kube-system local-path-provisioner-5cf85fd84d-jwz5n 1/1 Running 0 2h 10.42.0.3 opi5plus-2 <none> <none>
|
||||
kube-system metrics-server-5985cbc9d7-n9dwz 1/1 Running 0 2h 10.42.0.2 opi5plus-2 <none> <none>
|
||||
kube-system svclb-traefik-4f8c2580-jddgz 2/2 Running 0 2h 10.42.0.7 opi5plus-2 <none> <none>
|
||||
kube-system svclb-traefik-4f8c2580-xzt5d 2/2 Running 0 2m35s 10.42.1.2 opi5plus-3 <none> <none>
|
||||
kube-system traefik-5d45fc8cc9-t5d58 1/1 Running 0 2h 10.42.0.8 opi5plus-2 <none> <none>
|
||||
```
|
||||
|
||||
Как видим, у нас появился еще один `svclb-traefik` на второй ноде. Это под -- Service Load Balancer (SLB) для Traefik.
|
||||
Он эмулирует облачный балансировщик нагрузки (типа AWS ELB), которого нет в локальном окружении вроде Orange Pi.
|
||||
SLB перенаправляет внешний трафик (например, на порты 80/443) к сервисам типа LoadBalancer внутри кластера.
|
||||
|
Loading…
Reference in New Issue
Block a user