1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openeuler-eggo

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
manual.md 18 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 15.03.2025 04:09 01724b9

Руководство по использованию Eggo

Подготовка

  1. На всех машинах установите hostname и команду tar для распаковки архивов tar.gz. Убедитесь, что ssh правильно настроен для удаленного доступа. Если ssh использует обычного пользователя, убедитесь, что этот пользователь имеет права на выполнение sudo без пароля.

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

Компиляция и установка

# Включение go mod
$ export GO111MODULE=on
# Установка goproxy как внутреннего прокси, также можно использовать прокси другой компании
$ go env -w GOPROXY=https://goproxy.cn,direct
# Установка зависимостей
$ go mod tidy
# Компиляция
$ make
# Локальная компиляция с использованием vendor
$ go mod vendor
$ make local
# Установка
$ make install

Запуск тестов

$ make test
  1. Для онлайн-установки, просто настройте config/all_online_install таким образом, чтобы он соответствовал вашим машинам, затем следуйте процессу установки, описанному в разделе "Установка кластера".4) Для оффлайн-установки вам потребуется подготовить K8S и связанные оффлайновые пакеты. Например, если используется openeuler20.09, зависимости могут быть извлечены из соответствующего источника программного обеспечения или ISO, после чего они должны быть собраны в оффлайновый пакет; структура хранения оффлайнового пакета должна выглядеть следующим образом:
$ tree
.
├── bin
├── dir
├── file
│   └── calico.yaml
├── image
│   └── images.tar
└── pkg
    ├── conntrack-tools-1.4.6-1.oe1.aarch64.rpm
    ├── containernetworking-plugins-0.8.2-4.git485be65.oe1.aarch64.rpm
    ├── coredns-1.7.0-1.0.oe1.aarch64.rpm
    ├── docker-engine-18.09.0-115.oe1.aarch64.rpm
    ├── etcd-3.4.14-2.aarch64.rpm
    ├── kubernetes-client-1.20.2-4.oe1.aarch64.rpm
    ├── kubernetes-kubelet-1.20.2-4.oe1.aarch64.rpm
    ├── kubernetes-master-1.20.2-4.oe1.aarch64.rpm
    ├── kubernetes-node-1.20.2-4.oe1.aarch64.rpm
    ├── libcgroup-0.42.2-1.oe1.aarch64.rpm
    ├── libnetfilter_cthelper-1.0.0-15.oe1.aarch64.rpm
    ├── libnetfilter_cttimeout-1.0.0-13.oe1.aarch64.rpm
    ├── libnetfilter_queue-1.0.5-1.oe1.aarch64.rpm
    └── socat-1.7.3.2-8.oe1.aarch64.rpm

5 директорий, 16 файлов- Структура каталогов пакета для офлайн-развертывания соответствует типу пакета в конфигурационном файле cluster-config config. Виды пакетов: pkg/repo/bin/file/dir/image/yaml/shell.

  • Каталог bin содержит двоичные файлы и соответствует типу пакета bin.

  • Каталог dir содержит директории, которые нужно скопировать на целевой сервер. Для этих директорий требуется указание пути назначения dst, соответствующего типу пакета dir.

  • Каталог file содержит три типа файлов: file, yaml и shell. Тип file представляет собой файлы, которые нужно скопировать на целевой сервер с указанием пути назначения dst; тип yaml — это пользовательские YAML-файлы, которые будут применены после завершения развертывания кластера; тип shell — это скрипты, которые нужно выполнить, с указанием времени выполнения schedule, которое может быть до присоединения узла prejoin, после присоединения узла postjoin, перед отключением узла precleanup или после отключения узла postcleanup.- Каталог image содержит контейнерные образы, которые нужно импортировать, такие как образы плагинов сети и образы пауза. Этот каталог соответствует типу пакета image. Если используется онлайн-установка, то образы автоматически скачиваются из репозитория образов контейнерами runtime, и нет необходимости подготовки файла images.tar. Например, если рассматривать зависимости Calico-плагина, команды для экспорта образов могут быть указаны в файле calico.yaml. Файл images.tar должен содержать все образы в формате tar, совместимом с Docker, который можно создать с помощью команды docker save -o images.tar images1:tag images2:tag .... Для примера Calico, команда экспорта образов будет следующей:

