136 June 17, 2024, 10:21 a.m.

Установка K3s

Задача: установить k3s на одну виртульальную машину с возможностью удаленного доступа.

Для достижения цели нужно:

  • сформировать команду для установки k3s.

По-умолчанию команда выглядит следующим образом:

curl -sfL https://get.k3s.io | sh -

Вместе с кластером будут установлены Flannel и Traefik. Если первая нужно для работы с сетью, то Traefik есть смысл установить самостоятельно с всеми необходимыми зависимостями. Команда будет выглядеть по-другому:

curl -sfL https://get.k3s.io  | INSTALL_K3S_EXEC="--disable=traefik" sh -

Для того чтобы использовать удаленнй доступ по IP или DNS адресу, нужно добавить --tls-san <REAL_IP/OR/HOSTNAME>

Для конфигурации режима DualStack, нужно добавить: --cluster-cidr=10.42.0.0/16,2001:cafe:42::/56 --service-cidr=10.43.0.0/16,2001:cafe:43::/112 --kubelet-arg=node-ip=:: --flannel-ipv6-masq

Полная комада, для утановки k3s с отключенным Traefik, удаленным доступом по IP и настроенным IPv6 выглядит так:

curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable=traefik --cluster-cidr=10.42.0.0/16,2001:cafe:42::/56 --service-cidr=10.43.0.0/16,2001:cafe:43::/112 --kubelet-arg=node-ip=:: --flannel-ipv6-masq --tls-san <REAL_IP/OR/HOSTNAME>" sh -

Важно: новая версия K3s оказалась не рабочей в следствии чего стенд перестал работать, на такой случай есть полезный ключ, который позволяет контролировать версию кластера:

INSTALL_K3S_VERSION="v1.29.5+k3s1"

Подключение к кластеру

Чтобы подключиться к кластеру на сервере с K3s нужно ввести команду:

cat /etc/rancher/k3s/config.yaml

Содержимое будет примерно такое:

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUS...dFUUkoyZnJrZmlzZW4rNTh2c2MKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
    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:
    client-certificate-data: LS0tLS...1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
    client-key-data: LS0tLS1CRUdJTiBFQyB...QgRUMgUFJJVkFURSBLRVktLS0tLQo=

Это содержимое нужно поместить в стандартный файл для утилиты kubeclt ~/.kube/config изменив 127.0.0.1 на внешний IP или DNS сервера.

После проделанных действий удаленный доступ к кластеру начнёт работать.

Удаление/перенастройка

Для того чтобы удалить кластер или произвести его перенастройку нужно использовать следующую команду:

/usr/local/bin/k3s-uninstall.sh

Команда для проверки статуса:

systemctl status k3s

Важное замечание

У разных облачных провайдеров сформированная команда может вести себя по-разному. На AWS на Debian все работает хорошо, на DigitalOcean приходится использовать Ubuntu. Стоит учитывать этот момент при проектировании своих систем.