Рейтинг:0

Сервер метрик находится в CrashLoopBackOff с НОВОЙ установкой от rke

флаг th

Я устанавливал по крайней мере 10 раз за последние дни, но каждый раз одно и то же Все работает нормально, но сервер метрик находится в состоянии CrashLoopBackOff

то, что я понимаю ниже, отсутствует в файле YAML pods и должно быть добавлено в Deployment.

Я новичок в Kubernetes, у меня 2 вопроса

  1. Я использую rke для установки кластера rancher, так почему же в модулях не будет приведенных ниже настроек для запуска метрического сервера?

    Команда: /metrics-сервер
    --cert-dir=/tmp
    --secure-порт=4443
    --kubelet-preferred-address-types=Внутренний IP
    --kubelet-небезопасный-TLS

  2. как лучше всего добавить эти строки, я новичок, поэтому мне нужны некоторые рекомендации

Информация о кластере:

Версия Кубернета:
[rke@rke19-master1 ~]$ kubectl получить узлы
ИМЯ СТАТУС РОЛИ ВОЗРАСТ ВЕРСИЯ
192.168.0.56 Готовая панель управления и т. д. 17 м v1.19.10
192.168.0.57 Готовая панель управления и т. д. 17 м v1.19.10
192.168.0.58 Готовая панель управления и т. д. 17 м v1.19.10
192.168.0.59 Готовый рабочий 17м v1.19.10
192.168.0.60 Готовый рабочий 17м v1.19.10
[rke@rke19-master1 ~]$

[rke@rke19-master1 ~]$ kubectl get pods metrics-server-5b6d79d4f4-ggl57 -n kube-system -o yaml

апиВерсия: v1
вид: стручок
метаданные:
  аннотации:
    cni.projectcalico.org/podIP: 10.42.4.3/32
    cni.projectcalico.org/podIPs: 10.42.4.3/32
  Отметка времени создания: "2021-08-16T23:00:42Z"
  generateName: сервер-метрик-5b6d79d4f4-
  этикетки:
    k8s-app: сервер метрик
    стручок-шаблон-хеш: 5b6d79d4f4
  управляемые поля:
  - версия API: v1
    fieldsType: FieldsV1
    поляV1:
      ф: метаданные:
        f: сгенерировать имя: {}
        ф: метки:
          .: {}
          f: k8s-приложение: {}
          f: под-шаблон-хэш: {}
        f:владелецReferences:
          .: {}
          к:{"uid":"fb15b257-4a9d-478b-b461-8b61c165e3db"}:
            .: {}
            f:apiVersion: {}
            f: blockOwnerDeletion: {}
            е: контроллер: {}
            е: вид: {}
            е: имя: {}
            е: ИД: {}
      ф: спец:
        ф: близость:
          .: {}
          f: nodeAffinity:
            .: {}
            f: требуется во время планирования игнорирования во время выполнения:
              .: {}
              f: nodeSelectorTerms: {}
        ф:контейнеры:
          k:{"имя":"сервер-метрик"}:
            .: {}
            е: аргументы: {}
            е: изображение: {}
            f: imagePullPolicy: {}
            f: живостьПроб:
              .: {}
              f:failureThreshold: {}
              f:httpПолучить:
                .: {}
                е: путь: {}
                е: порт: {}
                е: схема: {}
              f: период секунд: {}
              f:порог успеха: {}
              f: таймаутСекондс: {}
            е: имя: {}
            е: порты:
              .: {}
              k:{"Порт_контейнера":4443,"протокол":"TCP"}:
                .: {}
                f: контейнерПорт: {}
                е: имя: {}
                е: протокол: {}
            f:readinessProbe:
              .: {}
              f:failureThreshold: {}
              f:httpПолучить:
                .: {}
                е: путь: {}
                е: порт: {}
                е: схема: {}
              f: период секунд: {}
              f:порог успеха: {}
              f: таймаутСекондс: {}
            е: ресурсы: {}
            f:контекст безопасности:
              .: {}
              f: readOnlyRootFilesystem: {}
              f: runAsNonRoot: {}
              е: runAsUser: {}
            f:terminationMessagePath: {}
            f:termitionMessagePolicy: {}
            f: томомаунтс:
              .: {}
              k:{"mountPath":"/tmp"}:
                .: {}
                е: mountPath: {}
                е: имя: {}
        f:dnsPolicy: {}
        f: enableServiceLinks: {}
        f: PriorityClassName: {}
        f:restartPolicy: {}
        f: имя планировщика: {}
        f: безопасностьконтекст: {}
        f:serviceAccount: {}
        f:serviceAccountName: {}
        f:terminationGracePeriodSeconds: {}
        f: допуски: {}
        ф: объемы:
          .: {}
          k:{"имя":"tmp-каталог"}:
            .: {}
            е: пустойКаталог: {}
            е: имя: {}
    менеджер: kube-controller-manager
    операция: обновление
    время: "2021-08-16T23:00:42Z"
  - версия API: v1
    fieldsType: FieldsV1
    поляV1:
      ф: метаданные:
        ф: аннотации:
          .: {}
          f:cni.projectcalico.org/podIP: {}
          f:cni.projectcalico.org/podIPs: {}
    Менеджер: Калико
    операция: обновление
    время: "2021-08-16T23:00:47Z"
  - версия API: v1
    fieldsType: FieldsV1
    поляV1:
      ф:статус:
        ф: условия:
          k:{"type":"ContainersReady"}:
            .: {}
            f: lastProbeTime: {}
            f: lastTransitionTime: {}
            е: сообщение: {}
            е: причина: {}
            е: статус: {}
            е: тип: {}
          k:{"тип":"Инициализировано"}:
            .: {}
            f: lastProbeTime: {}
            f: lastTransitionTime: {}
            е: статус: {}
            е: тип: {}
          к:{"тип":"Готово"}:
            .: {}
            f: lastProbeTime: {}
            f: lastTransitionTime: {}
            е: сообщение: {}
            е: причина: {}
            е: статус: {}
            е: тип: {}
        f:containerStatuses: {}
        f: hostIP: {}
        е: фаза: {}
        ф:подIP: {}
        f:podIPs:
          .: {}
          к:{"ip":"10.42.4.3"}:
            .: {}
            е: ip: {}
        f: время начала: {}
    менеджер: кубелет
    операция: обновление
    время: "2021-08-16T23:00:54Z"
  имя: метрика-сервер-5b6d79d4f4-ggl57
  пространство имен: kube-система
  владелецСсылки:
  - версия API: приложения/v1
    blockOwnerDeletion: правда
    контроллер: правда
    вид: набор реплик
    имя: метрика-сервер-5b6d79d4f4
    UID: fb15b257-4a9d-478b-b461-8b61c165e3db
  РесурсВерсия: "5775"
  selfLink: /api/v1/namespaces/kube-system/pods/metrics-server-5b6d79d4f4-ggl57
  UID: af8d4e07-aa3f-4efe-8169-feb37cfd97df
спецификация:
  сходство:
    сродство узлов:
      requiredDuringSchedulingIgnoredDuringExecution:
        нодселектортермс:
        - matchExpressions:
          - ключ: beta.kubernetes.io/os
            оператор: НеВход
            ценности:
            - окна
          - ключ: node-role.kubernetes.io/worker
            оператор: существует
  контейнеры:
  - аргументы:
    --cert-dir=/tmp
    --secure-порт=4443
    --kubelet-небезопасный-tls
    - --kubelet-preferred-address-types=Внутренний IP
    --logtostderr
    образ: 192.168.0.35:5000/ранчер/метрик-сервер:v0.3.6
    imagePullPolicy: Ифноптресент
    живостьзонд:
      порог отказа: 3
      httpПолучить:
        путь: /livez
        порт: https
        схема: HTTPS
      периодСекунды: 10
      Порог успеха: 1
      таймаутСекунды: 1
    имя: метрика-сервер
    порты:
    - контейнерПорт: 4443
      имя: https
      протокол: TCP
    готовностьзонд:
      порог отказа: 3
      httpПолучить:
        путь: /readyz
        порт: https
        схема: HTTPS
      периодСекунды: 10
      Порог успеха: 1
      таймаутСекунды: 1
    Ресурсы: {}
    безопасностьКонтекст:
      readOnlyRootFilesystem: правда
      рунаснонрут: правда
      запустить как пользователь: 1000
    путь сообщения о завершении: /dev/termition-log
    TerminationMessagePolicy: Файл
    томМаунты:
    - путь монтирования: /tmp
      имя: tmp-каталог
    - путь монтирования: /var/run/secrets/kubernetes.io/serviceaccount
      имя: метрика-сервер-токен-78b6h
      Только для чтения: правда
  dnsPolicy: Кластерфирст
  enableServiceLinks: правда
  имя_узла: 192.168.0.59
  preemptionPolicy: Преемптлоуэрприорити
  приоритет: 2000000000
  priorityClassName: системный-кластер-критический
  политика перезапуска: всегда
  schedulerName: планировщик по умолчанию
  контекст безопасности: {}
  serviceAccount: сервер метрик
  serviceAccountName: сервер метрик
  прекращениеGracePeriodSeconds: 30
  допуски:
  - эффект: NoExecute
    оператор: существует
  - эффект: NoSchedule
    оператор: существует
  тома:
  - пустойКаталог: {}
    имя: tmp-каталог
  - имя: метрика-сервер-токен-78b6h
    секрет:
      дефолтмоде: 420
      secretName: метрика-сервер-токен-78b6h
положение дел:
  условия:
  - lastProbeTime: ноль
    lastTransitionTime: "2021-08-16T23:00:43Z"
    статус: "Верно"
    тип: инициализированный
  - lastProbeTime: ноль
    lastTransitionTime: "2021-08-16T23:00:43Z"
    сообщение: «контейнеры с неготовым статусом: [сервер метрик]»
    причина: ContainersNotReady
    статус: "Ложь"
    Тип: Готовый
  - lastProbeTime: ноль
    lastTransitionTime: "2021-08-16T23:00:43Z"
    сообщение: «контейнеры с неготовым статусом: [сервер метрик]»
    причина: ContainersNotReady
    статус: "Ложь"
    тип: Контейнеры Готовые
  - lastProbeTime: ноль
    lastTransitionTime: "2021-08-16T23:00:43Z"
    статус: "Верно"
    тип: PodScheduled
  Статусы контейнеров:
  - идентификатор контейнера: докер://344c587a7edd3abed035c12bfc16b9dbd0da3f26ba9101aa246bf4793648d380
    образ: 192.168.0.35:5000/ранчер/метрик-сервер:v0.3.6
    ID изображения: docker-pullable://192.168.0.35:5000/rancher/metrics-server@sha256:c9c4e95068b51d6b33a9dccc61875df07dc650abbf4ac1a19d58b4628f89288b
    последнее состояние:
      прекращено:
        идентификатор контейнера: докер://e28b6812965786cd2f520a20dd2adf6cbe9c6a720de905ce16992ed0f4cd7c9e
        код выхода: 2
        закончено: "2021-08-16T23:21:47Z"
        причина: ошибка
        startAt: "2021-08-16T23:21:18Z"
    имя: метрика-сервер
    готово: ложь
    перезапускКоличество: 12
    началось: правда
    государство:
      Бег:
        startAt: "2021-08-16T23:26:52Z"
  хост-IP: 192.168.0.59
  фаза: Бег
  подIP: 10.42.4.3
  podIP:
  - IP: 10.42.4.3
  qosClass: BestEffort
  startTime: "2021-08-16T23:00:43Z"


[rke@rke19-master1 ~]$ kubectl описать модули metrics-server-5b6d79d4f4-ggl57 -n kube-system
Имя: метрика-сервер-5b6d79d4f4-ggl57
Пространство имен: kube-system
Приоритет: 2000000000
Имя класса приоритета: системный-кластер-критический
Узел: 192.168.0.59/192.168.0.59
Время начала: вторник, 17 августа 2021 г., 00:00:43 +0100
Ярлыки: k8s-app=сервер метрик
                      стручок-шаблон-хэш = 5b6d79d4f4
Аннотации: cni.projectcalico.org/podIP: 10.42.4.3/32
                      cni.projectcalico.org/podIPs: 10.42.4.3/32
Статус: Работает
IP: 10.42.4.3
IP-адреса:
  IP: 10.42.4.3
Контролируется: ReplicaSet/metrics-server-5b6d79d4f4
Контейнеры:
  метрика-сервер:
    Идентификатор контейнера: docker://74ea122709aefc07b89dcbd3514e86fdff9874627b87413571d1624a55c32baa
    Изображение: 192.168.0.35:5000/rancher/metrics-server:v0.3.6
    Идентификатор изображения: docker-pullable://192.168.0.35:5000/rancher/metrics-server@sha256:c9c4e95068b51d6b33a9dccc61875df07dc650abbf4ac1a19d58b4628f89288b
    Порт: 4443/TCP
    Хост-порт: 0/TCP
    Аргументы:
      --cert-dir=/tmp
      --secure-порт=4443
      --kubelet-небезопасный-TLS
      --kubelet-preferred-address-types=Внутренний IP
      --logtostderr
    Состояние: Ожидание
      Причина: CrashLoopBackOff
    Последнее состояние: прекращено
      Причина: ошибка
      Код выхода: 2
      Начато: Вт, 17 Авг 2021 00:27:18 +0100
      Завершено: Вт, 17 Авг 2021 00:27:47 +0100
    Готово: Ложь
    Количество перезапусков: 13
    Жизнеспособность: http-get https://:https/livez delay=0s timeout=1s period=10s #success=1 #failure=3
    Готовность: http-get https://:https/readyz delay=0s timeout=1s period=10s #success=1 #failure=3
    Среда: <нет>
    Маунты:
      /tmp из каталога tmp (RW)
      /var/run/secrets/kubernetes.io/serviceaccount из metrics-server-token-78b6h (ro)
Условия:
  Тип Статус
  Инициализировано Истинно
  Готов Ложь
  ContainersReady False
  PodScheduled True
Объемы:
  tmp-каталог:
    Тип: EmptyDir (временный каталог, который разделяет время существования модуля)
    Середина:
    Ограничение размера: <не установлено>
  метрика-сервер-токен-78b6h:
    Тип: секрет (том, заполненный секретом)
    SecretName: метрика-сервер-токен-78b6h
    Необязательно: ложь
Класс QoS: BestEffort
Селекторы узлов: <нет>
Допуски: :NoExecuteop=Существует
                 :NoScheduleop=Существует
События:
  Тип Причина Возраст от сообщения
  ---- ------ ---- ---- -------
  Обычный Запланировано 28 минут, планировщик по умолчанию Успешно назначен kube-system/metrics-server-5b6d79d4f4-ggl57 на 192.168.0.59
  Обычный Вытягивание 28-метрового kubelet Вытягивание образа "192.168.0.35:5000/rancher/metrics-server:v0.3.6"
  Обычный Вытащил 28 м kubelet Успешно вытащил образ "192.168.0.35:5000/rancher/metrics-server:v0.3.6" в 4.687484656s
  Предупреждение Неработоспособный 28-мегапиксельный kubelet Проверка готовности не удалась: получение «https://10.42.4.3:4443/readyz»: превышен крайний срок контекста (клиент. Время ожидания превышено при ожидании заголовков)
  Предупреждение Неработоспособный 28-метровый kubelet Liveness не удалось проверить: получить «https://10.42.4.3:4443/livez»: net/http: запрос отменен во время ожидания подключения (клиент. Время ожидания превышено при ожидании заголовков)
  Предупреждение Неисправный 27-метровый kubelet Проверка готовности не удалась: получить «https://10.42.4.3:4443/readyz»: набрать tcp 10.42.4.3:4443: подключиться: соединение отклонено
  Предупреждение Неработоспособный 27 м (x5 более 28 м) kubelet Проверка готовности не удалась: проверка HTTP не удалась с кодом состояния: 404
  Предупреждение Неработоспособный 27 м (x5 более 28 м) kubelet Проверка Liveness не удалась: проверка HTTP не удалась с кодом состояния: 404
  Обычный Killing 27m (x2 over 27m) kubelet Container metrics-server не удалось проверить живучесть, будет перезапущен
  Обычный Создан 27м (x3 больше 28м) kubelet Создан контейнер метрик-сервер
  Обычный Запущен 27м (x3 больше 28м) kubelet Запущен контейнер метрик-сервер
  Обычный Получено 8 м 14 с (x10 более 27 м) kubelet Образ контейнера "192.168.0.35:5000/rancher/metrics-server:v0.3.6" уже присутствует на машине
  Предупреждение BackOff 3m15s (x97 более 25m) kubelet Back-off перезапуск неудачного контейнера
[rke@rke19-master1 ~]$



[rke@rke19-master1 ~]$ ^C
[rke@rke19-master1 ~]$ kubectl регистрирует metrics-server-5b6d79d4f4-ggl57 -n kube-system
I0816 23:27:20.011598 1 secure_serving.go:116] Безопасное обслуживание на [::]:4443
[rke@rke19-master1 ~]$
Рейтинг:1
флаг hk
SYN

Ошибка с кодом состояния: 404 сообщение предполагает, что вы запрашиваете адрес, который не существует.

Мы видим, что вы извлекаете какой-то тег v0.3.6 образа metrics-server. И хотя это исходит от владельца ранчо, мы можем предположить, что они придерживаются исходной версии.

Проверяя журналы изменений в апстриме, мы видим, что /ливез и /readyz были представлены в v0.4.0, см.: https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.4.0

Я бы посоветовал вам попробовать запросить /здоровье URL, который был удален из версии 0.4.0. Или измените ваши зонды httpGet на tcpSocket. Или: попробовать обновить сервер метрик до последней версии?

alammd avatar
флаг th
Привет, спасибо за ответ, Я собираюсь попробовать новую версию metric-server, очень скоро обновлю, однако, как мне это сделать? «Я бы посоветовал вам попробовать запросить URL-адрес /healthz, который был удален из версии 0.4.0. Или изменить ваши зонды httpGet на зонды tcpSocket»
SYN avatar
флаг hk
SYN
Проверьте развертывание сервера метрик в kube-system. Если вы его не найдете, мы знаем, что есть ReplicaSet (как показано в ваших ссылках владельца пода). Отредактируйте файлы livenessProbe и readinessProbe. Вы должны найти путь: замените их на `/healthz`. Или замените метод зонда `httpGet` на `tcpSocket`, где требуется только аргумент `port` / не нужно идти дальше, чем рукопожатие TCP, ему все равно, что ваш сервер говорит правильный HTTP и не возвращает с код ошибки.
alammd avatar
флаг th
Привет Супер!!! Благодаря изменению /healthz это работает~ Но почему по умолчанию он смотрел на изношенный ... это должен быть фикс для v0.3.6 от продукта?
SYN avatar
флаг hk
SYN
Я НЕ ЗНАЮ. Наверняка что-то не так, либо тег изображения, либо определение развертывания. Возможно, вы могли бы связаться с Rancher на GitHub и сообщить о своей проблеме (выберите репозиторий в зависимости от того, как был развернут ваш кластер — тег изображения предполагает, что они несут ответственность за это)
Рейтинг:0
флаг id

Я обнаружил, что тайм-ауты зонда на сервере метрик слишком агрессивны:

        готовностьзонд:
          порог отказа: 3
          httpПолучить:
            путь: /readyz
            порт: https
            схема: HTTPS
          периодСекунды: 10
          Порог успеха: 1
          таймаутСекунды: 1
        живостьзонд:
          порог отказа: 3
          httpПолучить:
            путь: /livez
            порт: https
            схема: HTTPS
          периодСекунды: 10
          Порог успеха: 1
          таймаутСекунды: 1

Что происходит, так это то, что metrics-server возвращает «ok» как на livez, так и на readyz, но обработка запросов занимает более одной секунды:

$ time curl -k https://SNIPPED:4443/livez
хорошо
реальное 0м3.081с
пользователь 0m0.031s
система 0m0.005s
$ time curl -k https://SNIPPED:4443/readyz
хорошо
реальное 0м3.206с
пользователь 0м0.020с
система 0m0.013s

Поскольку 3 секунды больше, чем 1 секунда, он не «живой» и не «готовый». Я понятия не имею, почему для ответа требуется 3 секунды, но это основная проблема, почему происходит CrashLoopBackOff.

Чтобы обойти эту проблему, можно изменить время ожидания, скажем, на 5 или 10 секунд. Использовать kubectl изменить сервер метрик -n kube-system изменить его на месте.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.