Pull to refresh

Comments 28

UFO just landed and posted this here

Его делают люди, которые похоже не умеют в линуксы. Вот ставим например официальный deb пакет c kubectl. А там внезапно только один бинарник kubectl! man страниц нет, bash-completion нет. Они там с Луны свалились?

Не думаю, что пакеты для дистров собирают разработчики кубера...

Пакет с их вебсайта https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#install-using-native-package-management

И при этом ниже на веб сайте пишут, что нужно сплясать вприсядку чтобы bash-completion получить. Вот видимо прямо те же люди, которые пакет собирают.

Очень сложно разобраться, почему Pod не может заскедулиться на ноду. В эвентах скедулер пишет про то, что на пятнадцати нодах не хватает CPU, хотя он бы на эти ноды и так не попал из-за nodeSelector.

Уважаемые, можете, пожалуйста, объяснить – как вообще инженерное сообщество могло принять в качестве стандарта подобный инструмент, обладающим таким количеством косяков и нелогичных моментов?

Регулярно вижу статьи о том, как сложно понять причины падения кубера, причины падения подов, причины неработоспособности скейлинга, причины чего бы то ни было.

Каковы прогнозы - оно будет когда-нибудь просто работать? Это наше будущее или надо ждать перерождения? 8 лет вроде уже проекту.

А вы думаете весь софт - это идеально написанный и вылизанный код? Сейчас "Эра MVP", всё что изобретается - лишь бы работало хоть как-нибудь. Добавляем сюда модный CICD, когда вчерашний админы вдруг начинают свою работу автоматизировать, и получаем тонну говнософта, который автоматизирует другой говнософт. Примерно тоже самое происзошло и с frontend-ом и его сборщиками. Вот руки у людей добрались и до кубера.

когда вчерашний админы вдруг начинают свою работу автоматизировать

Почему вдруг? Считаете, что доставка приложения до окружений должна обязательно быть ручной?

"Вдруг" - потому что раньше обходились bash-скриптами, а потом резко (вдруг) все начали создавать целую кучу инструментов. Так и появился зоопарк для зоопарка систем и программ. Когда всё это видишь, то понимаешь, что всё это создавалось в спешке, очень разными людьми, для очень разных задач, и почему-то это всё как-то работает вместе.

Раньше и релизили раз в полгода. А теперь хочется деливерить несколько раз в день.

Как раз сейчас есть один кубер, как индустриальный стандарт. А раньше каждый админ свой велосипед городил.

По моему мнению отказ от bash-программирования - это лучшее, что случилось с индустрией.

То ли дело тонны writeonly bash-скриптов.

Come on, кубер сделали бесплатным для того, что бы вы помучались с ним, и пришли в гугл клауд, где "все тот же кубер, только не глючит"

Ну предложите полновесную альтернативу кубу?)

Понимание как траблшутить куба придет с опытом. Сама по себе система большая и сложная, много нюансов, тонна доки, высокий порог вхождения. Как результат, не всегда глубокие и полноценные компетенции у тех, кто деплоит приложения не соблюдая хорошие практики, например, в ограничении ресурсов или что-то ломает не правильной конфигурацией; аналогично у тех, кто пытается это потом чинить могут быть недостаточный опыт и навыки в администрировании куба и с разбегу может ничего не получаться.

Кажется это нормально и куб в прод надо выбирать командам с четким пониманием зачем он и для чего, точно зная, что он им нужен и, разумеется, обладая компетенциями в его обслуживании или полагаясь на хорошие менедж решения и внешние команды, оказывающие помощь в администрировании куба.

Зависит от понимания "полновесной". Я признаюсь, у меня в основном опыт работы с .NET поверх on-premise серверов или виртуальных машин в облаках. Я не знаком с ситуацией когда есть простаивающие мощности и необходимо жонглировать контейнерами между серверами. Обычно наоборот, требуется выжать максимум из имеющихся серверов, для чего стараешься точно знать:

  • Сколько экземпляров сервисов обслуживает запросы пользователей, чтобы планировать допустимую нагрузку для системы целиком, ведь там позади могут быть полуживые внутренние системы плевавшие на твой автоскейлинг.

  • Характер потребления ресурсов сервисами, чтобы знать какие можно разместить на каких группах серверов рядом, а какие необходимо держать отдельно, ведь дело не в реакции на показатели, а понимании как себя ведёт именно этот кусок системы.

Для настройки серверов и раскатки сервисов использовались Configuration-as-a-Code, PS-скрипты и PS DSC, Bash скрипты, различные джобберы типа Jenkins/TeamCity/TFS ради визуализации. Хотя справедливости ради пользовал Octopus Deploy также, он тот ещё комбайн, но можно и без него. Главное, ты точно знаешь чем будет занят конкретный сервер или группа серверов, а уж инструменты были плюс-минус одинаковые судя по рассказам.

Если говорить про эффективное распределение ресурсов по дата-центру, с перемешиванием десятков-сотен экземпляров сервисов на десятках-сотнях серверов:

Разве встроенные AWS ECS и Azure App Service не дают необходимого функционала раскатки контейнеров? Они же созданы ради этого, имеют встроенный скейлинг, управление количеством экземпляров.

Вы абсолютно правы, большинство людей не должны деплоить в кубер. Есть милион более простых инструментов. С гораздо меньшим количеством функций. Но для 99% веб серверов или backed систем работающих по event bus это отличные решения.

Проблема кубера его пихают иногда куда не надо.

Например когда я говорю про без альтернативность кубера - я имею ввиду что мне нужно запустить 100 веб сервисом с 3мя разными подходами к autoscale.

А ещё я хочу запускать spark и flink и ml в одной платформе. Что бы тот же autoscale переимпользовать, но с нюансами.

А ещё я хочу иметь общий инструмент для security и network policy apply для все своих сервисом, compute engine, kafka и ml framework. Да да у нас отдельная команда secops, которая пишет opa security policy для 50 других команд.

А ещё я хочу общий инструмент что бы все выше перечисленые Тулы можно было запускать на spot. Или легко добавлять управление ebs/ssd в некоторые сервисом, но не во все.

А ещё я лично, люблю экзотические юзкейзы автоматизировать. Например у на 70 кластеров кафки в каждом не меньше 60 нод. И полностью автоматическая система rebalance/backup/ scale/alert/disk extension.

А ещё я забыл про service discovery. Есть милион альтернатив, но я хочу что бы оно с моими сетями интегрировалось, а не везде consul/zookeeper пихать. Что не так уж просто.

Вот и подумайте сколько всего мы раньше писали и костыли в том числе на terraform и chef/puppet/ansible/etc. И как потом сделать на этих технологиях сранный rolling upgrade сложной системе, что бы не больше 5 инстансов было в перезапуска.

А я не говорю про drain and shutdown, если hardvare/vm degradate случился.

Но и это не все, главное теперь есть чёткий протокол/api между developer которые пишут код и реализовуют gracefull shutdown, restart, exactly once guarantee, ha в своём коде и ops которые управляют сетями, дисками, load balancers, security permissions и прочее.

И да я не девопс, я разработчик и меня не раз бесило что я не могу нормально backup автоматический сделать или не знаю какой timeout на sigkill.

Рискну предположить, что примерно так же, как Chrome захватил рынок браузеров: огромные ресурсы на первоначальное продвижение. Клиенты хотят модный кубер, хотя они "винчестер от парабеллума" отличить не могут.

С другой стороны, на этом прям целая отрась выросла: где раньше нужна была пара админов, теперь целый отдел девопсов или managed решение от <выберите любого обачного провайдера>, все довольны :)

Я деплоил и маленькие, и большие проекты при помощи и Capistrano, и голого Ansible, и Ansible+Docker, и docker-compose, и Swarm был, и скрипты самописные были, и скриптовый клей для всего сразу был.

Kubernetes сложно, сразу пирог из абстракций, много движущихся частей, но, несмотря на всю сложность, это лучшее из всего что я использовал для развертывания бизнес-приложений. Haters gonna hate, но даже если убрать весь хайп, данная система решает проблему развертываний в разные окружения + Day-2 operations элегантнее всего. Да, такая махина и элегантнее всего. Всё так уныло в мире автоматического развертывания. Альтернативой на проект из ~10 сервисов может быть большой отдел "админов", руками накликивающие в UI условных Tomcat/JBoss. Или же обслуживающих ещё более монструозную какую-нибудь закрытую "платформу развертывания".

С Kubernetes будет достаточно пары компетентных инженеров. Даже для суровых энтерпрайзных Java-приложений. Спасибо Red Hat.

Высокий порог входа k8s, отладка операторов, отладка сети внутри, отладка крэша подов. Ох, это должно было быть приключение на 20 минут, а не на 2 недели...

Сколько лет индустрии, столько лет льются влажные мечты о деплое одной кнопкой и чтобы всё само работало. Не бывает так, Beanstalk был близко, но всё равно нет. И это managed решение при чём.

Инструмент который создаёт больше проблем чем решает должен или эволюционировать, или умереть

А как померить, что проблем больше, чем пользы? Растущее сообщество и количество внедрений разве не является доказательством большей пользы?

Не сомненно, только он решает милионы проблем. А создаёт только сложность

2 дня было убито на поиски причины. Один под который имел подключение к rabbitmq завис в состоянии terminating. Удалён был по команде "k delete pod -force". Под благополучно удалился. Через 2 дня мы заметили что из реббита куда-то начали пропадать сообщения. В реббите в списке подключенных клиентов был один ip адрес который не принадлежал ни одному поду, и вообще при попытках выяснить что это за айпишник кубернетис не показывал ни один ресурс который бы его использовал. Long story short - оказывается кубернетис сам под как ресурс прибил, а вот контейнер в сломаном состоянии остался висеть и кушать сообщения из канала(реббит был в самом кластере), но при этом к базе которая была ресурсом облака он соеденине потерял и не мог эти сообщения нормально запроцессить. Выяснить что за фигня происходит удалось только тогда когда я додумался зайти в шелл на всех нодах и выполнить docker ps где я и увидел этот контейнер.

Звучит, как проблема докера (который,ура, больше не нужен), а не куба.

Но ведь то что контейнер не удаляется по флагу -форс написано в доках. И там же просят использовать форс с осторожностью...

CrashLoopBackOff? А NullPointerException и вообще любые сообщения об ошибках людей тоже раздражают?

Sign up to leave a comment.