Как установить KubeSphere на Ubuntu 22.04

Kubesphere бесплатная платформа Kubernetes с открытым исходным кодом и управление облачными приложениями, проверенная CNCF. Это контейнерная платформа Kubernetes корпоративного уровня с широкими возможностями и адаптированная для гибридного мультиоблачного развертывания. По умолчанию Kubesphere включает в себя полный набор автоматизированных ИТ-операций и оптимизирована с учетом рабочих процессов DevOps. Ее можно развернуть на существующем кластере Kubernetes или дистрибутивах Linux, а также настроить Kubernetes с Kubesphere через KubeKey, инструмент командной строки для Linux для автоматического развертывания, обновления и масштабирования кластера Kubernetes.

Kubesphere предоставляет интуитивно понятный графический веб-интерфейс для управления кластером Kubernetes. Он также поставляется с подключаемыми инструментами CI/CD, такими как jenkins, которые позволяют автоматически настроить конвейер CI/CD. Кроме того, он предоставляет функции Source-to-Image (S2I) для автоматического создания воспроизводимых образов контейнеров из исходного кода и Binary-to-Image (B2I) для создания воспроизводимых образов контейнеров из бинарных файлов (Jar, War, Binary file).

В этой статье мы рассмотрим развертывание Kubernetes и Kubesphere на серверах Ubuntu 22.04. Вы будете использовать несколько серверов Ubuntu для этого развертывания, и вы будете использовать приложение KubeKey, которое предоставляется Kubesphere для автоматического развертывания кластера Kubernetes и Kubesphere.

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

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

  • Три Linux-сервера под управлением ubuntu 22.04 — один сервер будет использоваться в качестве плоскости управления Kubernetes, а два сервера — в качестве рабочих узлов.
  • Пользователь, не являющийся рутом, с правами администратора sudo/root.

Настройка хостов и пользователей

Перед установкой Kubernetes и Kubesphere необходимо настроить файл ‘/etc/hosts’ и создать нового пользователя с sudo password-less на всех ваших серверах. Поэтому обязательно выполните следующие команды на всех ваших серверах Ubuntu.

Теперь откройте файл ‘/etc/hosts’ с помощью следующей команды редактора nano.

sudo nano /etc/hosts

Добавьте в файл сведения об IP-адресах и именах хостов серверов.

192.168.5.35    master    master
192.168.5.121   node1     node1
192.168.5.122   node2     node2

Сохраните файл и закройте редактор после завершения работы.

Далее введите следующую команду для создания нового пользователя ‘ubuntu’ и установите пароль для нового пользователя ‘ubuntu‘. При появлении запроса введите пароль и повторите.

sudo useradd -m -s /bin/bash ubuntu
sudo passwd ubuntu

Наконец, выполните следующую команду, чтобы разрешить пользователю ‘ubuntu’ выполнять ‘sudo‘ без пароля. Пользователь ‘ubuntu’ здесь будет использоваться для установки зависимостей пакетов, поэтому вы должны убедиться, что этот пользователь может стать root без пароля.

cat Defaults:ubuntu !fqdn
Defaults:ubuntu !requiretty
ubuntu ALL=(ALL) NOPASSWD: ALL
EOF

После настройки ‘/etc/hosts’ файл и создайте файл ‘ubuntu‘ пользователя, затем настройте SSH-аутентификацию без пароля для пользователя ‘ubuntu‘.

настройка хостов пользователей

Настройка аутентификации на основе ключа SSH

В этом разделе вы будете настраивать SSH-аутентификацию без пароля для пользователя ‘ubuntu’. Таким образом, сценарий установки Kubernetes и Kubesphre будет из ‘master‘ сервер. И установка на оба ‘узел1‘ и ‘node2’ будут выполнены автоматически.

На сервере ‘master’ введите следующую команду для входа в систему от имени пользователя ‘ubuntu‘. Затем сгенерируйте новую пару ключей SSH, используя ‘ssh-keygen’ команда, как показано ниже. После завершения ваши открытые и закрытые ключи SSH будут храниться в папке ‘~/.ssh‘ директория.

su - ubuntu
ssh-keygen -t ed25519

сгенерировать ключ ssh

Далее введите следующую команду для передачи открытого ключа SSH с «главного» сервера на все узлы, которые будут использоваться для установки Kubernetes и Kubesphre.

ssh-copy-id ubuntu@master
ssh-copy-id ubuntu@node1
ssh-copy-id ubuntu@node2

Введите ‘да‘, чтобы принять отпечаток SSH для сервера, затем введите пароль для пользователя ‘ubuntu‘ при появлении запроса. После добавления SSH-ключа вы должны получить результат, подобный ‘Количество добавленных ключей: 1‘.

Ниже приведен вывод при добавлении открытого ключа SSH на локальный хост ‘master‘ сервер.

загрузить ключ ssh на localhost

Ниже приведен вывод при добавлении открытого ключа SSH в ‘узел1‘ сервер.

загрузить ключ ssh на node1

Ниже приведен вывод при добавлении открытого ключа SSH в ‘узел2‘ сервер.

загрузить ключ ssh на node2

После добавления и загрузки открытого ключа SSH вы сможете подключаться ко всем вашим серверам через пользователя ‘ubuntu’ без проверки подлинности пароля.

В следующем разделе вы проверите и убедитесь, что можете подключаться ко всем узлам/серверам через пользователя без пароля ‘ubuntu‘, затем установите некоторые зависимости пакетов.

Установка зависимостей

Итак, вы загрузили открытый ключ SSH из папки ‘master‘ сервер на оба сервера ‘узел1‘ и ‘узел2‘ сервера. Теперь вам нужно убедиться, что вы можете подключиться к обоим серверам через пользователя ‘ubuntu’ с аутентификацией без пароля SSH и установить основные зависимости для Kubernetes и Kubesphere.

На сервере ‘мастер‘ сервер, введите следующую команду для обновления индекса пакетов Ubuntu и установки некоторых зависимостей пакетов через ‘apt install‘ команда ниже.

sudo apt update
sudo apt install curl socat conntrack ebtables ipset

ssh-keyscan -H master >> ~/.ssh/known_hosts

Когда появится запрос, введите y для подтверждения и нажмите ENTER, чтобы продолжить.

установка зависимостей

Далее подключитесь к ‘узел1‘ сервер через ‘ssh‘ команду ниже. После выполнения команды вы должны войти в систему ‘узел1‘ без проверки подлинности пароля.

ssh ubuntu@node1

Теперь введите следующую команду apt, чтобы обновить и обновить индекс пакетов Ubuntu. Затем установите некоторые базовые зависимости пакетов. Введите y, когда появится запрос, и нажмите ENTER, чтобы продолжить.

sudo apt update
sudo apt install curl socat conntrack ebtables ipset

login node1 install packages

Наконец, подключитесь к ‘узел2‘ сервер через ‘ssh‘ команда ниже.

ssh ubuntu@node2

После подключения введите следующую команду для обновления индекса пакетов репозитория. Затем установите некоторые зависимости пакетов с помощью команды ‘apt install‘ команда.

sudo apt update
sudo apt install curl socat conntrack ebtables ipset

Введите y при появлении запроса и нажмите ENTER, чтобы продолжить.

login node2 install dependencies

На данном этапе вы настроили свои серверы для установки Kubernetes и Kubesphre. В следующем разделе вы загрузите двоичный файл KubeKey, который будет использоваться для инициализации кластера Kubernetes и установки Kubesphere.

Загрузка KubeKey на мастер-узле

В этом разделе вы загрузите бинарный файл KubeKey на «главный» сервер. KubeKey — это единый двоичный файл, который позволяет развернуть кластер Kubernetes и/или использовать панель администрирования KubeSphere. Он также поддерживает облачные нативные дополнения, многоузловость и HA (High Availability).

Введите следующую команду для загрузки бинарного файла KubeKey в текущий рабочий каталог. После завершения процесса в вашей директории должен появиться файл ‘kk’.

curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.2 sh -

Теперь выполните следующую команду, чтобы сделать файл ‘kk‘ исполняемый.

chmod +x kk

скачать kubekey

Затем выполните двоичный файл ‘kk‘ для проверки текущей версии и доступных параметров списка на KubeKey.

./kk version
./kk help

Ниже приведен аналогичный вывод, который будет выведен на экран вашего терминала.

проверить kubekey

После загрузки KubeKey вы начнете настройку развертывания Kubernetes и Kubesphere с помощью KubeKey.

Создание конфигурации развертывания Kubernetes и Kubesphere

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

Для многоузлового развертывания Kubernetes и Kubesphre необходимо сгенерировать YAML-скрипт, который определит конфигурацию сервера.

Выполните следующую команду ‘kk’ команда для создания новой конфигурации YAML. В этом примере вы сгенерируете новый YAML-скрипт ‘deployment-kubesphre.yml‘ и укажите версию Kubernetes v1.24.2 и Kubesphere v3.3.1.

./kk create config -f deployment-kubesphre.yml --with-kubernetes v1.24.2 --with-kubesphere v3.3.1

Вы должны увидеть результат, подобный ‘Успешно сгенерирован файл конфигурации KubeKey‘.

создание конфигурации kubekey

Теперь откройте YAML-файл ‘deployment-kubesphre.yml‘ с помощью следующей команды редактора nano.

nano deployment-kubesphre.yml

Измените имя кластера в параметре ‘метаданные: testdeployment‘, и измените IP-адрес узла детализации, пользователя и закрытый ключ для входа на целевые серверы. Наконец, на странице ‘roleGroup‘, укажите, какой узел будет использоваться в качестве плоскости управления и рабочих узлов.

apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
  name: testdeployment
spec:
  hosts:
  - {name: master, address: 192.168.5.35, internalAddress: 192.168.5.35, user: ubuntu, privateKeyPath: "~/.ssh/id_ed25519"}
  - {name: node1, address: 192.168.5.121, internalAddress: 192.168.5.121, user: ubuntu, privateKeyPath: "~/.ssh/id_ed25519"}
  - {name: node2, address: 192.168.5.122, internalAddress: 192.168.5.122, user: ubuntu, privateKeyPath: "~/.ssh/id_ed25519"}
  roleGroups:
    etcd:
    - master
    control-plane:
    - master
    worker:
    - node1
    - node2

Сохраните файл и выйдите из редактора после завершения работы.

настройки хостов

В этом примере вы создадите новый кластер Kubernetes под названием ‘testdeployment’ с тремя различными серверами Ubuntu.

  • master в качестве etcd и плоскости управления.
  • узел1 и узел2 будут использоваться в качестве рабочих узлов.

Чтобы установить все требования на целевые серверы, вы будете использовать SSH и входить в систему с закрытым ключом ‘~/.ssh/id_ed25519‘ от имени пользователя ‘ubuntu‘. Этот пользователь настроен как пользователь без пароля в visudo.

После создания и настройки YAML-файла и сборки развертывания Kubernetes и Kubesphre перейдите к следующим шагам, чтобы начать развертывание.

Развертывание Kubernetes и Kubesphere

В этом разделе вы развернете Kubernetes и Kubesphre с многоузловой архитектурой с помощью KubeKey и YAML-скрипта ‘deployment-kubesphre.yml‘.

Выполните Kubekey ‘kk‘ двоичный файл ниже, чтобы запустить развертывание Kubernetes и Kubesphere с помощью YAML-файла ‘deployment-kubesphre.yml‘.

./kk create cluster -f deployment-kubesphre.yml

Сначала KubeKey проверит требования к деталям для установки Kubernetes. В случае успеха вам будет предложено подтвердить установку. Введите «Да» и нажмите ENTER, чтобы продолжить.

развертывание kubernetes kubepshere

Развертывание займет около 5-10 минут. После завершения вы должны увидеть вывод, подобный этому, на вашем терминале. Также вы получите стандартного пользователя admin и пароль, которые можно использовать для входа в Kubesphere.

развертывание kubernetes завершено

