Установка и базовая настройка k3s на Ubuntu Server
Опубликовано:
Используемые термины: Kubernetes, Ubuntu.
k3s представляет из себя легковесный одноузловой кластер Kubernetes. Сценарии его использования:
- Познакомиться и набить руку для работы с Kubernetes без развертывания дорогого кластера.
- Настроить инфраструктуру заранее, чтобы проще было сделать перенос в продуктивную среду.
- Развертывание тестовой среды для разработки приложения.
- Замена более простой оркестрации на базе docker-compose.
Мы рассмотрим команды на примере Linux Ubuntu. В инструкции не будут рассмотрены примеры по написанию манифестов и запуску проектов — только установка платформы оркестрации.
Подготовка системы
Установка и проверка запуска ноды
Настройка k3s для получения сертификатов от Let's Encrypt
Установка и настройка менеджера Helm
Предварительная настройка системы
Выполним минимальный набор действия для более оптимальной работы k3s.
Создаем файл:
vi /etc/sysctl.d/99-k3s-performance.conf
# Увеличение лимита открытых файлов
fs.file-max = 1200000
# Оптимизация работы с виртуальной памятью
vm.overcommit_memory = 1
vm.panic_on_oom = 0
# Увеличение лимитов на отслеживание сетевых соединений
net.core.somaxconn = 32768
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_max_syn_backlog = 16384
Применяем настройки:
sysctl --system
Можно переходить к установке облегченного кубернетеса.
Установка и запуск
Развертывание k3s, без преувеличения, выполняется одной командой:
curl -sfL https://get.k3s.io | sh -
Как правило, установка и конфигурирование завершается в течение одной минуты.
Посмотреть список нод можно командой:
kubectl get node
Чаще всего, для своего удобства, администраторы kubernetes делают алиас:
echo 'alias k=kubectl' >> ~/.bashrc
source ~/.bashrc
С его помощью вместо команды kubectl можно будет вводить просто k.
Кластер готов к работе.
Let's Encrypt
По умолчанию, в качестве ingress контроллера в k3s используется traefik. Для того, чтобы он мог получать бесплатные сертификаты от Let's Encrypt нужна его донастройка.
Откроем файл:
vi /var/lib/rancher/k3s/server/manifests/traefik.yaml
Между директивами valuesContent и deployment вставляем:
global.systemDefaultRegistry: ""
valuesContent: |-
additionalArguments:
- "--certificatesresolvers.default.acme.email=postmaster@dmosk.local"
- "--certificatesresolvers.default.acme.storage=/data/acme.json"
- "--certificatesresolvers.default.acme.httpchallenge.entrypoint=web"
ports:
web:
exposedPort: 80
websecure:
exposedPort: 443
deployment:
podAnnotations:
* обратите внимание, что в параметре email необходимо заменить postmaster@dmosk.local на свое значение.
Теперь traefik сможет получать сертификат.
Установка и настройка Helm
Для работы с менеджером пакетов helm необходимо его установить и настроить для подключения к нашему k3s.
Установка
По сути, для этого нужно просто скачать бинарный файл.
Для начала узнаем последнюю версию приложения и сохраним ее в переменную HELM_VER:
HELM_VER=$(curl -s https://api.github.com/repos/helm/helm/releases/latest | grep 'tag_name' | cut -d\" -f4)
Скачаем архив с бинарным файлом:
wget https://get.helm.sh/helm-${HELM_VER}-linux-amd64.tar.gz
Распакуем его:
tar -zxf helm-${HELM_VER}-linux-amd64.tar.gz
И переместим в каталог usr/local/bin:
mv linux-amd64/helm /usr/local/bin/
Скачанный архив и распакованную папку можно удалить:
rm -rf helm-${HELM_VER}-linux-amd64.tar.gz linux-amd64
Проверить, что shell оболочка видит helm можно командой:
helm version
Настройка подключения
Утилите helm нужно правильное значение переменной KUBECONFIG. По умолчанию, helm ищет конфигурацию для подключения в домашней директории пользователя, каталоге .kube. Однако, k3s хранит конфигурацию в другом месте.
В bashrc добавим строку и сразу примени настройку для текущей сессиии:
echo 'export KUBECONFIG=/etc/rancher/k3s/k3s.yaml' >> ~/.bashrc
source ~/.bashrc
* мы указали в качестве значения для переменной KUBECONFIG путь до файла /etc/rancher/k3s/k3s.yaml.
Попробуйте ввести команду:
helm list
Система должна вернуть либо список установленных пакетов, либо пустой вывод. Ошибок быть не должно.
Наш helm готов для работы с k3s.