Найти в Дзене
Николай Калюжный

Установка MicroK8s с графическим интерфейсом

Сайт https://microk8s.io

Для развертывания решения нам потребуется установленная система Ubuntu 22.04 LTS minimal

apt update

apt upgrade

apt install mc nano wget

После чего начинаем установку MicroK8s на Linux Ubuntu 22.04

-2

sudo snap install microk8s --classic

-3

Вступим в группу

MicroK8s создает группу, чтобы обеспечить беспрепятственное использование команд, требующих привилегий администратора. Чтобы добавить текущего пользователя в группу и получить доступ к каталогу кэширования .kube, выполните следующие три команды:

sudo usermod -a -G microk8s $USER
newgrp microk8s
sudo mkdir -p ~/.kube
sudo chown -f -R $USER ~/.kube

Вам также нужно будет повторно войти в сессию, чтобы произошло обновление группы:
su - $USER
sudo microk8s

Проверим состояние
MicroK8s имеет встроенную команду для отображения своего статуса. Во время установки вы можете использовать флаг --wait-ready, чтобы дождаться инициализации сервисов Kubernetes:
sudo microk8s stop
sudo microk8s start
sudo microk8s status
microk8s status --wait-ready

-4

После возврата статуса, у нас запущен одноузловой кластер Kubernetes. Давайте проверим версию Kubernetes:

microk8s kubectl version --output=yaml

-5

Дашборд, CoreDNS, Istio и любое другое поддерживаемое дополнение кластера Kubernetes включаем командой:
microk8s enable dashboard dns istio

-6

Получим все ресурсы для всех пространств имен
microk8s kubectl get all --all-namespaces

-7

Вы заметили, что команда microk8s привязывается к команде kubectl. Это сделано для того, чтобы убедиться, что контекст кластера microk8s передается в kubectl. Иногда удобнее создать alias:

alias mk='microk8s kubectl'

Получим доступ к Kubernetes dashboard. Для этого введем команду:

microk8s dashboard-proxy

И видим что интерфейс управления доступен по адресу

Dashboard will be available at https://127.0.0.1:10443 = https://192.168.0.215:10443

-8

На данном этапе это просто обычный Kubernetes, поэтому вам нужны только kubectl, и, возможно, позже, helm. Поэтому лучше иметь готовый инструмент kubectl с установленным правильным контекстом. Загрузим соответствующую версию kubectl:

curl -LO https://dl.k8s.io/release/v${KUBE_VERSION}/bin/linux/amd64/kubectl

-9

Установим

install -o root -g root -m 0755 kubectl /usr/bin/kubectl

Мы установим контекст kubectl в контекст microk8s (для этого обратимся к официальной документации https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/ )

переходим в каталог установки

cd /usr/local/bin
и вводим команды:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256""
echo "$(cat kubectl.sha256)  kubectl" | sha256sum --check

После чего устанавливаем kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

(Note:Если у вас нет root-доступа в целевой системе, вы все равно можете установить kubectl в каталог ~/.local/bin:)
chmod +x kubectl
mkdir -p ~/.local/bin
mv ./kubectl ~/.local/bin/kubectl
# and then append (or prepend) ~/.local/bin to $PATH

Тестируем:
kubectl version --client

-10

Или вводим команду для детального просмотра версии:

kubectl version --client --output=yaml

-11
-12

echo $PATH – 
Видим ответ
it is /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Установим
curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x ./kubectl
sudo mv ./kubectl /usr/bin/kubectl

kubectl cluster-info

kubectl version

-13

Включаем дополнения (add-ons)
microk8s enable helm
microk8s enable storage
microk8s enable dns
microk8s enable ingress
microk8s enable registry
microk8s.kubectl config view > $HOME/.kube/config

Запускаем веб-управление microk8s 
microk8s dashboard-proxy
и производим Развертывание контейнера

Для этого Нажмите на кнопку + в левом верхнем углу главного окна. На открывшейся странице нажмите кнопку Создать из формы, а затем заполните необходимую информацию, как показано на рисунке

-14

На этом установка окончена и microk8s готов к работе.

Задача по развертыванию microk8s выполнена!

Если необходимо добавить ноды в кластер

Добавление узла

Чтобы создать кластер из двух или более уже работающих экземпляров MicroK8s, используйте команду microk8s add-node. Экземпляр MicroK8s, на котором будет запущена эта команда, станет ведущим в кластере и будет размещать плоскость управления Kubernetes:

microk8s add-node

-15

Присоединение узла к кластеру займет всего несколько секунд. После этого вы должны увидеть, что узел присоединился.

Удаление узла
Сначала на узле, который вы хотите удалить, выполните команду microk8s leave. MicroK8s на удаляемом узле перезапустит свою собственную плоскость управления и возобновит работу как полноценный одноузловой кластер:

microk8s leave

Чтобы завершить удаление узла, вызовите microk8s remove-node с оставшихся узлов, чтобы указать, что ушедший (недоступный теперь) узел должен быть удален навсегда:

microk8s remove-node 185.204.117.7

Хранилище

Если вы используете простое хранилище, предоставляемое дополнением hostpath storage, обратите внимание, что оно будет доступно только для тех узлов, на которых оно было включено. Для кластерного хранилища необходимо настроить альтернативное хранилище. Например, см. руководство по использованию NFS.
Высокая доступность

Начиная с версии 1.19 в MicroK8s HA включена по умолчанию. Если ваш кластер состоит из трех или более узлов, то хранилище данных будет реплицировано между узлами и будет устойчиво к единичному сбою (если на одном узле возникнут проблемы, рабочие нагрузки продолжат выполняться без перебоев).

Дополнительную информацию о том, как работает HA, и как управлять кластером HA, можно найти на странице High Availability.
Рабочие узлы

Начиная с версии 1.23 узел может присоединиться к кластеру в качестве рабочего узла. Рабочие узлы могут размещать рабочие нагрузки, но они не управляют плоскостью управления Kubernetes и поэтому не повышают доступность (HA) кластера. Рабочие узлы идеально подходят для низкопроизводительных устройств, поскольку они потребляют меньше ресурсов. Они также имеют смысл в больших кластерах с достаточным количеством узлов плоскости управления для обеспечения HA. Чтобы добавить рабочий узел, используйте флаг --worker при выполнении команды microk8s join:

microk8s join IP-ADDRESS:25000/daaf7dee7d8d934d8322e1dfa1e01f7f2f2/c5679006c46eac --worker

На рабочем узле запускается локальный прокси-сервер API, который обеспечивает связь между локальными службами (kubelet, kube-proxy) и серверами API, запущенными на нескольких узлах плоскости управления. При добавлении рабочего узла MicroK8s пытается обнаружить все конечные точки API-серверов в кластере и настроить новый узел соответствующим образом. Список серверов API хранится в файле /var/snap/microk8s/current/args/traefik/provider.yaml.

Прокси-сервер API будет автоматически проверять обновления при изменении узлов плоскости управления кластера (например, добавлении нового узла плоскости управления, удалении старого) и обновлять список известных конечных точек серверов API.

Если перед сервером API уже установлен балансировщик нагрузки, вы можете настроить адрес балансировщика нагрузки вручную в файле /var/snap/microk8s/current/args/traefik/provider.yaml. В этом случае не забудьте также отключить автоматическое обновление конечных точек плоскости управления, установив --refresh-interval 0 в /var/snap/microk8s/current/args/apiserver-proxy.

Команды (со списком команд можно ознакомиться на ресурсе продукта:

https://discuss.kubernetes.io/t/command-reference/11268

Удаление приложения

MicroK8s удаляется с компьютера тоже одной простой командой:
sudo snap remove microk8........s

Команды (со списком команд можно ознакомиться на ресурсе продукта: