Настройка кластера K3s Kubernetes в Ubuntu 22.04

K3s — это легкий дистрибутив Kubernetes, который упрощает управление кластером. Это руководство покажет вам, как установить и настроить K3 на серверах Ubuntu 22.04.

Введение

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

Чтобы упростить настройку кластера Kubernetes и обеспечить возможность его развертывания в удаленных местах с ограниченными ресурсами, что делает его подходящим кандидатом для периферийных вычислений, компания Rancher Labs разработала K3. K3s — это легкий дистрибутив Kubernetes, который позволяет установить кластер Kubernetes с помощью небольшого двоичного файла за несколько минут.

Из этого руководства вы узнаете, как установить K3s в Ubuntu и о дополнительных параметрах конфигурации, доступных в K3s.

Предварительные условия

Чтобы выполнить это руководство, вам понадобится:

  • Один сервер Ubuntu 22.04 с объемом оперативной памяти не менее 1 ГБ, настроенный в соответствии с руководством по первоначальной настройке сервера Ubuntu 22.04.

Шаг 1 — Установка 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 в кластере.

Шаг 2. Проверка объектов 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 во время установки.

Шаг 3 — Понимание и изменение параметров конфигурации в 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, чтобы очистить виртуальную машину.

Шаг 4 — Удаление 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.

#kubernetes  #ubuntu 

Настройка кластера K3s Kubernetes в Ubuntu 22.04
1.05 GEEK