
Я хотел бы узнать, как настроить кластер Kubernetes на моем Ubuntu 20 DPS. Я имею в виду, что я установил Docker и Kubeadm. Я знаю, как сделать развертывание, обслуживание и немного Ingress. Я использовал уже настроенный кластер Kubernetes (AKS).
Мне нужно настроить мой dps для раскрытия некоторых веб-приложений (сайтов, API, CDN и т. д.). Какие шаги мне нужно выполнить для настройки Kubernetes? Как мне раскрыть определенный веб-сайт на определенном под-DNS (например, домен 3-го уровня: trd.mysite.com)
Нужно ли мне устанавливать какие-то дополнения, например nginx-controller, metallb и flannel? Я не понимаю эти сетевые штуки, мне также интересен курс/руководство, пожалуйста, помогите мне, спасибо!
EDIT: это мои yaml-файлы, сейчас я просто хочу разместить веб-приложение на основном домене (xxxx.com), затем я добавлю внутренний REST API и еще одно веб-приложение, которое будет использовать REST API и размещено на домене третьего уровня (yyy.xxxxx.com) http://www.mediafire.com/file/c7qwouqri441wek/Kube.zip/file
решение1
Хорошо, так вот. Для успешного запуска сервера вам понадобится:
1. докер
2.Если вы предпочитаете установку с помощьюкубеадм- вам нужны следующие пакеты Kubernetes. В этом ответе мы обсуждаем только способ kubeadm. Пожалуйста, обратитесь к внутренней документации для других инструментов.
В противном случае вы можете использовать, например,миникуб,кубеспрей,добрый. Мне нравится миникуб и добро.
- kind — это инструмент для запуска локальных кластеров Kubernetes с использованием «узлов» контейнера Docker. kind был в первую очередь разработан для тестирования самого Kubernetes, но может использоваться для локальной разработки или непрерывной интеграции.
- MiniKube — это обычно первая технология Kubernetes, которую находят, когда кто-то хочет начать (официальная документация Kubernetes предлагает руководство по развертыванию вашего первого кластера с помощью miniKube). Это очень простое решение для установки на ваш ноутбук, и оно предназначено для обучения и тестирования. При запуске оно развернет кластер с одним узлом (наименьший размер).
Подробнее обо всех инструментах можно прочитать здесь:
- MiniKube, Kubeadm, Kind, K3S — как начать работу с Kubernetes?
- Есть ли существенная разница между Minikube и Kind?
3. КНИ- для правильной организации сети внутри вашего кластера.
Существует дюжина плагинов CNI, вам следует выбрать что-то одно.
- Полный список здесь:Кластерная сеть
- Сравнительная таблица:https://kubedex.com/kubernetes-network-plugins/
Наиболее популярны фланель и бязь. Иногда (в зависимости от ваших потребностей) можно установитьКанал. Короче говоря - вы одновременно устанавливаете Calico дляСетевые политики+ Фланель как обычный CNI для нетворкинга.
Вот важный совет! Чтобы правильно установить CNI - вы должны выбрать его заранее, до создания кластера. Это потому, что вам нужно инициализировать кластер с соответствующим --pod-network-cidr=
флагом.
kubeadm init --pod-network-cidr=10.244.0.0/16
для фланелиkubeadm init --pod-network-cidr=192.168.0.0/16
для Калико
Объект API, который управляет внешним доступом к службам в кластере, обычно HTTP.
Ingress может обеспечивать балансировку нагрузки, терминацию SSL и виртуальный хостинг на основе имени.
Для работы ресурса Ingress кластер должен иметьконтроллер входабег.
Полный список различных контроллеров входа:Контроллеры входящего потока. Матрица сравненияздесь
самые популярные из них:Контроллер входящего трафика Nginx, Kubernetes ingress controller(OOB, также основан на nginx. Но это разные), Traefik
Шаги по созданию кластера:
- Вы можете использовать следующую замечательную статьюНастройка Kubernetes с одним узлом. Начните с него - он правильно покажет вам все шаги.
- Вы можете использовать мой ответ:Сервер Kubernetes API не запускается ни на одном кластере kubeadm. Этот ответ предоставляет вам подробную пошаговую инструкцию по развертыванию кластера с помощью kubeadm. Одно замечание.
- официальная документация:Создание кластера с помощью kubeadm
Вам следует разблокировать мастер, чтобы вы могли запускать поды на нем. Без этого вы не сможете запускать поды на вашем мастере.
kubectl taint nodes --all node-role.kubernetes.io/master-
решение2
Прежде чем читать все это, изучите kubespray, который использует ansbile для создания кластеров. Однако, если вы хотите узнать, как работает Kubernetes «под капотом», прочтите остальную часть ответа.
Первым шагом к настройке кластера Kubernetes является изучение компонентов и принципов их работы.
Простая установка kubeadm не приведет к развертыванию кластера. Перед развертыванием файлов YAML вам следует установить все необходимые компоненты.
Вот ссылка на страницу GitHub, она использует kubeadm для развертывания всего кластера Kubernetes с 3 главными узлами и любым количеством рабочих узлов.
Примечание: она использует старые версии, но является хорошим справочником для изучения компонентов Kubernetes. Обязательно изучите его скрипты, касающиеся создания YAML, на предмет важных компонентов кластера, а также ознакомьтесь со спецификой компонентов кластера и с тем, что они делают.
https://github.com/cookeem/kubeadm-ha/blob/master/v1.11/README.md
Если вы хотите предоставить доступ к веб-приложениям в своем кластере на домене, вам необходимо установить Ingress Controller Manager, который позволяет создавать Ingress-ресурсы.
Вот пример Ingress YAML из документации Kubernetes.
https://kubernetes.io/docs/concepts/services-networking/ingress/
Если вы хотите использовать https с действительными сертификатами, вы можете использовать Kubernetes Secrets или настроить Cert Manager в своем кластере для автоматического получения и обновления Let's Encrypt.
Оба эти варианта хорошо документированы, и все, что вам нужно сделать, это выполнить поиск в Google, чтобы узнать, как заставить ваш входящий ресурс использовать эти сертификаты.
Убедитесь, что ваш домен указывает на публичный IP-адрес одного узла кластера (рабочего или главного).
Metallb используется с локальными кластерами для предоставления типа службы балансировки нагрузки, встроенного в облачные провайдеры.
flannel — это сетевой плагин, обеспечивающий сетевое взаимодействие для вашего кластера.
Если вы хотите, чтобы ваши модули могли взаимодействовать друг с другом, вам нужен сетевой плагин cni, такой как flannel, calico или любой другой поддерживаемый плагин.
Подумайте о flannel как о сетевом коммутаторе вашего кластера.