Теперь откройте веб-браузер и зайдите на IP-адрес «главного» сервера, а затем на порт «30880» (т.е: http://192.168.5.35:30880/). Вы должны увидеть страницу входа в Kubepshre.

Введите пользователя как ‘admin‘ и пароль по умолчанию ‘P@88w0rd‘, затем нажмите Войти.

страница входа

После входа в систему вам будет предложено изменить пароль по умолчанию для пользователя Kubepshre ‘admin‘. Введите новый пароль и нажмите кнопку Отправить.

сменить пароль

После завершения вы должны увидеть панель администрирования Kubesphere. На странице панели вы должны увидеть текущую версию Kubesphere v3.3.1 и доступный кластер Kubernetes — 1.

приборная панель kubesphere

Далее щелкните меню Platform в левом верхнем углу и выберите Cluster Management.

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

Ниже приведена подробная информация о кластере Kubernetes, который вы установили с несколькими серверами Ubuntu, сервер ‘master‘, узел1, и узел2.

кластер по умолчанию

Теперь нажмите на меню Nodes, чтобы получить подробную информацию о доступных узлах в кластере Kubernetes. Ниже вы можете видеть, что в кластере Kubernetes есть три различных узла. The ‘master‘ сервер используется как в качестве плоскости управления, так и в качестве рабочего узла.

список узлов

Теперь щелкните на System Components, чтобы получить подробную информацию об установленных компонентах в развертывании Kubernetes и Kubesphere. Вы можете увидеть три различные категории компонентов, а именно Kubesphere, Kubernetes, и Мониторинг.

компоненты списка

Далее вернитесь в терминальную сессию «главного» сервера и выполните следующую команду ‘kubectl‘ команда ниже, чтобы получить список доступных узлов в кластере Kubernetes.

kubectl get nodes

Вы должны получить результат, подобный этому — На кластере Kubernetes доступно три узла: главный узел, который используется в качестве плоскости управления, и узлы node1 и node2, которые используются в качестве рабочих узлов.

проверить узлы

Введите следующую команду, чтобы получить подробную информацию о каждом узле в кластере Kubernetes.

kubectl describe node

Ниже показана подробная информация о плоскости управления Kubernetes на ‘master‘ сервер.

описать мастер узла

Ниже приведена подробная информация о рабочем узле на узел1 сервер.

описать узел1

Ниже приведена подробная информация о рабочем узле на узел2 сервер.

описать узел2

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

kubectl get pods --all-namespaces

В следующем выводе вы можете увидеть несколько пространств имен ‘kube-system’, ‘kubesphere-system’, ‘kubesphere-control-system’, и ‘kubesphere-monitoring-system‘, которые доступны на вашем кластере Kubernetes со всеми запущенными подсистемами.

проверить поды

На данном этапе вы развернули кластер Kubernetes и Kubesphere на нескольких серверных узлах Ubuntu. Вы также получили доступ к панели администрирования Kubesphere и изменили стандартный пароль администратора.

Теперь вы можете развернуть свое приложение в Kubernetes и Kubesphere. На следующем этапе вы развернете простой веб-сервер Nginx в Kubernetes, чтобы убедиться, что установка Kubernetes и Kubesphere прошла успешно.

Развертывание подсистем в Kubernetes и Kubesphere

В этом примере вы будете развертывать подсистемы Nginx в кластере Kubernetes и Kubesphere.

Выполните следующую команду, чтобы создать новое развертывание для веб-сервера Nginx. В этом примере мы создадим новые подсистемы Nginx на основе образа «nginx:alpine» с двумя репликами.

kubectl create deployment nginx --image=nginx:alpine --replicas=2

Теперь создайте новый сервис типа «NodePort», который будет открывать развертывание Nginx, с помощью следующей команды kubectl. Эта команда создаст новый сервис Kubernetes с именем «nginx» с типом «NodePort» и откройте порт «80» для Pod.

kubectl create service nodeport nginx --tcp=80:80

создание службы развертывания

Далее выполните следующую команду kubectl, чтобы проверить список запущенных под в вашем кластере Kubernetes. Вы должны увидеть два запущенных стручка Nginx.

kubectl get pods

проверить поды

Теперь проверьте список доступных сервисов на Kubernetes с помощью следующей команды. Вы должны увидеть символ «nginx» тип сервиса NodePort раскрывает порт «80» и порт «32241» на узлах Kubernetes. Сервис NodePort всегда будет выставлять порт в диапазоне xxx-xxxx на узлах Kubernetes (рабочих узлах).

kubectl get svc

проверка сервисов

Выполните приведенную ниже команду curl, чтобы получить доступ к развертыванию Nginx.

curl 10.233.14.102
curl node1:32241
curl node2:32241

Ниже приведен вывод страницы Nginx pod index.html, которая открыта на ‘master‘ сервер.

проверка развертывания nginx

Ниже приведен вывод исходного кода index.html из программы «узел1«.

nginx index node1

Ниже приведен код index.html из «узел2«.

мастер развертывания nginx

Теперь вернитесь к панели администрирования Kubesphere. Нажмите на кнопку Рабочие нагрузки приложений, затем нажмите Рабочие нагрузки. И вы увидите установку под названием ‘nginx‘ доступен с двумя запущенными стручками.

список подсистем

Нажмите на кнопку ‘nginx‘ развертывания, чтобы получить подробную информацию о вашей установке. Вы должны увидеть ‘nginx‘ развертывание поставляется с двумя репликами, и эти две реплики стручков запущены.

список стручков

Далее нажмите на кнопку Услуги меню, чтобы получить список служб, доступных на вашем кластере Kubernetes. Вы должны увидеть службу под названием ‘nginx‘ и ‘Kubernetes‘ доступны на вашем кластере.

список служб

Нажмите на службу ‘nginx‘, чтобы получить подробную информацию о службе. Ниже показана аналогичная страница, которая будет отображаться на вашей панели Kubesphere.

подробная информация о службе nginx

Таким образом, вы завершили развертывание подсистем Nginx в кластере Kubernetes и проверили детали развертывания на панели администрирования kubesphere.

Заключение

В этом руководстве вы развернули кластер Kubernetes и Kubesphre на нескольких серверах Ubuntu 22.04. Вы развернули Kubernetes с помощью инструмента автоматизации под названием ‘KubeKey’, разработанного компанией Kubesphere. Вы также узнали о базовой конфигурации серверов Ubuntu для развертывания Kubernetes.

Кроме того, вы успешно установили и настроили Kubesphere в качестве панели веб-администрирования Kubernets. Вы узнали об основных способах использования Kubesphere для управления кластером Kubernetes и развертыванием, подсистемами и сервисами.

Чтобы узнать больше о Kubesphere, посетите официальную документацию Kubesphere. Что касается Kubernetes, посетите официальную документацию Kubernets.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *