Установка и базовая настройка k3s на Ubuntu Server
Опубликовано:
Используемые термины: Kubernetes, Ubuntu.
k3s представляет из себя легковесный одноузловой кластер Kubernetes. Сценарии его использования:
- Познакомиться и набить руку для работы с Kubernetes без развертывания дорогого кластера.
- Настроить инфраструктуру заранее, чтобы проще было сделать перенос в продуктивную среду.
- Развертывание тестовой среды для разработки приложения.
- Замена более простой оркестрации на базе docker-compose.
Мы рассмотрим команды на примере Linux Ubuntu. В инструкции не будут рассмотрены примеры по написанию манифестов и запуску проектов — только установка платформы оркестрации.
Подготовка системы
Установка и проверка запуска ноды
Настройка k3s для получения сертификатов от Let's Encrypt
Предварительная настройка системы
Выполним минимальный набор действия для более оптимальной работы 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 сможет получать сертификат.