Evgeny
Anton
Evgeny
Denis
Denis
Так что это надуманно имхо.
Max
Парни, можете подсказать норм сторедж класс для автопровизинга персистент волиум клейм и персистент волиум поднял nfs из helm всё запровизило с хранилищем по host path начинаю провизить через этот сторедж класс другие продукты персистент волиумы не конектятся к подам. Может кто сталкивался
Sergey
Sergey
или вы хотите динамический сторэдж?
Vladimir
Max
Это каша в голове :)
Max
Хочу динамический сторедж )
Max
Для HELM
Vadim
Default отличный стораджкласс, а что у вас за сторадж вообще?
Max
В миникубе всё работает
Max
А когда развернул кубер с коробки дефолт вообще не подтянулся
Max
Мне для дэва над
Max
Для прода у меня AWS
Max
Я хочу динамический сторедж для тестов
Denis
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 вытащить((
Прошу прощения за тупенький вопрос)
Andrey
ㅤ
ㅤ
Как я понимаю это после 59 строки? Но GKE ругается и не сохраняет(
Anonymous
ㅤ
ㅤ
@cryptstal
Anonymous
@cryptstal
imagePullSecrets не для конкретного контейнера, а для всех, нужно на один уровень с containers поставить
ㅤ
Ура, заработало! @cryptstal @rheinx спасибище!
ㅤ
Juriy
Всем ку. А гугле ингрес как то по особенному работает?
Juriy
На тесте на железе все ок в гугле не работает ингрес.
Anonymous
Andor
"я тут что-то сделал и у меня не работает"
Andor
Без объяснения что было сделано и без объяснения, что не работает
Andor
Люблю такое
Dmytro
всегда так делаю
Juriy
Anonymous
Juriy
Juriy
Anonymous
blkmrkt
Мне нужно пробросить постгрес с ноды на которой он установлен на живую, внутрь кластера.
Правильно будет, если я оберну HAProxy в Dockerfile, и запущу этот под с host networking?
Не знаете что в конфиге HAProxy написать?
Пробросить нужно localhost:5432 на порт 5432 пода.
Andrey
blkmrkt
Andrey
blkmrkt
и лучше ее не трогать, а осторожно подключаться
Andrey
blkmrkt
А уже поды из кластера смогут адресовать его внутри виртуальной сети куба, если я правильно понимаю
blkmrkt
ох щит, ок
blkmrkt
blkmrkt
Я думал что эта херь дает поду дополнительный сетевой интерфейс
Andrey
blkmrkt
Как быть то?
Andrey
Как быть то?
Посмотри все же в сторону сервиса. А на pg разреши коннекты только с ip нод в pg_hba.conf
Andrey
Ну или если паранойя то можешь дополнительно шлифануть фаерволом
blkmrkt
Dmytro
так ты сходи сначала телнетом на сервис:порт посмотри что там
Aleksey
господа кто нить юзает contiv ? он правда умеет в vlan ?
я бы хотел для некоторой части подов иметь две сети. одну в сторону кластера вторую в сторону нужных мне vrf. нужные vrf подаются на хост в отдельных vlan в теге
Andrey