В первой лабораторной работе мы подготовим окружение для дальнейшей работы.
После выполнения данной лабораторной работы у вас появится свой kubernetes-кластер с развернутыми демонстрационными приложениями.
- Установить и настроить гипервизор
- Установить и настроить виртуальные машины с Linux
- Написать ansible playbook для:
- Установки k8s на нескольких машинах
- Создания кластера из нескольких машин с k8s.
Предупреждение! Команды для конфигурирования в консоли на виртуальных машинах руками не выполняем!
Рекомендуются следующие варианты:
- Хост ОС: Windows, Гостевая ОС: Linux
- virtualbox + ubuntu cloud
- https://docs.google.com/presentation/d/1AV6h4Ed4qef3bc9hKNRxJctbuHYLeiT6IfhClPM-5lU/edit?usp=sharing
- multipass + (virtualbox or hyper-v)
- https://multipass.run/docs/installing-on-windows#heading--check-prerequisites
wsl2 (?не работает: ip на все виртуалки общий?)
- https://cloudbytes.dev/snippets/how-to-install-multiple-instances-of-ubuntu-in-wsl2
- Хост ОС: Linux, Гостевая ОС: Linux
- multipass
- https://multipass.run/docs/installing-on-linux
- Хост ОС: macOS, Гостевая ОС: Linux
- multipass
- https://multipass.run/docs/installing-on-macos
- Идеально
- 3xVM: RAM: >4GB, CPU: >2
- Хорошо:
- 2xVM: RAM: >3GB, CPU: >2
- Допустимо:
- 1xVM: RAM: >4GB, CPU: >2
“Идеально”, “Хорошо”, “Допустимо” — не оценки, а степень наглядности всего происходящего в рамках курса.
- Создано достаточное количество виртуальных машин
- Виртуальные машины подключены к сети, пингуются
- Настроено ssh подключение по ключу к каждой из машин
Важно:
- Должно быть 2 адаптера сети:
- NAT
- Виртуальный адаптер хоста
- ip-адреса у машин должны отличаться
- должны быть разные хостнеймы
- Насторойка k8s:
- Собрать inventory
- Установить microk8s через snap
- Объединить в кластер
- Включить аддоны dashboard и dns
- Настроить несколько доменных имён на вашей рабочей машине, с которой будете открывать приложения
- https://1cloud.ru/help/dns/file-hosts
- Доменные имена:
- dashboard.k8s.cluster
- helloworld.k8s.cluster
- myapp.k8s.cluster
- Создать неймспейс
- Развернуть в неймспейсе приложение 1
- Создать деплоймент с https://docs.rafay.co/learn/quickstart/kubernetes/deployments/
- Создать сервис для деплоймента
- Развернуть в неймспейсе приложение 2
- Создать деплоймент с https://hub.docker.com/r/nginxdemos/hello/
- Создать сервис для деплоймента
- Сделать ingress
- для приложения 1, чтобы оно открывалось по http://helloworld.k8s.cluster
- для приложения 2, чтобы оно открывалось по http://myapp.k8s.cluster
- для дэшборда, чтобы он открывался по http://dashboard.k8s.cluster
Если нужно поэксперементировать руками, то эксперементы проводите в отдельном неймспейсе. Не забудьте его потом удалить.
- https://microk8s.io/docs
- https://docs.ansible.com/ansible/latest/getting_started/index.html
- https://docs.rafay.co/learn/quickstart/kubernetes/namespaces/
- https://docs.ansible.com/ansible/latest/collections/kubernetes/core/k8s_module.html
- https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
- https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
- https://kubernetes.io/docs/concepts/services-networking/service/
- https://kubernetes.io/docs/concepts/services-networking/ingress/
- https://stackoverflow.com/questions/71275411/nginx-ingress-gives-404-on-microk8s-with-working-service
- Всё работает
- Плейбук написан корректно
- Дэшборд microk8s открывается, в нём есть корректное инфо по кластеру
- Имеется рабочий плейбук для развертывания
- Все три приложения доступны извне по доменным именам