Подготовка инфраструктуры k3s
| Перед началом подготовки контейнерной инфраструктуры, необходимо провести подготовку хост-системы |
Установка системы оркестрации контейнеров k3s
Загрузка и установка дистрибутива
Загрузка и установка системы оркестрации k3s выполняется одним из указанных способов:
-
онлайн-загрузка из сети Интернет
Для загрузки дистрибутива и автоматической установки системы оркестрации k3s необходимо выполнить команду:
sudo curl -sfL https://get.k3s.io | sh - -
офлайн-загрузка
Загрузка установочного архива производится из официального репозитория (файлового хранилища) компании IVA Technologies, либо выполняется иным способом.
Для развертывания инфраструктуры k3s и менеджера управления пакетами Helm необходим установочный архив k3s_offline.tar.gz.
Порядок выполняемых действий:
-
загрузить архив k3s_offline.tar.gz из официального репозитория (файлового хранилища) компании IVA Technologies и скопировать его на серверы, на которых будет производиться развертывание системы оркестрации k3s
Необходимо обеспечить не менее 600 МБ свободного места на жестком диске, куда будет производиться распаковка установочного архива k3s_offline.tar.gz -
создать директорию для распаковки архива и распаковать его, выполнив команду:
mkdir -p ./k3s-helm && tar -xfz k3s_offline.tar.gz -C ./k3s-helm -
перейти в директорию k3s-helm, в которую распакован архив и запустить скрипт установки с помощью команды:
cd ./k3s-helm && ./install-k3s-airgap.shВ результате выполнения скрипта также автоматически устанавливается менеджер пакетов Helm
-
Настройка пользовательского окружения
Для настройки пользовательского окружения необходимо скопировать конфигурацию k3s в домашний каталог пользователя root.
Порядок выполняемых действий:
-
войти с правами пользователя root, выполнив команду:
sudo su - -
выполнить копирование конфигурации k3s:
cd /root mkdir ~/.kube cp /etc/rancher/k3s/k3s.yaml ~/.kube/config chown $(id -u):$(id -g) ~/.kube/config export KUBECONFIG=~/.kube/config tee -a ~/.bashrc > /dev/null <<EOF export KUBECONFIG=~/.kube/config EOFПоявление сообщения
mkdir: невозможно создать каталог «/root/.kube»: Файл существуетне является ошибкой.
Данный каталог уже был создан ранее, предупреждение можно проигнорировать и продолжить процесс копирования конфигурации k3s -
выйти из режима пользователя root, выполнив команду:
exitПри необходимости, конфигурацию k3s можно скопировать в собственную домашнюю директорию, выполнив следующие действия:
sudo mkdir ~/.kube sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config sudo chown $(id -u):$(id -g) ~/.kube/config export KUBECONFIG=~/.kube/config tee -a ~/.bashrc > /dev/null <<EOF export KUBECONFIG=~/.kube/config EOFДля проверки использовать команду:
kubectl get nodesПример вывода:NAME STATUS ROLES AGE VERSION isolated Ready control-plane,master 16m v1.32.6+k3s1
Проверка установки
После выполнения установки системы оркестрации и настройки пользовательского окружения, необходимо выполнить проверку состояния сервиса k3s.
Порядок выполняемых действий:
-
проверить состояние сервиса k3s с помощью команды:
sudo systemctl status k3s -
вывести список всех узлов кластера с помощью команды:
sudo kubectl get nodesПример вывода:NAME STATUS ROLES AGE VERSION isolated Ready control-plane,master 8m59s v1.32.6+k3s1
-
вывести список системных компонентов k3s с помощью команды:
sudo kubectl get pods -n kube-systemПример вывода:NAME READY STATUS RESTARTS AGE coredns-5688667fd4-vtgcv 1/1 Running 2 (33m ago) 6d23h helm-install-traefik-crd-kq7r4 0/1 Completed 0 6d23h helm-install-traefik-dn6p4 0/1 Completed 2 6d23h local-path-provisioner-774c6665dc-t9b4w 1/1 Running 2 (33m ago) 6d23h metrics-server-6f4c6675d5-8rr5l 1/1 Running 2 (33m ago) 6d23h svclb-traefik-84389891-l4pnf 2/2 Running 2 (33m ago) 6d6h traefik-c98fdf6fb-rjthc 1/1 Running 1 (33m ago) 6d6h
Статусы инсталляционных подов пространства (namespace) kube-system (в примере: helm-install-traefik-crd-kq7r4 и helm-install-traefik-dn6p4) должны быть в состоянии Completed.
Статусы остальных подов должны быть в состоянии Running.
Настройка containerd
Порядок выполняемых действий:
-
открыть настройки сервиса containerd, выполнив команду:
sudo nano /etc/systemd/system/k3s.service -
задать значение LimitNOFILE:
[Service] LimitNOFILE=65536
-
перезапустить сервис k3s, чтобы новая конфигурация вступила в силу, выполнив команды:
sudo systemctl daemon-reload sudo systemctl restart k3s
Установка менеджера пакетов Helm
Helm — менеджер пакетов для Kubernetes, предназначенный для упрощения развертывания, управления, обновления и обслуживания приложений, состоящих из множества Kubernetes-объектов.
| Если менеджер пакетов Helm уже развернут в текущей инфраструктуре, то данный шаг необходимо пропустить |
Для установки Helm необходимо выполнить команду:
sudo curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
Для проверки версии необходимо выполнить команду:
helm version
| Процесс удаления k3s описан в дополнительной информации |
Возможные ошибки и их устранение
Статусы подов пространства (namespace) kube-system находятся в состоянии ErrImagePull или ImagePullBackOff
Порядок выполняемых действий:
-
определить, какие поды имеют статус с ошибкой и определить их идентификационный номер — id, выполнив команду:
sudo kubectl get pods -n kube-system -
проверить диагностические сообщения для каждого пода, имеющего статус с ошибкой, выполнив команду:
sudo kubectl describe pod helm-install-traefik-<ID_POD> -n kube-systemгде <ID_POD> — идентификатор пода, например dn6p4 для пода helm-install-traefik-dn6p4 или kq7r4 для пода helm-install-traefik-crd-kq7r4
Пример вывода ошибки:Warning Failed 6d23h (x5 over 6d23h) kubelet Failed to pull image "rancher/klipper-helm:v0.9.8-build20250709": failed to pull and unpack image "docker.io/rancher/klipper-helm:v0.9.8-build20250709": failed to resolve reference "docker.io/rancher/klipper-helm:v0.9.8-build20250709": failed to do request: Head "https://registry-1.docker.io/v2/rancher/klipper-helm/manifests/v0.9.8-build20250709": dial tcp: lookup registry-1.docker.io: Try again
-
проверить доступность указанной версии контейнера в локальном окружении Kubernetes с помощью команды:
sudo crictl imagesЕсли контейнер необходимой версии отсутствует:
-
при онлайн-установке: проверить сетевую доступность официального Git-репозитория k3s
-
при офлайн-установке: скопировать архив контейнера, загруженный из сети Интернет и загрузить в окружение Kubernetes с помощью команды:
ctr --address /run/k3s/containerd/containerd.sock -n=k8s.io images import <ARCHIVE_HELM>где <ARCHIVE_HELM> — название архива с контейнером, например, klipper-helm.tar
-
-
через 2—3 минуты проверить статус подов, выполнив команду:
sudo kubectl get pods -n kube-system