docker создан, я так понимаю два варианта : откат до 1.23 и использовать containerD?
Он ? Что за он ? Отвечать развернуто на вопрос умеешь ?
У тебя нет вариантов, с 1.18 был только containerd\cri-o и они по сей день остались. Докеркластер мертоврожденное нечто для любителей однполого БДСМ
Переходи на контейнерди, будь хорошим мальчиком
да куберспреем развернут
не хилые познания))
ну ты все еще можешь пострадать , правда страдание будут долгими, затратными и не очень понятно зачем :)
Ты не представляешь сколько моей крови было пролито на кластерах кубспреееров переделывая их бесшовно на кубадм
с определенного момента , я понял, что я получил все удовольствия от этого процесса и предпочитаю развернуть с нуля.
сочувствую, я пока только с мониторингом попал , ну видать придется переходить на пацанские решения))
ну пора мигрировать на containerd. У тебе в инвентаре в переменнаой etcd_deployment_type что указано
Потому что на версиях 1.18-20 обнови серты кубспреем - ты кайфанешь
какие именно сертификаты ? Можно писать более подробно ?
Придется, иначе версий куба выше ты не увидишь как собственных ушей)
Да в общем то все, что отлично самообновляются по kubeadm upgrade apply \ kubeadm certs renew
аргументы будут или это твои фантазии ))
https://postimg.cc/rRTggc62
Вот пытаюсь понять - ты троллишь? Если да - то прям с экрана капает :)
https://i.postimg.cc/WzFKNbXz/1.jpg
ну понятно. очередной спициалист.
Пока с твоей стороны только провокации и кудах-кудах. Какие тебе агрументы надо? Что докер депра?
норм. Меняем рантайм Устанавливаем в группе k8s_cluster переменные: container_manager: containerd download_container: False и запускаем плейбук upgrade-cluster.yml В процессе обновление на узле будет удален докер и установлен containerd, так как роль, скачивающая образы при обновлении кластера запускается до обновления рантайма, кубспрей будет падать с ошибкой, если не запретить предварительно скачивать образы контейнеров Баги и проблемы. Если кубспрей упал на мастер узлах из-за того, что не запустился apiserver или controller manager - надо зайти на узел и перезапустить kubelet. systemctl restart kubelet Как показала практика - лучше еще раз вручную перезапустить кубелет руками, после смены контейнер рантайма.
Я просил у тебя хоть каких нибудь подробностей, подтверждающих твои расплывчатые высказывания. но видимо ты сам не понимаешь в том, что пишешь
Зону подробностей определи. Ты о CRI или Кубспрее?
автоматика уровень бог
ну ты вручную все делаешь. тебе не понять
ну вот. конкретно это сообщение. расскажи подробнее, в чем там кайф был. и зачем для обновления сертификатов переделывать сетап кластера с кубспрея. А на что собственно переделывать то ? ;)
Конкретно отвечаю, у меня падали роли и классический вариант обновить протухшие серты на апи и etcd превратилось в квест дебага кубспрея и его логики -тк тогда под капотом кубадмом и не пахло. Как итог нафигачли говна и палок опенссл-ом что бы поднялся и поработал пока поднимаем кластер на кубадме что бы больше таких побочек не иметь
потому, если бы ты смотрел, что там под капотом у кубспрея у тебя не было бы таких вопросов. Там обмазанное говно на openssl и оно осталось и сейчас из за совместимости , но проблема в том, что при переходи на обновление сертов kubeadm неожиданно всплалы много проблем.
Просто вот прям спасибо. Человеческое
да что вы говорите ? ```#!/bin/bash echo "## Expiration before renewal ##" {{ bin_dir }}/kubeadm certs check-expiration echo "## Renewing certificates managed by kubeadm ##" {{ bin_dir }}/kubeadm certs renew all echo "## Restarting control plane pods managed by kubeadm ##" {% if container_manager == "docker" %} {{ docker_bin_dir }}/docker ps -af 'name=k8s_POD_(kube-apiserver|kube-controller-manager|kube-scheduler|etcd)-*' -q | /usr/bin/xargs {{ docker_bin_dir }}/docker rm -f {% else %} {{ bin_dir }}/crictl pods --namespace kube-system --name 'kube-scheduler-*|kube-controller-manager-*|kube-apiserver-*|etcd-*' -q | /usr/bin/xargs {{ bin_dir }}/crictl rmp -f {% endif %} echo "## Updating /root/.kube/config ##" cp {{ kube_config_dir }}/admin.conf /root/.kube/config echo "## Waiting for apiserver to be up again ##" until printf "" 2>>/dev/null >>/dev/tcp/127.0.0.1/{{ kube_apiserver_port | default(6443) }}; do sleep 1; done echo "## Expiration after renewal ##" {{ bin_dir }}/kubeadm certs check-expiration```
когда под капотом кубспрея не пахло кубадмом он сертификаты генерил на 100 лет. как они у тебя смогли протухнуть ?
по умолчанию на год
вот тебе да же тут мольбы были :) Да можно перенастроить, но кто же его там переделывает :D https://t.me/kubernetes_ru/262569
Ты меня о таких вещах не спрашивай. Мне призвали поднять мертвый кластер - че там, да как до меня было я хз. Пришел, увидел, пошел вадидол в десны вмазываать
а можешь словами писать ? ;) А то ты сначала говно на опенссл, а потом показываешь какой-то странный скриптик в котором кубадмом сертификаты обновляют
это говно скрипт из говно кубспрея :)
Ты бы лучше ссылки на репозиторий давал
Уже лень искать. Я копипастнул из телеги :D
у вас память как у золотой рыбки. еще раз повторю свой вопрос. Почему ты сначала пишишешь про говно на опенссл, а потом постишь скрипт, в котором сертификаты обновляются через кубеадм ? В чем логика ???
Память золотой рыбки у вас https://t.me/kubernetes_ru/765907
ну справедливости ради конкретики и правда нет. Ну то есть кубеспрей это ансилбл над kubeadm можно допустить что там какие-то проблемы и он неправильно запускает как-то kubeadm - тогда же можно просто написать что было не так. Прост выглядит так как будто у тебя что-то сломалось, а ты прост не разобрался, и мы не знаем был ли это баг в плейбуках или проблемы с окружением и т.д. Но может ты и разобрался и просто забыл и вспоминать не хочется
https://github.com/kubernetes-sigs/kubespray/commit/f8fed0f3081954d469808f362ca961adfec9beab на 36500 дней.
Какой молодец, взял и сломал все сесурити
и что ? еще раз повторю свой вопрос. Почему ты сначала пишишешь про говно на опенссл, а потом постишь скрипт, в котором сертификаты обновляются через кубеадм ?
И то, и то верно. 1. Я не стал сидеть и дебажить ансибл - прод стоит. От меня ждут решений и быстро. 2. Потом уже в ретро ковырялся, но так и не смог понять каким образом там падала роль, либо таска. Даже при таргетном запуске со всеми вербоз флагами. О5 же, это было несколько лет назад и возможно в тот момент мне не хватило опыта. Сейчас могло бы быть иначе, но история не терпит сослагательных наклонений. Так же просто ради ремарки. Если ты собираешь прод для своей команды, то и автоматизация там должна быть максимально прозрачной для всех ее участников. Сажать за книжки людей и ждать когда они въедут в эту лапшу - изуверство над своими подчиненными\коллегами
а давай ты тоже аргументы приведешь. Чем сесурити со сроком действия сертификатов в 3650 дней лучше сертификатов на 36500 дней ? В обоих случаях если ты пролюбил приватный ключ от корневого сертификата - придется все с нуля перевыпускать. Да и если ты пролюбил клиентский сертификат у которого еще хотя бы 3 дня жизни - все равно придется новый корневной генерить и все перевыпускать. нет в кубернетес механизма отзыва сертификатов.
справедливости ради, разный софт бывает и много где я видел что миграция конфигурации не поддерживается условно нельзя поменять podCidr в кубе ну то есть я бы от ансибла не ожидал корректной миграции при такой масштабной смене конфигурации (переход от сертов и ключей который ансибл генерил к тем что генерятся kubeadm). Ну по крайней мере я бы чательно проверял бы эту возможность, но учитывая как ансибл устроен, я могу сказать что подводных камней для такого кейса может быть масса. Тут нужна более умная тула чем система управления конфигурациями
потому что все это в kubespray и это все не надо :)
это относительно недавние изменения :) многие так еще и не обновились с тех времен, хотя уже кластер сносить надо
ну они старались, правда - https://github.com/kubernetes-sigs/kubespray/issues/7104
да я уже понял, что у вас квалификации не хватило. поэтому вы делаете все вручную.
я очень рад за вас, что вы сделали выводы о моей квалификации и о том, что я делаю.
буквочки CA видите в названии ишью ? Вам подсказать, что они означают ?
гиблое дело на мой взгляд. Я бы прост запретил это делать и падал бы плейбук и написать отдельнную инструкцию как вручную мигрировать или отдельный плейбук для миграции
Давай расскажи, а мы тут все послушаем.
ну то есть вы не знаете ? ;)
Тут не кто не знает
сходите погуглите.
Буду знать, что это кальций https://i.postimg.cc/2yHhnzby/1.jpg
ну в ansble надо знать ansible, а с тулами надо знать go. Единственное отличие что в случае ansible надо его знать всегда, и нельзя его использовать как юзер, а вот с тулами можно ограничиться только использованием и смириться с багами и проблемами
но почему ты тогда утверждаешь, что кубспрей говно ?? то, что ты не смог работать с инструментом, еще не говорит о том, что он плохой. Возможно в твоем конкретном случае тебе было проще наколенке побыстрому набросать. чтобы оно хоть как-то завелось. а потом пофик, что будет )
> но почему ты тогда утверждаешь, что кубспрей говно ?? что бывает, когда админам дать писать автоматизацию - получается кубеспрей
Знать-не-знать вопрос открытый. Знать все хорошо невозможно, где то будут огрехи
А чем хорошо BlackBox с поломкой которую сложно диагностировать?
тем что там сертификаты на 100 лет
Потому что в девопс вошли админы, которых надо гнать поганой палкой
я бы не сказал, что это админы.
Мне не надо, у меня ротация 8 часов по токенам. А 100 лет на серт - это девкластер
А кто ? Эникеи ?
Внедренцы-автоматизаторы бизнесмены?
ну я не знаю кто там по середине между эникеями и админами может быть. Хотя наверно есть админы которые просто не хотят этого говна и если их заставляют то беды. Но я как админ если бы этого не хотел, просто так бы и сказал.
Кстати ты еще немного и не туда с сертами , в целом это всем показало все о тебе и твоей квалификации :) Ты там погугли про кальций и какого вида он есть
Да же подсказка была :D но кто я такой, бездарь просто
это сценарий на ансибле - блекбокс ???? хотя для вас вполне может быть
Когда он один - да. Когда их лапша - нужно время
ну то есть на самом деле не черный ящик.
Конечно, красный !
Для взявшего инструмент без времени в его изучение да. Без опыта подъема кластера руками - тоже да. А таких повсеместно. Для меня нет, но мне эта автоматизация как собаке пятая нога
Ансибл не коробочное решение, лично у меня он падал. Раз. Два - пока ты инвентори напишешь, кукухой поедешь
тяжело жить с чугунной головой в ойти.
Не без этого, он хорош местячково. Но отдавать ему на откуп такие куски - "Безумству храбрых - гробы со скидкой"
Тебе ли не знать :)
вы жалуетесь на то, что вам сложно. надо изучать какие-то инструменты. а хочется нажать кнопку и получить зашибись.
Любое говно написанное на комбо из jinja+yaml (или go-templates+yaml, привет хельму) худшее по сравнению с любым говном написанным на языке программирования общего назначения.
Не надо сравнивать теплое с мягким
давно у нас пишут на jinja?
го-темплейты не надо трогать. Вполне себе годный шаблонизатор. Во славу Арго и отца его хельма и святого hcl - deploy/
Го темлейт немного убог если нужна сложная логика
хм. Если нужна сложная логика, ты выбрал не те инструменты либо архитектуру, кмк.
Го темлпейт просто ограничен для сложного рендеринга, jinja чуть лучше. Я именно про разработку не про хелмы и прочее гавно
его можно влёт расширить функциями. И, кмк, это более правильно, чем всё непотребство пихать в сам шаблонизатор. ниньзя уже реально начинает походить на отдельный язык.
Это стандартный ответ)) нет макросов давай используем функцию)
Гляди, тебе надо описать какую-то нетривиальную логику для ансиболь-плейбука, но описываешь ты её ямлом. А ямл генеришь текстовым шаблонизатором. Ты выбрал не те инструменты, не ту архитектуру или просто ансибл был написан кем-то далёким от разработки?
Jinja шаблонизатор рендерингом занимается ядро какбы
Это какими же? которые {{- define "myFunc" }} будь-что-будет: "нахер валидацию" {{- end }}
https://pkg.go.dev/html/template#Template.Funcs
а макрос - не функция искаропки по объединению куска кода и вставлению в нужное место?
На ansbile все вычесления зачем-то делают на jinja. Пример: https://t.me/pro_ansible/293181 А вот на epp нет смысла писать, можно сделать все вычесления в puppet DSL а потом передать в шаблон готовые значения. Смысла делать это внутри epp просто нет, поскольку там внутри такой-же декларативный puppet DSL
Так это если ты контролируешь кодовую базу исходных пакетов. А если ты пользователь хельма и не планируешь менять сорцы, то тебе этот функционал недоступен.
Так я не про папет
а где ещё epp есть? epp же - Embedded Puppet
В одной компании у нас была разработка где мы использовали epp без папета.
ну, началось про анисбл, где точно так же нет особых вариантов расширять функционал шаблонизатора (хотя согласен, jinja немного пофункциональнее готемплейтов будет)
В ансибле есть плагины и обычно если чего то не хватает пишут плагин
но как и зачем? там же "завязки" на папет
Неее именно epp , erb я еще помню и мы его в папете юзали давным давно
интересно, забавно
о ето регистры в процессоре
В принципе заюзать можно но только гемор еще тот а как шаблонизатор мне больше всех нравилсо
я в ансибл не очень, но разве там нельзя написать модуль на python который на вход принимает одни значения, а на выход выдает другие? Если такое есть, то можно же избегать все эти jinja вставки для того чтобы что-то вычеслять Хотя там с top-level переменными еще беда и валидацией переменных =(
нет, функция имеет вход и выход в helm в define один вход и выход только текст Чтобы делать из этого подобие функции надо подпереть это костылями например на вход передавать массив или хеш а на выход отдавать json/yaml
а, типа нельзя {{- define "myFunc" }} ... {{- end }} {{ template "myFunc" . }} ?
ну тобишь даже макросы в ниньзе - и те кривые))))
ну чем это похоже на функцию? Может ли это "функция" вернуть структуру данных? Может ли вернуть boolean?
{{- define "myFunc" -}} {{- $result := dict "key" "value" "another_key" "another_value" -}} {{- $result -}} {{- end }} да сраный телеграм
ну и как ты этот result передашь в переменную?
Обсуждают сегодня