Сайт https://microk8s.io
Для развертывания решения нам потребуется установленная система Ubuntu 22.04 LTS minimal
apt update
apt upgrade
apt install mc nano wget
После чего начинаем установку MicroK8s на Linux Ubuntu 22.04
sudo snap install microk8s --classic
Вступим в группу
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
После возврата статуса, у нас запущен одноузловой кластер Kubernetes. Давайте проверим версию Kubernetes:
microk8s kubectl version --output=yaml
Дашборд, CoreDNS, Istio и любое другое поддерживаемое дополнение кластера Kubernetes включаем командой:
microk8s enable dashboard dns istio
Получим все ресурсы для всех пространств имен
microk8s kubectl get all --all-namespaces
Вы заметили, что команда 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
На данном этапе это просто обычный Kubernetes, поэтому вам нужны только kubectl, и, возможно, позже, helm. Поэтому лучше иметь готовый инструмент kubectl с установленным правильным контекстом. Загрузим соответствующую версию kubectl:
curl -LO https://dl.k8s.io/release/v${KUBE_VERSION}/bin/linux/amd64/kubectl
Установим
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
Или вводим команду для детального просмотра версии:
kubectl version --client --output=yaml
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
Включаем дополнения (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
и производим Развертывание контейнера
Для этого Нажмите на кнопку + в левом верхнем углу главного окна. На открывшейся странице нажмите кнопку Создать из формы, а затем заполните необходимую информацию, как показано на рисунке
На этом установка окончена и microk8s готов к работе.
Задача по развертыванию microk8s выполнена!
Если необходимо добавить ноды в кластер
Добавление узла
Чтобы создать кластер из двух или более уже работающих экземпляров MicroK8s, используйте команду microk8s add-node. Экземпляр MicroK8s, на котором будет запущена эта команда, станет ведущим в кластере и будет размещать плоскость управления Kubernetes:
microk8s add-node
Присоединение узла к кластеру займет всего несколько секунд. После этого вы должны увидеть, что узел присоединился.
Удаление узла
Сначала на узле, который вы хотите удалить, выполните команду 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
Команды (со списком команд можно ознакомиться на ресурсе продукта: