Openstack over k8s
Комплексное задание на знание K8s/Helm/OpenStack на 8 рабочих часов (1 день)
* Install openstack(ceph as storage) on top of K8s(All-in-one-installation) using openstack-helm project * change Keystone token expiration time afterwards to 24 hours * deploy 3 VMs connected to each other using heat
TL; DR
- Мне понадобилось примерно 13 рабочих часов что бы закончить задние
Хорошее:
- Задание можно сделать за 8 часов (и даже быстрее)
Плохое
- Практически невозможно сделать на ноутбуке без Linux.
- Примерно половину времени потрачено на попытку "взлететь" напрямую на Mac OS и использовать в качестве кластера K8s уже имевшийся minikube
Это был явный фейл - как минимум чарты ceph не совместимы с миникубом никак (https://github.com/ceph/ceph-helm/issues/73), до остальных я не дошел.
Деплоить без скриптовой обвязки явно заняло бы больше чем 1 день (на самом деле если не срезать углы пользуясь скриптами то минимум неделя)
- Когда я понял что задеплоить на миникуб за отведеннгое время не успеваю то решил настроить ВМку с убунтой и дальше работать с ней
Второй явный фейл (но не мой =) ) - то тчо задание требует минимум 8 гигов свободной памяти, а на самом деле даже на ВМке с 16-ю гигами и 8 ядрами все шевелилось очень медленно. (Человек с ноутом с 8 гигами не сделает это задание из-за недостатка памяти)
Как следствие - регулярные падения скриптов из-за таймаутов,
Отмечу так же что с не слишеом быстрым интернетом я наступил на проблему, что Pull образов был медленным и скрипты не дожидались и падали по таймауту. Хорошей идеей было бы скачать образы заранее, но об этом я подумал уже в середине процесса и тратить время на анализ какие образы нужны, не стал,
Решение
Возможно какие-то моменты я забыл сохранить так как вывода на консоль было достаточно много.
Создание ВМки с Убунтой
https://docs.openstack.org/openstack-helm/latest/install/developer/requirements-and-host-config.html
System Requirements¶ The recommended minimum system requirements for a full deployment are: 16GB of RAM 8 Cores 48GB HDD
На этом этапе изначально я совершил 2 ошибки
- Создал слишком маленькую (мало CPU Cores) машину
- Не проверил пересечения сетей
Warning By default the Calico CNI will use 192.168.0.0/16 and Kubernetes services will use 10.96.0.0/16 as the CIDR for services. Check that these CIDRs are not in use on the development node before proceeding, or adjust as required.
Кстати, похоже что тут ошибка в маске в документации - реально используется маска /12
Немного отредактированный для удобства чтения вывод ps
root 5717 4.0 1.7 448168 292172 ? Ssl 19:27 0:51 | \_ kube-apiserver --feature-gates=MountPropagation=true,PodShareProcessNamespace=true --service-node-port-range=1024-65535 --advertise-address=172.17.0.1 --service-cluster-ip-range=10.96.0.0/12
Подготовка
Если следовать инструкции и не пробовать ничего менять то никаких проблем на 18-й убунте не возникло.
Установка OpenStack
Если следовать инструкции то никаких проблем не возникает, за исключением таймаутов.
Насколько я смог выяснить - все скрипты делают корректную зачистку и потому перезапуск достаточно безопасен.
К сожалению я не сохранил список скриптов которые приходилось перезапускать