From 488b47eb1766e2c1d4f6038973b492f5021bff88 Mon Sep 17 00:00:00 2001 From: erjemin Date: Thu, 19 Dec 2024 22:32:30 +0300 Subject: [PATCH] =?UTF-8?q?add:=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D0=B8=20?= =?UTF-8?q?=D0=B8=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D1=8B?= =?UTF-8?q?=20=D1=8F=D0=B4=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- raspberry-and-orange-pi/k8s.md | 68 +++++++++++++++++++++++++++++++--- 1 file changed, 63 insertions(+), 5 deletions(-) diff --git a/raspberry-and-orange-pi/k8s.md b/raspberry-and-orange-pi/k8s.md index a654fa0..96939e7 100644 --- a/raspberry-and-orange-pi/k8s.md +++ b/raspberry-and-orange-pi/k8s.md @@ -305,8 +305,9 @@ server ntp.msk-ix.ru minpoll 8 maxpoll 12 prefer времени для синхронизации. Если сервер недоступен, NTP-клиент будет пытаться подключиться к нему снова через некоторое время. * `minpoll` и `maxpoll` -- это минимальный и максимальный интервалы обращения к серверу. Значения -- это степени -двойки, которые определяются как 2 в степени N, где N -- это число. По умолчанию значения равны 6 (64 секунды) и 10 -(~17 минут). Но для микрокомпьютеров можно установить значения побольше. У нас 9 (~8.5 минут и 14 (~4.5 часа). + двойки. По умолчанию значения равны 6 (64 секунды) и 10 (~17 минут). Но для микрокомпьютеров можно установить + побольше. У нас 9 (~8.5 минуты) и 14 (~4.5 часа). На самом деле обращения к серверам времени будут происходить + в случайные интервалы времени (jitter), но в пределах указанных значений. * `prefer`-- это приоритетный сервер. Если у нас несколько серверов, то NTP-клиент будет обращаться к приоритетному. Это позволит уменьшить нагрузку от NTP-клиента и снизить трафик. @@ -334,9 +335,11 @@ sudo apt install keepalived haproxy ## Установим Docker и Kubernetes -Для начала надо установить GPG-ключи репозитория Docker и Kubernetes. Установка GPG-ключей для Docker подробна -описана в [отдельной инструкции](../docker/docker-trusted-gpg.md). Для GPG-Kubernetes ключи устанавливаются похожим -образом. Скачиваем GPG-ключ в папку `/etc/apt/trusted.gpg.d/`: +#### Ключи и репозитории + +Для начала на каждом узле нашего будущего кластера надо установить GPG-ключи репозитория Docker и Kubernetes. +Установка GPG-ключей для Docker подробна описана в [отдельной инструкции](../docker/docker-trusted-gpg.md). Для +Kubernetes ключи устанавливаются похожим образом. Скачиваем GPG-ключ в папку `/etc/apt/trusted.gpg.d/`: ```shell curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/kubernetes-apt-keyring.gpg ``` @@ -351,4 +354,59 @@ echo 'deb [arch=arm64 signed-by=/etc/apt/trusted.gpg.d/kubernetes-apt-keyring.gp sudo apt update ``` +#### Модули и параметры ядра + +В каждом узле, создадим конфигурационный файл для загрузки необходимых Kubernetes модулей ядра (`overlay` и +`br_netfilter`). Для этого создадим конфиг в папке `/etc/modules-load.d/`. Файл может иметь любое имя с расширением +`.conf`, для удобства назовем его `k8s.conf`: +```shell +sudo nano /etc/modules-load.d/k8s.conf +``` + +В файле пропишем модули: +```yaml +# Load overlay module (драйвер для работы с файловой системой overlayfs, для объединения +# нескольких файловых систем в одну) +overlay + +# Load br_netfilter module (Драйвер для работы с сетевыми мостами и фильтрацией пакетов) +br_netfilter +``` + +Сохраняем и закрываем файл и теперь, благодаря конфигу, эти модули ядра будут автоматически загружаться при каждой +перезагрузке узла. Но чтобы загрузить сразу и сейчас выполним команды: +```shell +sudo modprobe overlay +sudo modprobe br_netfilter +``` + +Затем создадим конфигурационный файл для ядра Linux в папке `/etc/sysctl.d/`. В эту папку помещаются файлы с +для настройки параметров ядра Linux. Создадим файл `k8s.conf`: +```shell +sudo nano /etc/sysctl.d/k8s.conf +``` + +В файле пропишем параметры: +```toml +# Enable IPv6 traffic through iptables on bridges (Разрешаем обработку IPv6-трафика через iptables на сетевых мостах) +net.bridge.bridge-nf-call-ip6tables = 1 + +# Enable IPv4 traffic through iptables on bridges (Разрешаем обработку IPv4-трафика через iptables на сетевых мостах) +net.bridge.bridge-nf-call-iptables = 1 + +# Enable IP forwarding (Разрешаем пересылку IP-пакетов для маршрутизации трафика между контейнерами) +net.ipv4.ip_forward = 1 +``` + +В принципе, первые два параметра уже установлены по умолчанию (посмотреть текущие параметры ядра можно командой +`sysctl -a`), но на всякий случай все равно укажем их в файле. Сохраняем и закрываем файл. Теперь при перезагрузке +узла эти параметры будут загружаться автоматически. Но чтобы загрузить их сразу исопльзуем команду: +```shell +sudo sysctl -f /etc/sysctl.d/k8s.conf +``` + + + + +