Учебное пособие по установке и настройке kubesphere для развертывания k8s
Учебное пособие по установке и настройке kubesphere для развертывания k8s

Предисловие

Инструмент kk (KubeKey), используемый в этой статье, выполняет установку kubesphere и k8s, автор успешно развернул его в рабочей среде и на виртуальной машине, пожалуйста, используйте его~

Что нужно знать перед установкой

kubesphereОфициальная документация:https://v3-1.docs.kubesphere.io/zh/docs/ несколько узлов Установитьдокумент:https://v3-1.docs.kubesphere.io/zh/docs/installing-on-linux/introduction/multioverview/ Автономная установка Официальная документация:https://v3-1.docs.kubesphere.io/zh/docs/installing-on-linux/introduction/air-gapped-installation/

Необходимая среда

Конфигурация виртуальной машины

имя хоста

IP-адрес

Минимальные требования

иллюстрировать

master14

192.168.239.14

Процессор: 2 ядра, память: 4 ГБ, жесткий диск: 80 ГБ

узел мастер14

node22

192.168.239.22

ЦП: 1 ядро, память: 1 ГБ, жесткий диск: 50 ГБ

узел22узел

node23

192.168.239.23

ЦП: 1 ядро, память: 1 ГБ, жесткий диск: 50 ГБ

узел23узел

node24

192.168.239.23

ЦП: 1 ядро, память: 1 ГБ, жесткий диск: 50 ГБ

частный сервер гавани


Напоминание: это минимальная конфигурация для локального автономного развертывания через виртуальную машину (Конфигурация жесткого диска виртуальной машины 50 ГБ не означает, что 50 ГБ будут выделены напрямую, это виртуально~) Словом, резервирования жесткого диска на 100G вполне достаточно, чтобы поиграться с моей Конфигурацией.

  • socat, conntrack, ebtables, ipset, если есть сеть, просто ням install -y Установить

При достаточно надежной внешней защите selinux можно отключить навсегда

Язык кода:javascript
копировать
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl stop firewalld && systemctl disable firewalld
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab 

Docker

dockerонлайн Установить Подробное руководство---Установить

Теплое напоминание: Ниже приводится Автономная правительственная интранет-сеть. установка~

Загрузите установочный пакет

Выберите подходящую версию докера

Разархивировать

Язык кода:javascript
копировать
 tar -zxvf docker-19.03.9.tgz

Переместить файлы

Переместите все распакованные папки Docker в каталог /usr/bin.

Язык кода:javascript
копировать
cp docker/* /usr/bin/

Зарегистрируйте Docker как системную службу docker.service

Язык кода:javascript
копировать
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
Язык кода:javascript
копировать
#Выполняем последовательно следующие скрипты
vi /etc/systemd/system/docker.service
chmod +x /etc/systemd/system/docker.service
systemctl daemon-reload && systemctl start docker && systemctl enable docker.service
docker -v

vi /etc/docker/daemon.json заполните следующее содержимое:

Язык кода:javascript
копировать
{
  "registry-mirrors": [
    "https://sq9p56f6.mirror.aliyuncs.com" #зеркальный ускоритель
  ],
  "insecure-registries": ["IP:8088"], #Если зеркальное хранилище http, его необходимо добавить в политику безопасности
  "exec-opts":["native.cgroupdriver=systemd"] #Переведите cgroup в режим systemd для синхронизации с Linux, по умолчанию используется cgroupfs.
}

Docker-compose

Загрузите установочный пакет

Docker-ComposeПуть загрузки:https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64

Выберите подходящую версию докера

Конфигурация

Язык кода:javascript
копировать
#Выполняем команды последовательно
#переименовать
mv docker-compose-Linux-x86_64 docker-compose
#Изменить разрешения
chmod +x docker-compose
#Файл docker-compose перемещен в /usr/local/bin 
mv docker-compose /usr/local/bin
#Открываем файл /etc/profile
vi /etc/profile
#Добавляем содержимое в конец файла, затем сохраняем и выходим
export PATH=$JAVA_HOME:/usr/local/bin:$PATH
#Перезагрузите файл конфигурации, чтобы он вступил в силу
source /etc/profile
#тест
docker-compose

Harbor

HarborПодробное руководство---Установить

По умолчанию у вас есть пакет порта.

Язык кода:javascript
копировать
#декомпрессия
tar -zxvf harbor-offline-installer-v2.5.0-rc4.tgz
cp harbor.yml.tmpl harbor.yml
# Закомментируйте содержимое конфигурации htps. Параметры, связанные с конфигурацией htp, в основном имя хоста, порт, другие можно оставить в покое.
vi harbor.yml
#запускать
./install.sh

установка kubesphere и k8s

Автономная установка

Вы можете изменить загрузку в соответствии с вашими потребностями. Kubernetes Версия. Установить KubeSphere v3.1.1 предложения Kubernetes Версии: v1.17.9, v1.18.8, v1.19.8 а также v1.20.4. Если не указано Kubernetes Версия, Кубе Кей будет установлен по умолчанию Kubernetes v1.19.8. О поддерживаемых Kubernetes Дополнительная информация о версии,Видетьопорная матрица。 После запуска скрипта папка будет создана автоматически kubekey。пожалуйста Уведомление,Когда вы позже создадите кластер,Этот файл и kk Должен быть размещен в том же каталоге.

Язык кода:javascript
копировать
#Файл является исполняемым.
chmod +x offline-installation-tool.sh

# IP:8088->Частный серверный складip+порт
./offline-installation-tool.sh -l images-list.txt -d ./kubesphere-images -r IP:8088/library

#Извлеките и войдите в каталог:
chmod +x kk

#Указываем соответствующую версию (нет необходимости выполнять этот шаг, если в файле kk есть yaml)
./kk create config --with-kubernetes v1.20.4 --with-kubesphere v3.1.1 -f config-sample.yaml

#Редактировать (файл необходимо отредактировать следующим образом Конфигурация)
vi config-sample.yaml

#осуществлять
./kk create cluster -f config-sample.yaml

Теплое напоминание⚠️ Файл config-sample.yaml необходимо настроить следующим образом. spec.hosts Укажите машины, которые будут включены в кластер spec.roleGroups.etcd spec.roleGroups.master Укажите главный узел spec.roleGroups.worker Укажите рабочий узел registry.insecureRegistries Добавить адрес частного сервера

Появятся адрес доступа, имя пользователя и пароль, и установка пройдет успешно.

приложение

шаг:

  • Просмотр управления кластером
  • Включить компонент журнала
  • Запуск подключаемых компонентов
  • Создайте корпоративное пространство
  • Создать управление проектом
  • Репозиторий образов конфигурации
  • Установить соответствующую среду (nacos, xxljob, redis, mysql)
  • Приложение «Домашний сервис»
  • доступ -> OK

Рекомендуется установить MySQL извне.

Предварительная подготовка

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

Включите компонент журнала и запустите подключаемый компонент.

  • Введите управление кластером по умолчанию
  • Введите объект ClusterConfiguration.
  • Включить компонент журнал и сменные компоненты (конвейер)

Репозиторий образов конфигурации

  • Введите управление корпоративным пространством
  • Создайте корпоративное пространство
  • Создать управление проектом
  • Репозиторий образов конфигурации

Приложение «Домашний сервис»

В этой статье используется метод yml для создания самостоятельного приложения.,Различные проекты требуют толькоИзменить корпоративное пространствоЗеркальный склада такжеКонфигурация базы данныхВот и все。Добрые советы:Эта статья основана на существующей базе данных.а Также проектом можно управлять при условии его загрузки на зеркальный склад~

Конфигурация кода проекта

...

Пройти через сборочную линию

Создать проект конвейера

Создайте необходимые учетные данные

  • Создайте новый сертификат хранилища изображений.
  • Новый kubeconfig генерируется по умолчанию.

Создать конвейер

  • Оформление заказа по коду
  • Артефакты сборки интегрированной тестовой среды
  • чистое развертывание
  • Выпуск тестовой среды

Примечание. При сборке продукта независимо от того, было ли имя хранилища адреса источника изображения в файле pom проекта создано в гавани, если нет, при запуске конвейера будет сообщено об ошибке, и вам необходимо создать хранилище самостоятельно.

Создание визуального интерфейса
  • Знание среды агента
  • Оформление заказа по коду Ваучер – это адрес склада кода проекта.
  • Создание продукта в интегрированной тестовой среде
  • чистое развертывание
  • Выпуск тестовой среды
  • Запустить развертывание не удалось, активность кликов, Посмотреть журнал. Отчет об ошибках анализа

Успешно. После завершения запуска проверьте журналы всех контейнеров службы, чтобы убедиться, что запуск завершился без ошибок.

Сборка формы файла конфигурации
Язык кода:javascript
копировать
немного

Уведомление

  • Переменные среды среды необходимо скорректировать
  • Необходимо скорректировать учетные данные

кубешпере добавить новый узел

1. Измените файл kkConfiguration на главном узле и добавьте новый узел node2Configuration.

2. Выполните команду добавления

Язык кода:javascript
копировать
./kk add nodes -f Конфигурациядокумент
./kk add nodes -f sample.yaml

3. Просмотр узлов

Язык кода:javascript
копировать
kubectl get node

Удалить узел

Язык кода:javascript
копировать
./kk delete node <nodeName> -f config-sample.yaml

Укажите модуль для запуска на фиксированном IP-адресе

селектор тегов

1. Тег

Язык кода:javascript
копировать
#Просмотр текущего узла
$ kubectl get node -o wide

NAME                STATUS   ROLES                  AGE   VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE         KERNEL-VERSION                 CONTAINER-RUNTIME
k8s-elasticsearch   Ready    <none>                 16h   v1.21.0   172.16.66.167   <none>        CentOS Linux 8   4.18.0-305.19.1.el8_4.x86_64   docker://20.10.9
k8s-master          Ready    control-plane,master   43h   v1.21.0   172.16.66.169   <none>        CentOS Linux 8   4.18.0-305.19.1.el8_4.x86_64   docker://20.10.9
k8s-node1           Ready    <none>                 43h   v1.21.0   172.16.66.168   <none>        CentOS Linux 8   4.18.0-305.19.1.el8_4.x86_64   docker://20.10.9
k8s-node2           Ready    <none>                 43h   v1.21.0   172.16.66.170   <none>        CentOS Linux 8   4.18.0-305.19.1.el8_4.x86_64   docker://20.10.9

#Give k8s-node1 k8s-node2 помечен знаком
$ kubectl label nodes k8s-node1 k8s-node2 type=sign

#Просмотр узла с помощью тега type=websvr
$ kubectl get node -l type=websvr


NAME        STATUS   ROLES    AGE   VERSION
k8s-node1   Ready    <none>   43h   v1.21.0
k8s-node2   Ready    <none>   43h   v1.21.0

#Другие операции со следующими тегами:
#Изменить метку
$ kubectl label nodes k8s-node1 k8s-node2 type=webtest --overwrite

#Просмотр тегов узлов
$ kubectl get nodes k8s-node1 k8s-node2 --show-labels

#удалить тег
$ kubectl label nodes k8s-node1 k8s-node2 type-

2. Вставить селектор

Язык кода:javascript
копировать
apiVersion: apps/v1
kind: Deployment
metadata:
  name: websvr1-deployment
spec:
  selector:
    matchLabels:
      app: websvr1
  replicas: 3
  template:
    metadata:
      labels:
        app: websvr1
    spec:
      nodeSelector:        #Выберите развертывание узла с типом метки:labels
        type: lables
      containers:
      - name: websvr1
        image: websvr:v1
        ports:
        - containerPort: 3000

Монтирование данных

Объем хранилища kubesphere является распределенной хранилищем.,Не беспокойтесь о том, что делает нижний слой. Но нам нужно хранить данные в файловой директории текущего сервера.,Можно смонтировать с помощью тома. Конфигурация

Язык кода:javascript
копировать
# Грубо говоря, Он смонтирован на диске начальство.
apiVersion: v1
kind: Pod
spec: 
  containers: 
    - name: test
      image: nginx
      # Определите том данных, который нужно смонтировать
      volumeMounts:
        - name: config-volume
          mountPath: /etc/config
  volumes: 
    - name: config-volume
      hostPath: 
        path: /usr/etc/nginx/config

Вышеуказанное будет локальным каталогом (хоста сервера). /usr/etc/nginx/config висит на контейнере /etc/config начальство.

Разрешить доступ к сети

мобильная сеть

Язык кода:javascript
копировать
      dnsConfig:
        nameservers:
          - 114.114.114.114
        options:
          - name: ndots
            value: '2'
          - name: edns0

Другие часто задаваемые вопросы

Параметр https не установлен (протокол https, но атрибут ssl_cert не установлен)

Анализ причин. Как следует из названия, сразу видно, что параметр https не установлен и нет необходимости использовать https. Решение: закомментируйте https в файле конфигурации, просто закомментируйте его.

Начать отчет о порте ( Не удалось настроить таблицы IP: невозможно включить правило SKIP DNAT)

Анализ причин: Docker не перезапустился после отключения брандмауэра. Решение. Выполните следующую команду, чтобы перезапустить Docker. перезапуск сервисного докера

Подключитесь к частному серверу (http: сервер передал HTTP-ответ HTTPS-клиенту)

Анализ причин: взаимодействие с реестром Docker по умолчанию использует HTTPS, но при создании частного образа по умолчанию используется служба HTTP, поэтому при взаимодействии с частным образом возникает следующая ошибка. Решение. Добавьте безопасный процесс в системную службу Docker.

vi /etc/docker/daemon.jsonзаполнятьinsecure-registries

Язык кода:javascript
копировать
{
  "registry-mirrors": [
    "https://sq9p56f6.mirror.aliyuncs.com"
  ],
  "insecure-registries": ["192.168.239.24:8088"],
  "exec-opts":["native.cgroupdriver=systemd"]
}

Недостаточно места на диске докера (ОШИБКА: невозможно создать временный каталог) (фатальная ошибка: время выполнения: недостаточно памяти)

Анализ причин:проходитьdu -h --max-depth=1 / Проверьте каталог уровень за уровнем и обнаружите, что файл каталога /var/lib/docker слишком велик. Решение. Перенесите данные и измените место хранения Docker по умолчанию. или Получить внешнее хранилище

(1) Перенос данных и изменение места хранения докера по умолчанию.

Язык кода:javascript
копировать
#Остановить службу докера
systemctl stop docker
#Создаем новый каталог докера и выполняем команду df -h, найти большой диск
 mkdir -p /app/docker/lib
#Переносим файлы из каталога /var/lib/docker в /app/docker/lib
rsync -avz /var/lib/docker/ /app/docker/lib/
#Конфигурация /usr/lib/systemd/system/docker.service
vi /usr/lib/systemd/system/docker.service
#Перезапускаем докер
systemctl daemon-reload
systemctl restart docker
systemctl enable docker

(2) Подтвердите, вступила ли в силу модификация корневого каталога Docker.

Язык кода:javascript
копировать
[root@node24 docker]# docker info
...
Docker Root Dir: /app/docker/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
...

(3) Убедитесь, что предыдущее изображение все еще на месте.

Язык кода:javascript
копировать
[root@master24 kk]# docker images
REPOSITORY                                                                TAG                            IMAGE ID            CREATED             SIZE
perl                                                                      latest                         f9596eddf06f        5 months ago        890MB
hello-world                                                               latest                         feb5d9fea6a5        8 months ago        13.3kB
192.168.239.24:8088/library/nginxdemos/hello                              plain-text                     21dd11c8fb7a        8 months ago        22.9MB
nginxdemos/hello                                                          plain-text                     21dd11c8fb7a        8 months ago        22.9MB
192.168.239.24:8088/library/kubesphere/edge-watcher                       v0.1.0                         f3c1c017ccd5        8 months ago        47.8MB
kubesphere/edge-watcher                                                   v0.1.0                         f3c1c017ccd5        8 months ago        47.8MB

(4) Убедившись, что с контейнером нет проблем, удалите файлы в каталоге /var/lib/docker/.

Язык кода:javascript
копировать
rm -rf /var/lib/docker

Изображение не существует (Нет такого изображения: perl:latest)

В докере такого образа нет. Просто вытащите его и отправьте на частный сервер с тегом.

Превышено количество повторных попыток соединения (сброс соединения узлом. См. «docker run --help».)

(1) Ситуация 1

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

vi /etc/docker/daemon.jsonзаполнятьregistry-mirrors

Язык кода:javascript
копировать
{
  "registry-mirrors": [
    "https://sq9p56f6.mirror.aliyuncs.com"  #Это мой собственный зеркальный ускоритель Alibaba Cloud. Вы можете зайти на Alibaba и получить свой собственный.
  ],
  "insecure-registries": ["192.168.239.24:8088"],
  "exec-opts":["native.cgroupdriver=systemd"]
}

(2) Ситуация 2

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

(3) Ситуация третья

Возникла проблема с частным сервером Конфигурации в config-sample.yaml, в результате чего соответствующее зеркало не найдено.

Failed to deploy kubesphere: KubeSphere startup timeout

Посмотреть журнал

journalctl -xeu kubelet

Посмотреть прогресс

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items0.metadata.name}') -f

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose