Здесь вы ищете Kubeadm . Это инструмент, используемый для bootstrap мастеров Kubernetes и объединения новых узлов в кластеры. Здесь - справочный документ, а здесь - документы API для Kubelet и всех его аргументов. Используя Kubeadm и эти аргументы, вы можете создать initConfiguration , clusterConfiguration и nodeConfiguration .
1) После создания этих трех файлов поместите initConfiguration
и clusterConfiguration
в один файл YAML. И поместите nodeConfiguration
в свой собственный файл. Поместите первый файл на ваш мастер (ы) и второй файл на ваш узел (ы). Если вы устанавливаете с конфигурацией Multi-Master, помните этот документ при создании ваших конфигураций. Вам также понадобится балансировщик нагрузки , прокси или умный DNS-трюк , чтобы включить это.
2) Установите следующие пакеты :
docker
containerd
kubelet
kubeadm
3) Отключите любые разделы подкачки, SE Linux, и настроить брандмауэр соответствующим образом.
3) Bootstrap Kubernetes на вашем Master (s) с вашим файлом конфигурации: kubeadm init --config /tmp/master.yml
.
4) Добавьте рабочие узлы в кластер с вашим конфигурационным файлом: kubeadm join --config /tmp/node.yml
.
5) Установите сетевой плагин .
6) Разверните оставшуюся часть программного обеспечения с помощью Настроить проект. Черт, вы даже можете управлять своими файлами конфигурации Kubeadm с помощью Kustomize . Я имею. Вы могли бы даже бросить манифест сетевого плагина здесь.
Это решение Kubernetes полностью облачно c, и все Kubernetes автоматизированы, а конфигурация - нет. Я бы автоматизировал шаги 1-5 с помощью чего-то вроде Ansible. Где вы бы объявили каждый шаг как задачу или роль в сборнике пьес. Он поддерживает тонну модулей . И есть роли с открытым исходным кодом на Galaxy , когда их нет.
Это оставляет вашу инфраструктуру. Сделать это облако агности c невозможно. Нет двух поставщиков с одинаковым API. Вот почему слои абстракции, такие как Kubernetes, существуют с самого начала. Чтобы решить эту проблему, попытайтесь использовать Cloud Aware . Используйте такой инструмент, как Terraform , чтобы управлять своей инфраструктурой за вас. Затем добавьте необходимые команды Terraform в Ansible playbook .
Bam, теперь вы можете развернуть всю свою инфраструктуру, конфигурацию и приложение с помощью одной команды. Из одиночного YAML-файла:
ansible-playbook -i inventory.ini site.yml
Ну, одиночный YAML-файл и куча других ролей и шаблоны , playbooks и Файлы конфигурации Terraform . ;)
РЕДАКТИРОВАТЬ: Вот несколько проектов с открытым исходным кодом, которые я написал, которые используют эти идеи и принципы дизайна. Вы должны быть в состоянии хотя бы поблескивать от них Ansible logi c. Первый предназначен для создания кластера с одним узлом на голом железном сервере. Последний предназначен для создания кластера из четырех узлов на Proxmox.
Оба полностью работают с все манифесты, которые я написал здесь . Что также должно предоставить вам множество примеров Kustomize и Ansible.