Как настроить кластер K3s Kubernetes в Ubuntu 22.04
Введение
Kubernetes — один из самых популярных в отрасли инструментов для оркестрации контейнеров. Однако настройка кластера Kubernetes с нуля может быть сложной задачей и требует большого количества настроек. Кроме того, существует несколько способов начать настройку кластера Kubernetes, но многие из них могут быть трудоемкими, если только вы не планируете создавать производственный кластер.
Чтобы упростить настройку кластера Kubernetes и обеспечить его развертывание в удаленных местах с ограниченными ресурсами — что делает его подходящим кандидатом для граничных вычислений — Rancher Labs разработала K3s. K3s — это легковесный дистрибутив Kubernetes, позволяющий установить кластер Kubernetes с помощью небольшого исполняемого файла за считанные минуты.
В этом руководстве вы узнаете, как установить K3s на Ubuntu и какие дополнительные параметры конфигурации доступны в K3s.
Предпосылки
Для выполнения этого урока вам понадобится:
Сервер Ubuntu 22.04 с объемом оперативной памяти не менее 1 ГБ был настроен в соответствии с руководством по первоначальной настройке сервера Ubuntu 22.04.
Шаг 1. Установите K3s.
На этом шаге вы установите последнюю версию K3s на свой компьютер с Ubuntu.
Если вы используете вход по паролю, войдите на сервер под учетной записью пользователя sudo (в этом руководстве это будет sammy), используя следующую команду:
$ ssh sammy@your_server_ipسپس با استفاده از دستور زیر K3 را نصب کنید.
$ curl -sfL https://get.k3s.io | sh -Для запуска скрипта вам будет предложено ввести пароль пользователя.
Эта команда использует curl для загрузки скрипта, расположенного по адресу https://get.k3s.io, и запускает его, передавая результат через –sh. После запуска скрипта начинается установка кластера K3s с параметрами конфигурации по умолчанию, которые создают одноузловой кластер Kubernetes.
Вы получите примерно такой вывод:
[secondary_label Output]
[INFO] Finding release for channel stable
[INFO] Using v1.27.7+k3s2 as release
[INFO] Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.27.7+k3s2/sha256sum-amd64.txt
[INFO] Downloading binary https://github.com/k3s-io/k3s/releases/download/v1.27.7+k3s2/k3s
[INFO] Verifying binary download
[INFO] Installing k3s to /usr/local/bin/k3s
[INFO] Skipping installation of SELinux RPM
[INFO] Creating /usr/local/bin/kubectl symlink to k3s
[INFO] Creating /usr/local/bin/crictl symlink to k3s
[INFO] Creating /usr/local/bin/ctr symlink to k3s
[INFO] Creating killall script /usr/local/bin/k3s-killall.sh
[INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO] env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO] systemd: Creating service file /etc/systemd/system/k3s.service
[INFO] systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO] systemd: Starting k3s
...В выводе скрипта показаны шаги, предпринятые скриптом установки для установки и запуска кластера. Далее вы проверите состояние службы K3s с помощью systemctl, чтобы узнать, запущена она или нет, используя следующую команду.
$ systemctl status k3sЭта команда показывает статус как активный (работает):
[secondary_label Output]
● k3s.service - Lightweight Kubernetes
Loaded: loaded (/etc/systemd/system/k3s.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-11-27 16:52:01 UTC; 19s ago
Docs: https://k3s.io
Process: 8396 ExecStartPre=/bin/sh -xc ! /usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service (code=exi>
Process: 8398 ExecStartPre=/sbin/modprobe br_netfilter (code=exited, status=0/SUCCESS)
Process: 8399 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)
Main PID: 8400 (k3s-server)
Tasks: 20
Memory: 467.3M
CPU: 12.952s
CGroup: /system.slice/k3s.service
├─8400 "/usr/local/bin/k3s server"
└─8421 "containerd " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" >
...На этом этапе вы установили K3s на Ubuntu для создания одноузлового кластера Kubernetes. Далее вы ознакомитесь с объектами Kubernetes, развернутыми по умолчанию в кластере.
Шаг 2 – Проверка объектов Kubernetes по умолчанию
На этом этапе вы проверите объекты Kubernetes по умолчанию, развернутые после установки K3s.
Выполните следующую команду, чтобы увидеть все объекты Kubernetes, развернутые в кластере в пространстве имен kube. kubectl автоматически устанавливается во время установки K3s и поэтому не требует отдельной установки.
$ sudo kubectl get all -n kube-systemВы получите примерно такой вывод:
[secondary_label Output]
NAME READY STATUS RESTARTS AGE
pod/local-path-provisioner-957fdf8bc-t8vpx 1/1 Running 0 4m34s
pod/coredns-77ccd57875-4hrd9 1/1 Running 0 4m34s
pod/helm-install-traefik-crd-j2sqs 0/1 Completed 0 4m34s
pod/helm-install-traefik-mvxhw 0/1 Completed 1 4m34s
pod/metrics-server-648b5df564-gqxcz 1/1 Running 0 4m34s
pod/svclb-traefik-18597fcd-2cf68 2/2 Running 0 4m6s
pod/traefik-768bdcdcdd-srb8d 1/1 Running 0 4m7s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kube-dns ClusterIP 10.43.0.10 <none> 53/UDP,53/TCP,9153/TCP 4m44s
service/metrics-server ClusterIP 10.43.69.115 <none> 443/TCP 4m43s
service/traefik LoadBalancer 10.43.149.125 159.65.159.115 80:32266/TCP,443:32628/TCP 4m7s
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/svclb-traefik-18597fcd 1 1 1 1 1 <none> 4m7s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/local-path-provisioner 1/1 1 1 4m44s
deployment.apps/coredns 1/1 1 1 4m44s
deployment.apps/metrics-server 1/1 1 1 4m44s
deployment.apps/traefik 1/1 1 1 4m7s
NAME DESIRED CURRENT READY AGE
replicaset.apps/local-path-provisioner-957fdf8bc 1 1 1 4m34s
replicaset.apps/coredns-77ccd57875 1 1 1 4m34s
replicaset.apps/metrics-server-648b5df564 1 1 1 4m34s
replicaset.apps/traefik-768bdcdcdd 1 1 1 4m7s
NAME COMPLETIONS DURATION AGE
job.batch/helm-install-traefik-crd 1/1 28s 4m41s
job.batch/helm-install-traefik 1/1 31s 4m41s
... Приведенный выше вывод показывает различные объекты, развернутые в кластере Kubernetes. Например, запущено 4 развертывания: по одному для coredns, local-path-provisioner, metrics-server и traefik.
Если вы выполните команду без использования sudo, вы можете столкнуться со следующей ошибкой.
Output
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 при выполнении команд kubectl, измените права доступа к конфигурационному файлу с помощью команды chmod, как показано ниже.
$ sudo chmod 644 /etc/rancher/k3s/k3s.yamlНа данном этапе вы проверили состояние объектов Kubernetes, развернутых в кластере K3s по умолчанию. Далее вы изучите и измените параметры конфигурации в K3s во время установки.
Шаг 3 – Изучение и изменение параметров конфигурации в K3S
Вы установили K3s, используя настройки по умолчанию, однако вы можете изменить конфигурацию для достижения индивидуального поведения, специфичного для кластера. На этом шаге вы узнаете, как использовать переменные среды в K3 для установки параметров в скрипте установки.
Например, при установке контроллера входящего трафика Traefik используются настройки по умолчанию, однако в некоторых случаях может потребоваться отключить контроллер входящего трафика во время установки.
Переменная среды INSTALL_K3S_EXEC может использоваться для передачи флагов службе K3s. Следующая команда может быть использована для отключения Traefik во время установки K3s.
$ curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable=traefik" sh -Проверьте объекты Kubernetes для подтверждения. Ресурсы контроллера в этот раз будут отсутствовать.
$ sudo kubectl get all -n kube-systemПомимо изменения параметров конфигурации с помощью переменных среды, это также можно сделать в конфигурационном файле K3s. Необходимые параметры можно указать в конфигурационном файле, а затем перезапустить сервер K3s, чтобы изменения вступили в силу.
K3s использует конфигурационный файл, расположенный по адресу etc/rancher/k3s/config.yaml/.
Выполните следующую команду, чтобы создать и записать конфигурационный файл.
$ sudo nano /etc/rancher/k3s/config.yamlВнесите следующее в конфигурационный файл.
$ disable: traefikНажмите Ctrl+X, чтобы записать и закрыть файл. Отключенная строка: traefik дает указание службе K3s удалить ресурсы, связанные с установкой traefik.
Затем перезапустите службу K3s, используя следующую команду, чтобы применить изменения.
$ sudo systemctl restart k3sТеперь вы можете проверить это, перечислив все объекты Kubernetes в системном пространстве имен kube. В данный момент с установкой Traefik не должно быть связано никаких ресурсов.
$ sudo kubectl get all -n kube-systemНа этом этапе вы узнали, как изменять конфигурацию K3s во время и после установки. Далее вы удалите кластер K3s, чтобы очистить виртуальные машины.
Шаг 4 – Удалите K3s
Для удаления K3S необходимо запустить скрипт оболочки с именем 'usr/local/bin/k3s-uninstall.sh/'. Скрипт автоматически генерируется после установки K3S и может использоваться для выполнения полной очистки. Во время удаления удаляются все инструменты конфигурации K3S и кластера, созданные или установленные во время установки K3S.
Для удаления K3 выполните следующую команду:
$ /usr/local/bin/k3s-uninstall.shПодтвердите удаление, проверив состояние службы K3s с помощью следующей команды:
$ systemctl status k3sВы получите примерно такой вывод:
[secondary_label Output]
Unit k3s.service could not be found.Результат
В этой статье вы установили кластер K3s на Ubuntu и ознакомились с доступными параметрами конфигурации K3s и механизмом их использования. Теперь, когда вы настроили свой кластер Kubernetes, вам следует изучить различные типы объектов и их функциональность в Kubernetes.