$ docker save -o images.tar calico/node:v3.19.1 calico/cni:v3.19.1 calico/kube-controllers:v3.19.1 calico/pod2daemon-flexvol:v3.19.1 k8s.gcr.io/pause:3.2
```- Каталог `pkg` содержит rpm/deb-пакеты для установки, соответствующие типу пакета `pkg`.

## Основное использование
В этом разделе представлены основные команды для выполнения `eggo`. Подробные шаги по развертыванию кластера описаны в последующих разделах.

```bash
# Создание шаблона конфигурации по умолчанию
$ eggo template -f test.yaml
# Создание шаблона с указанием IP адресов мастер-узлов
$ eggo template --masters=192.168.0.1 --masters=192.168.0.2 -f test.yaml
# Шаблон поддерживает несколько параметров для изменения значений по умолчанию
$ ./eggo template --help
      --etcds stringArray          Установка IP адресов узлов etcd
  -l, --loadbalancer stringArray   Установка IP адресов балансера нагрузки (по умолчанию [192.168.0.1])
      --masters stringArray        Установка IP адресов мастер-узлов (по умолчанию [192.168.0.2])
  -n, --name string                Установка имени кластера (по умолчанию "k8s-cluster")
      --nodes stringArray          Установка IP адресов рабочих узлов (по умолчанию [192.168.0.3,192.168.0.4])
  -p, --password string            Пароль для входа на всех узлах (по умолчанию "123456")
  -u, --user string                Пользователь для входа на всех узлах (по умолчанию "root")
# Создайте кластер с использованием конфигурационного файла, созданного выше командой template
$ eggo deploy -f test.yaml

# Очистите кластер с помощью конфигурационного файла, созданного выше командой template
$ eggo cleanup -f test.yaml

Процесс развертывания

Полностью онлайн развертываниеНапример, если openEuler21.09 уже имеет все компоненты, необходимые для развертывания кластера, то можно использовать метод полностью онлайн развертывания. Подробные конфигурационные файлы см. в config/all_online_install.

Онлайн развертывание

Полностью офлайн развертывание

Если openEuler21.09 уже подготовил все компоненты, необходимые для развертывания кластера, то можно использовать метод полностью офлайн развертывания. Подробные конфигурационные файлы см. в config/all_offline_install.

Оффлайн развертывание

Развертывание кластера

1. Генерация шаблонной конфигурации

Подготовьте YAML-конфигурационный файл для развертывания Eggo. Вы можете использовать следующую команду для генерации шаблонного конфигурационного файла и открыть его для изменения.

$ eggo template -f template.yaml

Кроме того, вы можете использовать командную строку для изменения списка машин и других базовых данных.

$ eggo template -f template.yaml -n k8s-cluster -u username -p password --masters 192.168.0.1 --masters 192.168.0.2 --workers 192.168.0.3 --etcds 192.168.0.4 --loadbalancer 192.168.0.5

Дополнительные сведения о конфигурационном файле deploy.yaml см. в разделе Пояснение конфигурационного файла.

