172 похожих чатов

Привет, комьюнити! Прошу помощи у коллективного разума, сам что-то уже в

тупике, быть может чего-то не вижу в упор.

Дано.
Относительно большой кластер, 20к подов порождённых 20к стетфулсетов, 150 воркеров, 5 мастеров. На каждом из мастеров haproxy, бэкендами у которого выступают все http-эндпоинты kube-apiserver. Между мастерами плавающий айпишник, настроенный в keepalived.
Версия 1.17
Каждый под имеет pvc и соответствующий pv. PVC принадлежат двум разным storageclass'ам. Оба storageclass'а - rbd под ceph, но с разыми проижионерами, ceph.com/rbd и rbd.csi.ceph.com.

Проблема.
Вне зависимости от storageclass'а и провижионера, при создании нового стейтфулсета, соответствующий под зависает на монтировании тома. Логи пода и kube-controller-manager:
https://pastebin.com/gQURvatj

Т.е. как будто где-то внутри кластера для serviceaccount'а ноды не подтягиваются права на чтение тома (??).
Под может сам собой запуститься через некоторое время, провисев в ContainerCreating от 10 минут до часа.
Что интересно, ситуативно помогает рестарт kubelet на воркере, но не везде и не всегда. Больше похоже на какое-то шаманство с рандомом и переподключениями.

Что пробовал крутить:

haproxy:
Глупо, но:
Увеличивал лимит коннектов (но и так не упиралось).
Увеличивал таймауты.

kube-apiserver:
Увеличивал таймаут для кублета:
--kubelet-timeout=30s (вместо 5с)
Увеличивал лимит выполняемых запросов:
--max-mutating-requests-inflight=1500
--max-requests-inflight=2000

kube-controller-manager:
Количество одновременных синхронизаций serviceaccount'ов (самое потенциально близкое по смыслу, как мне кажется):
--concurrent-serviceaccount-token-syncs=25
Ну и лимиты запросов к api:
--kube-api-qps=200
--kube-api-burst=300

Короче говоря, странная какая-то проблема. Есть ощущение, что что-то упирается в какой-то лимит или таймаут, но я никак не пойму что и где.

14 ответов

5 просмотров

Кипэлайв говно

Aleksey-Zakurin Автор вопроса
George Gaál
Кипэлайв говно

Перемещает айпишник мастера и ладно :) Вообще, сейчас вроде бы как принято делать конфигурацию с прокси на каждом воркере, у которых бэкенд смотрит на мастеров, а кублет самой ноды смотрит на этот прокси. Но я не пробовал.

Aleksey Zakurin
Перемещает айпишник мастера и ладно :) Вообще, сей...

Это ты описал кубеспрей путь, в принципе, валидно, если нет балансировщика

George Gaál
Это ты описал кубеспрей путь, в принципе, валидно,...

Попробуй пересетапить, можешь даже, господи прости, спрей взять - проблема наверняка уйдёт

Aleksey-Zakurin Автор вопроса
George Gaál
Попробуй пересетапить, можешь даже, господи прости...

Да что-то стрёмно под продом пересетапливать это всё добро, тем более на спрей, тем более не разобравшись в проблеме. Может быть если мысли, хотя бы в какую сторону копать?

а логи csi агента на нодах смотрел? и kubelet?

Aleksey-Zakurin Автор вопроса
Dmitry Sergeev 🇺🇦
а логи csi агента на нодах смотрел? и kubelet?

csi агента для первого провижионера вообще нет, так что тут дело явно не в csi. В то же время в kubelet интересная штука: Apr 28 19:07:25 kworker-51 kubelet[13015]: E0428 19:07:25.459463 13015 reflector.go:156] object-"clients"/"xyz": Failed to list *v1.ConfigMap: configmaps "xyz" is forbidden: User "system:node:kworker-51" cannot list resource "configmaps" in API group "" in the namespace "clients": no relationship found between node "kworker-51" and this object Apr 28 19:07:25 kworker-51 kubelet[13015]: E0428 19:07:25.481334 13015 desired_state_of_world_populator.go:320] Error processing volume "rms-data" for pod "xyz-0_clients(eb32dff5-3fd9-4e50-90ea-899aaa3e8974)": error processing PVC clients/xyz-0: failed to fetch PVC from API server: persistentvolumeclaims "xyz-0" is forbidden: User "system:node:kworker-51" cannot get resource "persistentvolumeclaims" in API group "" in the namespace "clients": no relationship found between node "kworker-51" and this object

Aleksey-Zakurin Автор вопроса
Dmitry Sergeev 🇺🇦
попробуй, годная тема

Спасибо. В принципе, да, неплохо было бы все вызовы апи не через одну дырку пихать, а через пять

Aleksey-Zakurin Автор вопроса
Aleksey Zakurin
csi агента для первого провижионера вообще нет, та...

Т.е. он явно не успевает как-то синхронизировать права на вольюмы - будь то configmap или pv, без разницы

Aleksey Zakurin
Т.е. он явно не успевает как-то синхронизировать п...

Я если честно вообще не знал, что у kubelet есть права читать PVC. Думал этим всем CSI занимается, в том числе монтирует том на ноду

Aleksey-Zakurin Автор вопроса
Dmitry Sergeev 🇺🇦
Я если честно вообще не знал, что у kubelet есть п...

Здесь он не может даже configmap прочитать... Наткнулся на интересную статью, https://engineering.dollarshaveclub.com/kubernetes-fixing-delayed-service-endpoint-updates-fd4d0a31852c У автора долго синхронизировались эндпоинты. Кажется, что-то похожее, учитывая, что это в принципе всё сущности апи

Aleksey Zakurin
Здесь он не может даже configmap прочитать... Натк...

Я бы начал с изучения кода, как том монтируется на ноду. В какой момент кубелету даются права на это. Ваще интересная тема

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
Коллеги, доброе утро. Запустил на удаленном хосте приложение (ручками зашел туда по ssh и запустил, не командой удаленно). Создал потом ssh-туннель, и с моей машины приложение...
Δημήτηρ
9
Карта сайта