Установка Grafana Loki через Helm, ожидающие поды с: 0/2 узлов доступны: 1 Слишком много подов, 1 узел(ы) имел невыносимое загрязнение

Вопрос или проблема

У меня есть следующие значения Helm для моего развертывания Loki, работающего на AWS EKS. У меня 2 узла, один из которых я хочу использовать для общих приложений, а другой для моих производственных приложений.

yaml


serviceAccount:
  create: true
  name: loki-s3-storage-policy
  imagePullSecrets: []
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::1234567:role/AmazonEKS_EBS_CSI_DriverRole
  automountServiceAccountToken: true

loki:
  schemaConfig:
    configs:
      - from: "2024-04-01"
        store: tsdb
        object_store: s3
        schema: v13
        index:
          prefix: loki_index_
          period: 24h
  storage_config:
    aws:
      region: eu-west-1
      bucketnames: testing.api.logs.chunks
      s3forcepathstyle: false
  pattern_ingester:
    enabled: true
  limits_config:
    allow_structured_metadata: true
    volume_enabled: true
    retention_period: 672h
  querier:
    max_concurrent: 4

  storage:
    type: s3
    bucketNames:
      chunks: testing.api.logs.chunks
      ruler: testing.api.logs.ruler
      admin: testing.api.logs.admin
    s3:
      endpoint: null
      region: eu-west-1
      secretAccessKey: null
      accessKeyId: null
      s3ForcePathStyle: false
      insecure: false

deploymentMode: SimpleScalable

backend:
  replicas: 1
read:
  replicas: 1
write:
  replicas: 1

minio:
  enabled: false

nodeSelector:
  nodeGroup: testing-node-group-t3-large

tolerations:
  - key: "dedicated"
    operator: "Equal"
    value: "production"
    effect: "NoExecute"

Я выполнил следующую команду:

helm install --values .\values.yml loki grafana/loki -n loki

Я также попробовал:

helm install loki grafana/loki-simple-scalable --set read.replicas=2 --set write.replicas=2 --set loki.auth_enabled=false --values .\values.yml -n loki
Однако я постоянно вижу следующее предупреждение в своих подах:

bash

kubectl describe pod/loki-backend-0 -n loki
sql

Предупреждение FailedScheduling 4m18s (x2 over 9m25s) default-scheduler
0/2 узлов доступны: 1 Слишком много подов, 1 узел(ов) имел неразрешенную
загрязненность {dedicated: production}. предвосхищение: 0/2 узлов доступны: 1
Нет жертв для предвосхищения для входящего пода, 1 Предвосхищение не
помогает для планирования

Я добавил загрязненность к одному из своих узлов, чтобы разрешить планирование только для производственных приложений. У моего производственного приложения есть следующее терпение:

yaml

tolerations:
  - key: "dedicated"
    operator: "Equal"
    value: "production"
    effect: "NoExecute"

Я пытался добавить то же самое терпение в мои значения Loki (см. внизу значений), но это не работает. Предпочтительно, я хотел бы, чтобы поды Loki планировались на узле без загрязнений, но на данном этапе мне просто нужно, чтобы они работали.

Кто-нибудь может помочь мне с следующим?

Как я могу добавить терпимость к развертыванию Loki?
Как я могу гарантировать, что поды Loki будут планироваться только на узлах без загрязнений?

Ответ или решение

Для успешной установки Grafana Loki в кластер EKS (Amazon Elastic Kubernetes Service) необходимо правильно настроить манифесты и учесть особенности распределения подов на узлах кластера. В вашей ситуации наблюдаются проблемы с размещением подов Loki из-за настроек тантов и селекторов узлов. Давайте подробно рассмотрим, как можно решить ваши проблемы.

Проблема: Необходимость в распределении подов Loki на некондиционные узлы

Вы уже имеете два узла, из которых один предназначен для приложений с высоким приоритетом (production), который имеет тант с ключом dedicated и значением production. Это ограничивает возможность размещения подов без соответствующих толерантностей на узле с данным тантом.

Решение:

  1. Добавление толерантности к подам Loki:
    Вам необходимо добавить правильную толерантность для подов Loki в ваш файл значений Helm (values.yml). Однако, если вы хотите, чтобы Loki поды могли размещаться на узлах без тантов, вам нужно также убедиться, что у подов Loki есть нужные толерантности.

    В вашем файле values.yml добавьте следующий блок в раздел tolerations:

    tolerations:
     - key: "dedicated"
       operator: "Equal"
       value: "production"
       effect: "NoExecute"
     - key: "dedicated"
       operator: "Equal"
       value: "testing" # или любое другое значение, которое соответствует вашим узлам
       effect: "NoExecute"

    Это позволит подам Loki размещаться на узлах, которые не имеют тантов или имеют менее строгие ограничения.

  2. Обновление селектора узлов:
    Если вы хотите, чтобы поды Loki запускались только на узлах, которые не имеют тантов, вам нужно изменить настройки nodeSelector. Текущая настройка nodeSelector указывает на группу узлов testing-node-group-t3-large. Убедитесь, что на этом узле отсутствуют танты.

    Если вы хотите, чтобы поды Loki автоматически размещались на узлах без тантов, измените nodeSelector следующим образом:

    nodeSelector: {} # Это позволит подам Loki размещаться на любых доступных узлах без ограничений

    Если вы хотите осознанно указать узлы, то вы должны настроить селектор таким образом, чтобы он указывал на группу узлов, где нет тантов.

Примеры установки

После внесения изменений в ваш файл values.yml, повторите установку с помощью Helm:

helm install --values ./values.yml loki grafana/loki -n loki

или

helm upgrade --install loki grafana/loki-simple-scalable --values ./values.yml -n loki

Проверка состояния подов

После этого проверьте статус подов с помощью следующей команды:

kubectl get pods -n loki

И для получения информации о том, где размещены поды:

kubectl get pods -n loki -o wide

Эти команды дадут вам ясное представление о том, удается ли вам правильно распределить поды Loki по узлам кластера.

Заключение

Убедитесь, что все изменения отражены в вашем values.yml, а затем выполните установку. Это должно решить вашу проблему с размещением подов Loki на узлах без тантов. Если у вас возникнут дополнительные вопросы или потребуется дальнейшая помощь, не стесняйтесь обращаться за поддержкой!

Оцените материал
Добавить комментарий

Капча загружается...