2. Выполнение команды для установки k8s кластера```

$ eggo -d deploy -f deploy.yaml


- Параметр `-d` указывает на вывод отладочной информации.
- Параметр `-f` указывает на использование конфигурационного файла при развертывании. Если этот параметр не указан, будет использоваться конфигурационный файл по умолчанию `~/.eggo/deploy.yaml`.

Примечание: после завершения развертывания кластера выполните команду `echo $?`, чтобы проверить успешность развертывания. В случае успеха значение будет равно 0. При неудаче значение будет отличаться от нуля, а также будут выведены сообщения об ошибках в терминале.

**Внимание:** Если развертывание было прервано принудительно или закончилось некорректно, рекомендуется использовать команду очистки `eggo cleanup -f deploy.yaml`, чтобы гарантировать отсутствие остаточных данных.


### 3. Добавление мастера или рабочего узла в k8s кластер

Добавление одного узла:```
$ eggo -d join --id k8s-cluster --type master,worker --arch arm64 --port 22 192.168.0.5
  • -d параметр указывает на вывод отладочной информации.
  • --id идентификатор кластера.
  • --type может принимать значения master или worker; по умолчанию установлено значение worker. Также можно одновременно использовать как master, так и worker, при этом значение должно быть master,worker. Если тип включает master, то etcd будет также установлен на данном узле.
  • --arch архитектура машины; поддерживаются различные конфигурации, такие как amd64, arm64 и другие; требуется установочный пакет с соответствующей архитектурой. По умолчанию используется значение amd64.
  • --port порт для входа через SSH; если не указан, используется существующее значение. При отсутствии конфигурации используется значение по умолчанию 22. Соедините несколько узлов, добавив информацию о соединении в конфигурационный файл YAML:``` $ eggo -d join --id k8s-cluster --file join.yaml

* --file указывает на YAML-файл, формат которого представлен ниже

masters: # Настройка списка мастер-узлов, рекомендуется использовать каждый мастер-узел как worker-узел, чтобы избежать проблем с доступом к pod

  • name: test0 # Название узла, видимого кластером Kubernetes ip: 192.168.0.2 # IP адрес узла port: 22 # Порт SSH для входа arch: arm64 # Архитектура машины, для x86_64 используйте amd64
  • name: test1 ip: 192.168.0.3 port: 22 arch: arm64 workers: # Настройка списка worker-узлов
  • name: test0 # Название узла, видимого кластером Kubernetes ip: 192.168.0.2 # IP адрес узла port: 22 # Порт SSH для входа arch: arm64 # Архитектура машины, для x86_64 используйте amd64
  • name: test2 ip: 192.168.0.5 port: 22 arch: arm64

## Просмотр информации о кластере

```bash
$ eggo list
Name            Masters Workers Status
k8s-cluster     2       2       success

Просмотр информации о кластерах, управляемых Eggo. Первый столбец представляет название кластера, второй — количество мастер-узлов, третий — количество worker-узлов, четвертый — состояние кластера.

Удаление кластера

1. Удаление всего кластера

$ eggo -d cleanup --id k8s-cluster -f deploy.yaml
  • -d параметр используется для вывода отладочной информации

  • --id идентификатор кластера- -f параметр указывает на конфигурационный файл, использованный при развертывании кластера. Без этого параметра конфигурация будет загружена из файла по умолчанию /etc/eggo/$ClusterID/deploy.yaml. Рекомендуется не указывать этот параметр и использовать сохранённый конфигурационный файл для удаления кластера.

    Примечание: процесс удаления кластера не очищает контейнеры и образы. Однако если при развертывании был указан необходимость установки контейнерного движка, то он будет удалён, что может привести к неправильной работе контейнера. В процессе удаления могут появиться ошибочные сообщения, но они обычно связаны с некорректными ответами системы во время выполнения команд, поэтому их можно игнорировать. Кластер всё равно будет успешно удалён.

2. Также можно удалить только указанные узлы

$ eggo -d delete --id k8s-cluster 192.168.0.5 192.168.0.6
  • -d параметр указывает на вывод отладочной информации.
  • --id — идентификатор кластера.
  • --type может быть master или worker, по умолчанию worker.
  • 192.168.0.5 — список IP адресов или имен машин, которые требуется удалить; обратите внимание, что первый узел типа master нельзя удалять.

Нормативные требования

правила хуков

Дополнительные сведения см. в спецификации хуков.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/openeuler-eggo.git
git@api.gitlife.ru:oschina-mirror/openeuler-eggo.git
oschina-mirror
openeuler-eggo
openeuler-eggo
master