Denis
Зато когда ты сделаешь kube hardway, ты будешь понимать что там внутри, а не как 90% "операторов кубернетиса", которые все очень быстро подняли, но потом когда оно сломается сразу в чатик с проблемой.
Да я поставил через спрей и все равно чуть влево вправо и погнали по правилам ипт, и конфигам контейнеров, и чарты разбирать что понять что же там надеплоило.
Denis
Так что это надуманно имхо.
Max
Парни, можете подсказать норм сторедж класс для автопровизинга персистент волиум клейм и персистент волиум поднял nfs из helm всё запровизило с хранилищем по host path начинаю провизить через этот сторедж класс другие продукты персистент волиумы не конектятся к подам. Может кто сталкивался
Sergey
или вы хотите динамический сторэдж?
Max
Это каша в голове :)
Max
Хочу динамический сторедж )
Max
Для HELM
Vadim
Default отличный стораджкласс, а что у вас за сторадж вообще?
Max
В миникубе всё работает
Max
А когда развернул кубер с коробки дефолт вообще не подтянулся
Max
Мне для дэва над
Max
Для прода у меня AWS
Max
Я хочу динамический сторедж для тестов
Vadim
У локальных тестов и local-provisioner сойдет
Alexander
А кто знает зачем нужен нод анотейшн node.alpha.kubernetes.io/ttl=0 . Нигде не нашел документации по нему. Подозреваю, что это как-то связано с nodeInfo кешем и используется kubelet'ом. Собственно чего спрашиваю, после обновления на 1.11 появилась проблема с kube-scheduler'ом, срабатывает PodFitsHostPorts predicate (FailedScheduling didn't have free ports) при обновлении deployment'а часть подов не скедулится на ноды и висят бесконечное количество времени в статусе Pending пока не ребутнешь kube-scheduler. Собрал свой скедулер, чтобы он выводил дебаг инфо по функции PodFitsHostPorts, вот так: func PodFitsHostPorts(pod *v1.Pod, meta algorithm.PredicateMetadata, nodeInfo *schedulercache.NodeInfo) (bool, []algorithm.PredicateFailureReason, error) { var wantPorts []*v1.ContainerPort if predicateMeta, ok := meta.(*predicateMetadata); ok { wantPorts = predicateMeta.podPorts } else { // We couldn't parse metadata - fallback to computing it. wantPorts = schedutil.GetContainerPorts(pod) } if len(wantPorts) == 0 { return true, nil, nil } existingPorts := nodeInfo.UsedPorts() // try to see whether existingPorts and wantPorts will conflict or not if portsConflict(existingPorts, wantPorts) { fmt.Printf(" nodeInfo: %+v ================ existingPorts: %+v ================ wantPorts: %+v ================ podName: %+v\n\n======================\n\n", nodeInfo.Node().Name, existingPorts["0.0.0.0"], wantPorts, pod.Name) return false, []algorithm.PredicateFailureReason{ErrPodNotFitsHostPorts}, nil } return true, nil, nil } Если portsConflict то выводит значения existingPorts на ноде и wantPorts контейнера. Так вот existingPorts выводит закешированые значения, порты давно не слушаются, а он говорит что слушаются. Если поменять версию скедулера на v1.10.5 такой проблемы не возникает. Kubernetes 1.11.0, calico 3.1 (ibgp full mesh), containerd 1.1.2, ~100 нод в кластере Мой issuse https://github.com/kubernetes/kubernetes/issues/66568 Может кто-то сталкивался с такой проблемой?
Andrey
А кто знает зачем нужен нод анотейшн node.alpha.kubernetes.io/ttl=0 . Нигде не нашел документации по нему. Подозреваю, что это как-то связано с nodeInfo кешем и используется kubelet'ом. Собственно чего спрашиваю, после обновления на 1.11 появилась проблема с kube-scheduler'ом, срабатывает PodFitsHostPorts predicate (FailedScheduling didn't have free ports) при обновлении deployment'а часть подов не скедулится на ноды и висят бесконечное количество времени в статусе Pending пока не ребутнешь kube-scheduler. Собрал свой скедулер, чтобы он выводил дебаг инфо по функции PodFitsHostPorts, вот так: func PodFitsHostPorts(pod *v1.Pod, meta algorithm.PredicateMetadata, nodeInfo *schedulercache.NodeInfo) (bool, []algorithm.PredicateFailureReason, error) { var wantPorts []*v1.ContainerPort if predicateMeta, ok := meta.(*predicateMetadata); ok { wantPorts = predicateMeta.podPorts } else { // We couldn't parse metadata - fallback to computing it. wantPorts = schedutil.GetContainerPorts(pod) } if len(wantPorts) == 0 { return true, nil, nil } existingPorts := nodeInfo.UsedPorts() // try to see whether existingPorts and wantPorts will conflict or not if portsConflict(existingPorts, wantPorts) { fmt.Printf(" nodeInfo: %+v ================ existingPorts: %+v ================ wantPorts: %+v ================ podName: %+v\n\n======================\n\n", nodeInfo.Node().Name, existingPorts["0.0.0.0"], wantPorts, pod.Name) return false, []algorithm.PredicateFailureReason{ErrPodNotFitsHostPorts}, nil } return true, nil, nil } Если portsConflict то выводит значения existingPorts на ноде и wantPorts контейнера. Так вот existingPorts выводит закешированые значения, порты давно не слушаются, а он говорит что слушаются. Если поменять версию скедулера на v1.10.5 такой проблемы не возникает. Kubernetes 1.11.0, calico 3.1 (ibgp full mesh), containerd 1.1.2, ~100 нод в кластере Мой issuse https://github.com/kubernetes/kubernetes/issues/66568 Может кто-то сталкивался с такой проблемой?
https://github.com/kubernetes/kubernetes/blob/b6f75ac30e863531ac73cfd02a0edd57983cc5c0/staging/src/k8s.io/api/core/v1/annotation_key_constants.go#L59-L62
Alexander
Это я видел, что значит 0? Не кешировать совсем или кешировать бесконечно долго?
Михаил
Ты так говоришь, как будто все что не kube-way (который любой текущий станет деприкейтед через полгода от сейчас), это плохо. Ну моднее кубадм папета, и чо? Оф модуль папета текущий для кубера юзает кубадм ровно так же, как это делает спрей, например. Про перенести мастер в один клик это смешно. Или может через кубадм можно без проблем поинитить etcd внутри кластера сразу отказоустойчивый? Или он тебе ha для апи сам настроит? Ой, подумаешь кубспрей даже если забить на центос на 18.04 не работает вообще. Не все что мейнстрим - не говно. Как с кружкой про миллионы пользователей macromedia flash, которые не могут ошибаться.
Знатно припекло. Из этого потока сознания я не понял только почему тебе смешно от возможности перенести мастера в один клик? Всё мейнстрим говно в той или иной степени. Потому что ты надеешься на чужую магию и становишься одним из чатика который "я взял кубе спрей, мне надо было абнавить кластер и теперь у меня всё сломалось, оказалось это бага кубе спрея, как мне откатиццо назад?!"
Juriy
Хелов , деплою в GCE не создается ингресс
Juriy
googleapi: Error 400: Invalid value for field 'namedPorts[2].port': '0'. Must be greater than or equal to 1, invalid
Juriy
в сервисе стоит type: NodePort
Juriy
кто то сталкивался с подобным?
Andrey
смысл тебе отвечать, ты ж всё равно не читаешь
ㅤ
Как в Kubernetes использовать imagePullSecret для деплоймента, а не для пода? Решил в GKE залить проект на стейджинг но не могу имедж с registry.gitlab.com вытащить(( Прошу прощения за тупенький вопрос)
ㅤ
ㅤ
Как я понимаю это после 59 строки? Но GKE ругается и не сохраняет(
ㅤ
ㅤ
@cryptstal
Anonymous
@cryptstal
imagePullSecrets не для конкретного контейнера, а для всех, нужно на один уровень с containers поставить
ㅤ
Ура, заработало! @cryptstal @rheinx спасибище!
ㅤ
Juriy
Всем ку. А гугле ингрес как то по особенному работает?
Juriy
На тесте на железе все ок в гугле не работает ингрес.
Andor
"я тут что-то сделал и у меня не работает"
Andor
Без объяснения что было сделано и без объяснения, что не работает
Andor
Люблю такое
Dmytro
всегда так делаю
Juriy
Ты сервису lb присвоил?
Буду признателен если кинете линк на ман где почитать.
Juriy
Anonymous
blkmrkt
Мне нужно пробросить постгрес с ноды на которой он установлен на живую, внутрь кластера. Правильно будет, если я оберну HAProxy в Dockerfile, и запущу этот под с host networking? Не знаете что в конфиге HAProxy написать? Пробросить нужно localhost:5432 на порт 5432 пода.
blkmrkt
А это разве не через сервис делается? На сколько я знаю, создаётся сервис с дестинейшном наружу, а поды все ходят на этот сервис
У меня ноды без локальной сети, я не хочу открывать порт постгреса миру. Вот и приходится под-прокси делать
blkmrkt
Так, а прокси как будет это делать? Не по той же сети?)
прокси будет припинена к ноде на которой бд установлена)
Andrey
прокси будет припинена к ноде на которой бд установлена)
Бррр. Это как бы на серваке стоит обвяз кубера + рядом установлена ПГ?
blkmrkt
Бррр. Это как бы на серваке стоит обвяз кубера + рядом установлена ПГ?
Точняк! Бд размером 30ТБ, у меня пока столько мощностей нет чтоб оттестить этот деплой в кубе
blkmrkt
и лучше ее не трогать, а осторожно подключаться
Andrey
Точняк! Бд размером 30ТБ, у меня пока столько мощностей нет чтоб оттестить этот деплой в кубе
Но я таки все ещё не могу понять, куда ты будешь направлять haproxy.
blkmrkt
Но я таки все ещё не могу понять, куда ты будешь направлять haproxy.
На localhost:5432, тк он будет запущен внутри сети хоста на которой постгря
blkmrkt
А уже поды из кластера смогут адресовать его внутри виртуальной сети куба, если я правильно понимаю
Andrey
На localhost:5432, тк он будет запущен внутри сети хоста на которой постгря
Localhost для пода haproxy будет самим подом, а не сервером на котором нода
blkmrkt
Localhost для пода haproxy будет самим подом, а не сервером на котором нода
Короче не знаю, я вот эту галочку отметил в ранчере, но запустить могу только 1 под, иначе происходит конфликт портов которые сервис в поде слушает.
blkmrkt
ох щит, ок
blkmrkt
Я думал что эта херь дает поду дополнительный сетевой интерфейс
Andrey
pod ip и node ip в этом случае одинаковы
Нуууу, вроде да, логично.
blkmrkt
Как быть то?
Andrey
Как быть то?
Посмотри все же в сторону сервиса. А на pg разреши коннекты только с ip нод в pg_hba.conf
Andrey
Ну или если паранойя то можешь дополнительно шлифануть фаерволом
Andrey
Ну ок, так и сделаю тогда, спасибо
Попробуй да. Я просто мысли говорю. Я диванный аналитик пока в этом :))
blkmrkt
Попробуй да. Я просто мысли говорю. Я диванный аналитик пока в этом :))
Такс а вот вопрос - создал сервис с именем postgres, как к нему теперь подключить под? Аппа не подключается, хотя в Ранчере 1х вроде бы так и работало SequelizeHostNotFoundError: getaddrinfo ENOTFOUND postgresql postgresql:5432
Dmytro
так ты сходи сначала телнетом на сервис:порт посмотри что там
Aleksey
господа кто нить юзает contiv ? он правда умеет в vlan ? я бы хотел для некоторой части подов иметь две сети. одну в сторону кластера вторую в сторону нужных мне vrf. нужные vrf подаются на хост в отдельных vlan в теге
blkmrkt
Тебе теперь надо dns имя сервиса получить, и на него стучаться.
я уже внешний ип напрямую в конфигсете указал, так и нужно было изначально