K3s — это легкий дистрибутив Kubernetes, который упрощает управление кластером. Это руководство покажет вам, как установить и настроить K3 на серверах Ubuntu 22.04.
Kubernetes входит в число предпочитаемых в отрасли инструментов оркестрации контейнеров. Однако настройка кластера Kubernetes с нуля может оказаться сложной задачей, требующей многочисленных настроек. Кроме того, существует несколько способов начать настройку кластера Kubernetes, но большинство из них могут занять много времени, если вы не стремитесь создать кластер производственного уровня.
Чтобы упростить настройку кластера Kubernetes и обеспечить возможность его развертывания в удаленных местах с ограниченными ресурсами, что делает его подходящим кандидатом для периферийных вычислений, компания Rancher Labs разработала K3. K3s — это легкий дистрибутив Kubernetes, который позволяет установить кластер Kubernetes с помощью небольшого двоичного файла за несколько минут.
Из этого руководства вы узнаете, как установить K3s в Ubuntu и о дополнительных параметрах конфигурации, доступных в K3s.
Чтобы выполнить это руководство, вам понадобится:
На этом этапе вы установите последнюю версию K3s на свой компьютер с Ubuntu.
Войдите на свой сервер как пользователь с включенным sudo (в этом руководстве это будет sammy), используя следующую команду, если вы используете пароль вход на основе:
ssh sammy@your_server_ip
Затем установите K3s, используя следующую команду.
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
Эта команда покажет статус как active (running):
[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 в кластере.
На этом этапе вы проверите объекты Kubernetes по умолчанию, развернутые после установки K3s.
Выполните следующую команду, чтобы просмотреть все объекты Kubernetes, развернутые в кластере в пространстве имен kube-system. 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, вы можете получить следующую ошибку.
OutputWARN[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 во время установки.
Вы установили K3s, используя настройку по умолчанию, однако можно настроить конфигурацию для достижения конкретного пользовательского поведения кластера. На этом этапе вы узнаете, как использовать переменные среды в K3s для настройки конфигурации в сценарии установки.
Например, настройка по умолчанию включает установку 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
Полный список доступных флагов можно найти здесь. https://docs.k3s.io/cli/server.
Помимо изменения параметров конфигурации с использованием переменных среды, это также можно сделать в файле конфигурации K3s. Необходимые параметры можно указать в файле конфигурации, а затем перезапустить сервер K3s для применения изменений.
K3s использует файл конфигурации, расположенный в /etc/rancher/k3s/config.yaml.
Выполните следующую команду, чтобы создать и записать файл конфигурации.
sudo nano /etc/rancher/k3s/config.yaml
Запишите следующее в файл конфигурации файла.
disable: traefik
Нажмите Ctrl+X, чтобы записать файл и выйти из него. Строка disable: traefik предписывает службе K3s удалить ресурсы, связанные с установкой traefik.
Затем перезапустите службу K3s, используя следующую команду, чтобы применить изменения.
sudo systemctl restart k3s
Теперь вы можете проверить, перечислив все объекты Kubernetes в пространстве имен kube-system. В настоящее время не должно быть никаких ресурсов, связанных с traefik установкой.
sudo kubectl get all -n kube-system
На этом этапе вы узнали, как изменить конфигурацию K3s во время и после установки. Далее вы удалите кластер K3s, чтобы очистить виртуальную машину.
Чтобы удалить K3S, вам необходимо запустить сценарий оболочки под названием «/usr/local/bin/k3s-uninstall.sh». Сценарий генерируется автоматически при установке K3 и может использоваться для полной очистки. Во время удаления удаляются все инструменты конфигурации и кластера K3s, которые были созданы или установлены во время установки K3s.
Выполните следующую команду, чтобы удалить K3s:
/usr/local/bin/k3s-uninstall.sh
Подтвердите удаление, проверив состояние службы K3s с помощью следующей команды:
systemctl status k3s
Вы получите вывод, подобный этому:
[secondary_label Output]
Unit k3s.service could not be found.