Dmitry
На выходных щупал кубера. Задеплоил кластер из 2х нод, все поднято и вроде даже работает. Теперь вопрос такой, какой самый простой способ аутентифицировать мой локальный kubectl?
Dmitry
Поднимал через Ansible/Kubespray
Denis
но скорее всего у тебя был kubeconfig_localhost: = false и папка artifacts не создалась. можешь взять сертификаты с мастеров (/etc/kubernetes/ssl) или если была авторизация по токену: авторизоваться по любому из токенов в namespace: kube-system (kubectl get secrets -n kube-system)
Dmitry
Читаю, походу юзеры создаются в kubespray/credentials
Dmitry
You must be logged in to the server (Unauthorized) Как авторизоваться с тем, что у меня в контексте?
Dmitry
Я походу не догоняю какой-то базовый момент
Ivan
Кто-то сталкивался с сетевыми задержками в подах на AWS?
Dmitry
@arslanbekov Какие стандартные способы аутентификации? Только Oauth?
Denis
@arslanbekov Какие стандартные способы аутентификации? Только Oauth?
нет, их много, по умолчанию kubespray прокидывает две политики авторизации (node и RBAC) в credentials у вас лежит пароль для юзера kube
Denis
https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/
Dmitry
Да, спасибо, прочел в линке который дали, потом нашел пароль. Поставил юзера в контексте, но как инициализировать авторизацию?
Dmitry
в kubectl config вижу свой конекст, он выбран.
Dmitry
а.. ща сменю юзера назначенного на контекст
Anonymous
https://www.mirantis.com/blog/a-comparison-of-different-containers-as-a-service-products/ вот рассылка пришла от мирантиса. Сравнение для холиваров чей кубер лучше
Dmitry
@arslanbekov kubectl get nodes все еще You must be logged in to the server (Unauthorized). Как мне сказать "Попробуй залогиниться с тем что в контексте?
Dmitry
Или это как раз прокси делает? А клиент тупо без аутентификации. Надо проверить
Dmitry
Видимо и гуй так же будет авторизоваться.
Alex Sharov
Господа, а нормально ли версионировать helm чарты версией приложения в случае если чарты это кусок мавен проекта?
Igor
@kvendingoldo я бы сказал, что ни в каких случаях не нормально. если меняешь только чарт, что, бампать версию приложения?
Dmitry
Чего-то явно не хватает... Unauthorized... Куда копать?
Dmitry
...Пойду еще раз копну в сторону включенных способов аутентификации.
Dmitry
Заработало. node и token auth были выключены, прлюс удостоверился что и там и там одинаковые пароли.
Anton
Заработало. node и token auth были выключены, прлюс удостоверился что и там и там одинаковые пароли.
kubespray на мастерах после себя оставляет /etc/kubernetes/admin.conf, который все нужное содержит. кладешь себе в ~/.kube/<clustername>.conf и перед использованием kubectl\helm: export KUBECONFIG=~/.kube/<clustername>.conf
Dmitry
Норм. Спасибо. Из доков это не ясно как-то.
Dmitry
Гуй тоже заработал. Хорошо смотрится.
Dmitry
Но теперь хочу задерлоить распределённый сервис. Кафку, зукипер. Наверняка уже есть howto с рекомендациями
Dmitry
Тут, я так понимаю будет 2 сервиса, 2 пода со скейлом 3x?
Dmitry
Хочу логически сгруппировать, на сколько вообще это важно? Что на практике даёт группировка?
Dmitry
Ограничение доступа на уровне ресурсов, и все?
Anton
что за группировка?
Anton
готовые helm charts можно найти тут: https://github.com/kubernetes/charts
Anton
Но теперь хочу задерлоить распределённый сервис. Кафку, зукипер. Наверняка уже есть howto с рекомендациями
я слоупок, но скажу всетаки, такие вещи, как кафка например, у которых реплики не равноправны, рекомендуется деплоить в statefullset. elasticsearch например тоже, на нодах хранения может легко быть разный набор шардов. тоесть если у приложения есть какое то состояние в рабочем режиме, статус (не знаю какие еще подобрать слова), которое отличается репилки - нужно использовать statefullset
Anton
а если надо создать еще один такой admin но с другими правами? что копать надо?
его можно нагенерить вручную. там есть блок clusters & users & contexts, где сводятся user + clister
Anton
генеришь нового user, описываешь с ним context, профит, нет?
Anton
https://kubernetes.io/docs/admin/authentication/ тут подробнее, сам не пробовал юзеров создавать
Anton
https://github.com/kubernetes/kubernetes/pull/52569
Anton
теперь в 1.9 больше не будет боли с iptables forward default policy =)
Eugene
Кто то юзал contiv?
Anton
ваше дело
Anton
прост многим не нравится иметь N инструментов деплоя. N инструментов для оркестрации и тд
Sergey
Просто как оно будет работать в проде? Где данные хранить?
Anton
а где вы храните данные обычно?
Sergey
Обычно я их не храню
Sergey
Их хранит кафка/зукипер/постгрес/редис/etc
Anton
нет же, ты их хранишь на той ноде, где запущен сервис
Anton
если при запуске сервиса ты об этом не думаешь, это еще не значит что ты ничего не хранишь
Sergey
Это значит что мне все равно если этих данных не станет
Sergey
Мой сервис их не использует
Anton
я чет потерял нить. ты запускаешь постгрес и тебе всеравно что будет с данными на диске, потому что сервис (постгрес) их не использует?
Sergey
Я не запускаю постгрес в кубере
Sergey
Для этого есть rds
Anton
хорошо. rds хранит для тебя данные. чем по сути это отличается от хранения данных в других вольюмах, на базе собственной инфраструктуры или инфраструктуры хостинг провайдера?
Sergey
Ничем. Это оно и есть. Просто это вне кубера
Anton
ну ок. так почему бы тогда не запускать сервис в кубере, храня его данные вне кубера?
Sergey
Потому что с кубером это потребовало бы pv. А дальше начинаются вопросы при скейлинге закрывающиеся всякими флокерами, но это еще больше усложняет инфраструктуру
Anton
в statefullset pvc под каждый под генерятся и привязываются к конкретному поду. как уж там инфраструктура будет выделять pv, отдельный вопрос. в aws можно динамически же генерить pv под запросы. и при скейлинге тоже
Anton
очень в общих чертах сложно это обсуждать
Sergey
Я раньше так и делал. Проблемы начинают возникать при автоскейлинге кластера и порождении нод в других az, из которых эти pv нельзя смонтировать
Sergey
Кубер это не учитывает (раньше по крайней мере не учитывал). Да и сложность этого схематоза такова, что я их не сильно виню. Вообщем я пришел к выводу, что все stateful - нах из кластера и pv использовать только в случае крайней необходимости (если софт по-другому не умеет).
Anton
насчет порождения нод в других зонах, шедулинг подов позволяет ограничить где именно можно шедулить с помощью affinity
Anton
ну тоесть можно постораться не уехать за пределы чего то логического
Sergey
Тогда пропадает ha
Anton
ну лан, тебе не угодить =)
Anton
что с ha за пределами к8с? =)
Sergey
В rds по дефолту :)
Sergey
В кафке и кубере из коробки
Sergey
Зукипере*
Sergey
Ну то есть все нормальные базы/очереди это умеют сами по себе а если не умеют то и в кубере вряд ли заумеют :)
Dmitry
Почему нельзя создать новый пустой под и реплицировать? Либо пустой под и ему вручную подсунуть данные если совсем не хочется ждать репликации
Dmitry
Моя задача задеплоить все по-чистому на 3 железки, а когда нужно переехать на доп железо.
Sergey
Я вот не пойму зачем тянуть данные со старого пода на новую ноду чего-то?
Механизм репликации - средство достижения HA и масштабируемости, а не штатный механизм переноса данных. В случае с кубером пода может скакать по кластеру как захочет (если конечно ее не прибить гвоздями). Плюс к этому может случиться так, что все 3 ноды будут недоступны в течение достаточно сжатого периода времени. Такое часто случается, например, в случае kops rolling update с изменением ig - оно просто по очереди терминейтит все ноды (сейчас вроде хоть дрейнить научилось) и порождает новые на их место
Dmitry
Ansible/Chef?
Да, если бы то была одна система, но тут целая инфраструктура которую с некоторй верояинтостью нужно скейлить.