Logan
я через снапшоты
Logan
их можно вызывать вручную перед бэкапом или просто копировать папку со снапшотами, она автоматически пополняется
Andrew
У кого-нибудь было так что при редеплое пода не обновился эндпоинт и как итог, сервис роутит на неактуальный айпишник?
M
у кого к deployment привязаны rbd волумы?
Sergey
HA мастер никто не отменял
Serg
Привет. Поискал по истории, не нашел похожих вопросов. Есть офисный DNS сервер, работает на BIND, обслуживает внутренний домен dom.loc. Хочется делегировать поддомен test.dom.loc в kubernetes, чтобы поды были доступны по имени podnames.test.dom.loc. Запустил kubernetes на 4-х виртуалках, сеть flannel 10.244.0.0/16 kubeadm init —apiserver-advertise-address=192.168.21.1 —service-dns-domain=test.dom.loc —pod-network-cidr=10.244.0.0/16 Создал в BIND glue record, IP взял из kube-system kube-dns-3248477975-5119w 3/3 Running 28 2d 10.244.1.9 tcpdump вижу что glue record работает, и направляет запросы к kube-dns. создаю pod apiVersion: v1 kind: Pod metadata: name: busybox namespace: default spec: containers: - image: busybox command: - sleep - "3600" imagePullPolicy: IfNotPresent name: busybox restartPolicy: Always pod запускается default busybox 1/1 Running 22 21h 10.244.1.8 Ожидаю, что он будет резолвится по имени busybox.test.dom.loc, но этого не происходит. 1) Как зафиксировать IP kube-dns, так как после рестарта pod kube-dns у него меняется IP? 2) На каком этапе kubernetes создает A-record в DNS (pod,service,...)? 3) Как получить AXFR из kube-dns? Натолкните плз, куда смотреть.
Maksim
1) Создать сервис
Maksim
2) Для каждой сущности
Maksim
3) Незнаю)
Serg
а я правильно понимаю, что если —service-dns-domain=test.dom.loc, то pod должен резолвится, как busybox.test.dom.loc ?
Magistr
хостнеймы контейнеров небудут ресолвиться, а вот адреса сервисов лоабдалансеров будут
Magistr
сам вот недавно это исследовал
Magistr
еще советуют сеть в бридж переключить, но я хз как это с фланнелем совместимо
Anonymous
https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/ Если вкратце, то создав сервис, а запись будет service-name.default.svc.test.dom.loc Под получит а запись с ip адресом вначале. Чтобы сделать то что хочется нужно поиграться с аннотацией pod.beta.kubernetes.io/hostname Судя по документации делает примерно то что нужно
Maksim
поды то же резолвятся
Maksim
имя под.pod.namespace.domain
Maksim
ну такое есть в коде )
Dmitry
When enabled, pods are assigned a DNS A record in the form of pod-ip-address.my-namespace.pod.cluster.local
Maksim
а ты про имя)
Maksim
Тут каяюсь) только использовать и это смысла нет, под слишком смертны, и их ip/имя очень изменчевы
Magistr
если там еще один сервис дискавери то норм, но всеравно изврат
Maksim
если там еще один сервис дискавери то норм, но всеравно изврат
ни тебе HA ни Горизонтального маштабирования.....
Magistr
ну почему ?
Maksim
что?
Роман
Подскажите, а как волюмы работают? Скажем, я выбираю тип hostPath, и делаю DaemonSet. У меня каталог на каждой ноде будет создан?
Роман
Да
То есть, за этим не нужно следить - если какой-то под изменит файл в волюме - он изменится на всех нодах?
Vitalii
Нет. Только на одной
Artem
ты же маунт с хоста делаешь, а он для каждой ноды свой
Artem
маунти с какого нибудь хранилища, например по нфс и будет тогда везде меняться
Роман
А какой тип использовать, если я хочу, чтобы все поды на всех нодах использовали одинаковый и синхронизированный волюм?
Роман
nfs?
Artem
самый простой и быстрый вариант
Artem
быстрый в плане развернуть
Роман
Но не быстрый - в плане хайлоад? А какие ещё варианты?
Artem
ну смотря какой хайлойд
Artem
у нас судя по метрикам далеко до ботлнека
Роман
100 - 200 тыщ в сутки, например.
Etki
у меня нет какого-то готового ответа, просто уточню: редкая запись, частое чтение?
Etki
и где это все разворачивается (не на gcp / azure / aws)?
Роман
Пока на своих серверах в датацентре.
Artem
сейчас глянул статистику у меня более 3кк в сутки на запись
Artem
и до ботлнека еще далеко
Artem
развернуто в gke плюс nfs там же
Etki
и на всякий - это же не для какого-то хранилища данных, именно хранилище объектов?
Artem
nfs в gcp если точнее
Artem
для бд это другая история
Etki
вот это прям сразу не очень хорошо
Artem
лучше не практиковать такое для бд
Etki
бд может считать, что кроме нее никто файл не модифицирует
Роман
Кластеризация бд - это отдельная тема в принципе, которую я буду рассматривать чуть позже. В данный момент волюмы нужны для статики проекта. Она редко изменяется - например, при деплое новой версии. Вот, в таком случае, получается, нфс - достойный выбор.
Artem
если не для бд, то nfs очень даже ок
Zon
Если бд то лучше сразу какой-то кластер делать.
Maksim
Кластеризация бд - это отдельная тема в принципе, которую я буду рассматривать чуть позже. В данный момент волюмы нужны для статики проекта. Она редко изменяется - например, при деплое новой версии. Вот, в таком случае, получается, нфс - достойный выбор.
тут проблема в самой БД. ПО сути у тебя будет файл с базоый данных в который смотрит несколько app этой базы. ТОчно знаю что Постгре сойдёт с ума, да так, что лошадь будет проще убить, чем лечить. Классические БД довольно плохо переносят кластеризацию...
Maksim
лучше делать через pgpool рядышком
Maksim
вне кластера кубера
Салтыдык
для postgres мы используем stolon
Роман
Была мысль сделать через pgpool, но при помощи кубера. Очень запутанно получается. Пока очень внимательно думаю над этим.
Sergei
для postgres мы используем stolon
о. а у вас нет метода форсированно выводить мастера из столона без 30-секундной паузы?
Салтыдык
о. а у вас нет метода форсированно выводить мастера из столона без 30-секундной паузы?
не в курсе, к сожалению. Спрошу у разработчика, как освободится.
Салтыдык
о. а у вас нет метода форсированно выводить мастера из столона без 30-секундной паузы?
он сказал, что 3 секунды даунтайма при отстреле мастера. Ничего специфичного не делал
Роман
Скажите, если у меня в докерфайле прописан, например, EXPOSE 2222, то для того, чтобы другие контейнеры видели этот порт достаточно в деплоймент прописать containerPort или обязательно нужно создавать сервис? Или сontainerPort вообще не обязательно указывать?
Artem
если сеть одна то все порты доступны будут другим контейнерам
Роман
если сеть одна то все порты доступны будут другим контейнерам
И не обязательно containerPort явно прописывать?
Maksim
контейнерПорт нужно указывать что бы при expose кубер сам подхватывал порты из объявления деплоя
Maksim
А так контейнер будет отвечать по всем своим портам
Роман
АА. понял. Спасибо.
Роман
А что-то подобное есть, типа depends_on? Чтобы контроллер начал поднимать деплоймент только после того, как другой деплоймент будет поднят.
Роман
Что-то как из пушки по воробьям). Нашел readinessProbe - вроде то, что нужно.
Maksim
Реаднесс Проба для другого
Maksim
Он проверяет работу пода перед включением его в ендпоинт для сервиса
Роман
Речь об эластиксёрче. От него зависит кибана и логстэш. Нужно, чтобы два последних запустились только после того, как эластик сделает свою грязную работу по инициализации и поднятию. То есть, как только апи-порт доступен и ответил - поднимаем остальное. Реаднесс - это не оно?
Maksim
нет