Поиск по сайту:

Как использовать K3s для запуска кластера Kubernetes на компьютере для разработки


K3s — это облегченный дистрибутив Kubernetes, идеально подходящий для разработки. Сейчас он является частью Cloud Native Computing Foundation (CNCF), но изначально был разработан Rancher.

K3s поставляется как единый двоичный файл с размером файла менее 50 МБ. Несмотря на миниатюрный вид, K3s включает в себя все необходимое для запуска готового к работе кластера Kubernetes. Проект фокусируется на оборудовании с ограниченными ресурсами, где надежность и простота обслуживания являются ключевыми проблемами. Хотя K3s в настоящее время обычно используется на периферии устройств IoT, эти качества также делают его хорошим претендентом на локальное использование разработчиками.

Начало работы с K3s

Запуск двоичного файла K3s запустит кластер Kubernetes на хост-компьютере. Основной процесс K3s запускает и управляет всеми компонентами Kubernetes, включая сервер API плоскости управления, рабочий экземпляр Kubelet и среду выполнения контейнера containerd.

На практике обычно требуется, чтобы K3s запускался автоматически как служба. Рекомендуется использовать официальный сценарий установки, чтобы быстро запустить K3 в вашей системе. Это загрузит двоичный файл, переместит его на ваш путь и зарегистрирует службу systemd или openrc в соответствии с вашей системой. K3s будет настроен на автоматический перезапуск после сбоя процесса или перезагрузки хоста.

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

Подтвердите успешность установки, проверив статус службы k3s:

$ sudo service k3s status

Вы готовы начать использовать свой кластер, если active (running) отображается зеленым цветом.

Взаимодействие с вашим кластером

K3s связывает Kubectl, если вы устанавливаете его с помощью предоставленного скрипта. Он вложен в команду k3s:

$ k3s kubectl get pods
No resources found in default namespace.

Вы можете получить сообщение об ошибке, похожее на это:

$ k3s kubectl get pods
WARN[0000] Unable to read /etc/rancher/k3s/k3s.yaml, please start server with --write-kubeconfig-mode to modify kube config permissions 
error: error loading config file "/etc/rancher/k3s/k3s.yaml": open /etc/rancher/k3s/k3s.yaml: permission denied

Вы можете исправить это, изменив права доступа к файлу указанного пути:

$ sudo chmod 644 /etc/rancher/k3s/k3s.yaml

Теперь вы сможете запускать команды Kubectl без использования sudo.

Вы можете продолжать использовать автономную установку Kubectl, если не хотите полагаться на интегрированную версию K3s. Используйте переменную среды KUBECONFIG или флаг --kubeconfig для ссылки на ваш файл конфигурации K3s при выполнении простой команды kubectl:

$ export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
$ kubectl get pods
No resources found in default namespace.

Пример рабочей нагрузки

Вы можете протестировать свой кластер, добавив простое развертывание:

$ k3s kubectl create deployment nginx --image=nginx:latest
deployment.apps/nginx created
$ k3s kubectl expose deployment nginx --type=LoadBalancer --port=80
service/nginx exposed

Используйте Kubectl, чтобы узнать IP-адрес созданной службы:

$ k3s kubectl get services
NAME         TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP      10.43.0.1     <none>        443/TCP        35m
nginx        LoadBalancer   10.43.49.20   <pending>     80:30968/TCP   17s

В этом примере служба NGINX доступна по адресу 10.43.49.20. Посетите этот URL-адрес в веб-браузере, чтобы увидеть целевую страницу NGINX по умолчанию.

Настройка параметров Kubernetes

Вы можете установить собственные аргументы для отдельных компонентов Kubernetes при запуске K3s. Значения должны предоставляться как флаги командной строки для двоичного файла K3s. Переменные среды также поддерживаются, но преобразование флага в имя переменной не всегда последовательно.

Вот некоторые часто используемые флаги для настройки вашей установки:

  • --etcd-arg – передать аргумент в Etcd.
  • --kube-apiserver-arg — передать аргумент на сервер API Kubernetes.
  • --kube-controller-manager-arg – передать аргумент компоненту Kubernetes Controller Manager.
  • --kubelet-arg – передать аргумент рабочему процессу Kubelet.

Доступно множество других опций для настройки работы K3s и вашего кластера Kubernetes. К ним относятся средства для отключения связанных компонентов, таких как контроллер Traefik Ingress (--disable traefik), чтобы вы могли заменить их альтернативными реализациями.

Помимо флагов и переменных, K3s также поддерживает конфигурационный файл YAML, который намного удобнее в сопровождении. Внесите это в /etc/rancher/k3s/config.yaml, чтобы K3 автоматически использовал его при каждом запуске. Имена полей должны быть аргументами CLI без префикса --.

