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 с «главного» сервера на все узлы, которые будут использоваться для установки Kubernetes и Kubesphre.
ssh-copy-id ubuntu@master ssh-copy-id ubuntu@node1 ssh-copy-id ubuntu@node2
Введите ‘да‘, чтобы принять отпечаток SSH для сервера, затем введите пароль для пользователя ‘ubuntu‘ при появлении запроса. После добавления SSH-ключа вы должны получить результат, подобный ‘Количество добавленных ключей: 1‘.
Ниже приведен вывод при добавлении открытого ключа SSH на локальный хост ‘master‘ сервер.

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

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

После добавления и загрузки открытого ключа 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

Наконец, подключитесь к ‘узел2‘ сервер через ‘ssh‘ команда ниже.
ssh ubuntu@node2
После подключения введите следующую команду для обновления индекса пакетов репозитория. Затем установите некоторые зависимости пакетов с помощью команды ‘apt install‘ команда.
sudo apt update sudo apt install curl socat conntrack ebtables ipset
Введите y при появлении запроса и нажмите ENTER, чтобы продолжить.

На данном этапе вы настроили свои серверы для установки 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

Затем выполните двоичный файл ‘kk‘ для проверки текущей версии и доступных параметров списка на KubeKey.
./kk version ./kk help
Ниже приведен аналогичный вывод, который будет выведен на экран вашего терминала.

После загрузки 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‘.

Теперь откройте 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, чтобы продолжить.

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

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

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

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

Далее щелкните меню 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 сервер.

Ниже приведена подробная информация о рабочем узле на узел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‘ сервер.

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

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

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

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

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

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

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