Иногда мы используем скрипты Python для ускорения и мониторинга модулей Kubernetes, работающих на Google Kubernetes Engine, используя Официальную клиентскую библиотеку Python для kubernetes .Мы также включаем автоматическое масштабирование в некоторых из наших пулов узлов.
В соответствии с этим , «Master VM автоматически масштабируется, обновляется, резервируется и защищается».Пост также, кажется, указывает на то, что некоторое автоматическое масштабирование плоскости управления / главной виртуальной машины происходит, когда число узлов увеличивается с 0-5 до 6+ и, возможно, в другое время, когда добавляется больше узлов.
Кажется, чтоплоскость управления может упасть в такие моменты, когда было задействовано много узлов.Когда и где это происходит, наши скрипты Python, которые отслеживают модули через плоскость управления, часто терпят крах, по-видимому, не находя конечную точку KubeApi / Control Plane, вызывающую некоторые из следующих исключений:
ApiException, urllib3.exceptions.NewConnectionError, urllib3.exceptions.MaxRetryError.
Каков наилучший способ справиться с этой ситуацией?Существуют ли какие-либо свойства событий автоматического масштабирования, которые могут быть полезны?
Чтобы пояснить, что мы делаем с клиентом Python, мы находимся в цикле, читающем состояние интересующего модуля через read_namespaced_pod каждые несколько минут и перехват исключений, аналогичных приведенному в примере (кроме того, мы попытались также перехватить исключения для базовых вызовов urllib ).Мы также добавили повторные попытки с экспоненциальным откатом, но вещи не могут восстановиться и потерпеть неудачу после указанного максимального числа повторных попыток, даже если это число велико (например, продолжайте повторную попытку в течение> 5 минут).
Одна вещь, которую мы не пробовали, это воссоздание объекта kubernetes.client.CoreV1Api
при каждой повторной попытке.Будет ли это иметь большое значение?