node-name: first-worker
bind-address: 1.2.3.4

Многоузловые кластеры

K3s полностью поддерживает многоузловые кластеры. Вы можете добавить узлы в свой кластер, установив переменные среды K3S_URL и K3S_TOKEN перед запуском сценария установки.

$ curl -sfL https://get.k3s.io | K3S_URL=https://192.168.0.1:6443 K3S_TOKEN=token sh -

Этот скрипт установит K3s и настроит его как рабочий узел, который подключается к IP-адресу 192.168.0.1. Чтобы найти свой токен, скопируйте значение файла /var/lib/rancher/k3s/server/node-token с машины, на которой работает ваш сервер K3s.

Использование образов в частных реестрах

K3s имеет хорошую встроенную поддержку образов в частных реестрах. Вы можете предоставить специальный файл конфигурации для ввода учетных данных реестра в ваш кластер. Эти учетные данные будут прочитаны при запуске сервера K3s. Он автоматически поделится ими с вашими рабочими узлами.

Создайте файл /etc/rancher/k3s/registries.yaml со следующим содержимым:

mirrors:
  example-registry.com:
    endpoint:
      - "https://example-registry.com:5000"

Это позволит вашему кластеру получать изображения, такие как example-registry.com/example-image:latest, с сервера по адресу example-registry.com:5000. Вы можете указать несколько URL-адресов в поле endpoint; они будут использоваться в качестве запасных вариантов в письменном порядке до тех пор, пока не произойдет успешное получение.

Укажите учетные данные пользователя для ваших реестров, используя следующий синтаксис:

mirrors:
  example-registry.com:
    endpoint:
      - "https://example-registry.com:5000"
configs:
  "example-registry.com:5000":
    auth:
      username: <username>
      password: <password>

Учетные данные определяются для каждой конечной точки. Реестры, определенные с несколькими конечными точками, требуют отдельных записей в поле config для каждой из них.

Конечным точкам, использующим SSL, также необходимо назначить конфигурацию TLS:

configs:
  "example-registry.com:5000":
    auth:
      username: <username>
      password: <password
    tls:
      cert_file: /tls/cert
      key_file: /tls/key
      ca_file: /tls/ca

Задайте в полях cert_file, key_file и ca_file ссылки на правильные файлы сертификатов для вашего реестра.

Модернизация вашего кластера

Вы можете выполнить обновление до новых выпусков K3s, запустив последнюю версию сценария установки. Это автоматически обнаружит ваш существующий кластер и перенесет его на новую версию.

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

Если вы настроили свой кластер, задав переменные среды установщика, повторите их при запуске команды обновления:

$ curl -sfL https://get.k3s.io | INSTALL_K3S_BIN_DIR=/usr/bin sh -

Кластеры с несколькими узлами обновляются с использованием той же процедуры. Вы должны обновить каждый рабочий узел отдельно после того, как на сервере будет запущена новая версия.

Вы можете установить конкретную версию Kubernetes, задав переменную INSTALL_K3S_VERSION перед запуском скрипта:

$ curl -sFL https://get.k3s.io | INSTALL_K3S_VERSION=v1.23.0 sh -

Версия INSTALL_K3S_CHANNEL может выбирать нестабильные версии и предварительные сборки:

$ curl -sFL https://get.k3s.io | INSTALL_K3S_CHANNEL=latest sh -

K3s по умолчанию будет запускать новейшую стабильную версию Kubernetes, если эти переменные не установлены.

Удаление K3s

Поскольку K3s упакован как автономный двоичный файл, его легко очистить, если вы хотите прекратить его использование. Процесс установки предоставляет сценарий удаления, который удалит системные службы, удалит двоичный файл и очистит все данные, созданные вашим кластером.

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

Вы должны использовать сценарий в /usr/local/bin/k3s-agent-uninstall.sh вместо этого, когда вы выводите из эксплуатации рабочий узел K3s.

Заключение

K3s — это однодвоичный дистрибутив Kubernetes, который не требует больших системных ресурсов и прост в обслуживании. Это происходит не за счет возможностей: K3s считается готовым к работе и полностью поддерживает объекты API Kubernetes, постоянное хранилище и сеть с балансировкой нагрузки.

K3s — хорошая альтернатива другим версиям Kubernetes, ориентированным на разработчиков, таким как Minikube и MicroK8s. Вам не нужно запускать виртуальные машины, устанавливать другое программное обеспечение или выполнять какие-либо дополнительные настройки для настройки кластера. Это особенно хорошо подходит, когда вы уже используете K3 в производственной среде, позволяя сгладить несоответствия между вашими средами.




Все права защищены. © Linux-Console.net • 2019-2024