На всех машинах установите hostname и команду tar для распаковки архивов tar.gz. Убедитесь, что ssh правильно настроен для удаленного доступа. Если ssh использует обычного пользователя, убедитесь, что этот пользователь имеет права на выполнение sudo без пароля.
На любой машине, которая может подключаться ко всем вышеупомянутым машинам, скомпилируйте и установите 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
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_offline_install.
Подготовьте 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 см. в разделе Пояснение конфигурационного файла.
$ 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
## Просмотр информации о кластере
```bash
$ eggo list
Name Masters Workers Status
k8s-cluster 2 2 success
Просмотр информации о кластерах, управляемых Eggo. Первый столбец представляет название кластера, второй — количество мастер-узлов, третий — количество worker-узлов, четвертый — состояние кластера.
$ eggo -d cleanup --id k8s-cluster -f deploy.yaml
-d
параметр используется для вывода отладочной информации
--id
идентификатор кластера- -f
параметр указывает на конфигурационный файл, использованный при развертывании кластера. Без этого параметра конфигурация будет загружена из файла по умолчанию /etc/eggo/$ClusterID/deploy.yaml
. Рекомендуется не указывать этот параметр и использовать сохранённый конфигурационный файл для удаления кластера.
Примечание: процесс удаления кластера не очищает контейнеры и образы. Однако если при развертывании был указан необходимость установки контейнерного движка, то он будет удалён, что может привести к неправильной работе контейнера. В процессе удаления могут появиться ошибочные сообщения, но они обычно связаны с некорректными ответами системы во время выполнения команд, поэтому их можно игнорировать. Кластер всё равно будет успешно удалён.
$ eggo -d delete --id k8s-cluster 192.168.0.5 192.168.0.6
-d
параметр указывает на вывод отладочной информации.--id
— идентификатор кластера.--type
может быть master
или worker
, по умолчанию worker
.Дополнительные сведения см. в спецификации хуков.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )