Почему модуль Prometheus ожидает обработки после его установки рулем в кластере Kubernetes на сервере Rancher?

Установлен сервер Rancher и 2 агента Rancher в Vagrant. Затем переключитесь в среду K8S с сервера Rancher.

На хосте сервера Rancher установлены kubectl и helm. Затем установил Prometheus от Helm:

helm install stable/prometheus

Теперь проверьте статус на панели управления Kubernetes, есть 2 ожидающих модуля:  введите описание изображения здесь

Он заметил PersistentVolumeClaim is not bound, так разве компоненты K8S не установлены по умолчанию с сервером Rancher?

(другое имя, та же проблема)  введите описание изображения здесь

Редактировать

> kubectl get pvc
NAME                                   STATUS    VOLUME    CAPACITY   
ACCESSMODES   STORAGECLASS   AGE
voting-prawn-prometheus-alertmanager   Pending                                                     6h
voting-prawn-prometheus-server         Pending                                                     6h
> kubectl get pv
No resources found.

Редактировать 2

$ kubectl describe pvc voting-prawn-prometheus-alertmanager
Name:          voting-prawn-prometheus-alertmanager
Namespace:     default
StorageClass:
Status:        Pending
Volume:
Labels:        app=prometheus
               chart=prometheus-4.6.9
               component=alertmanager
               heritage=Tiller
               release=voting-prawn
Annotations:   <none>
Capacity:
Access Modes:
Events:
  Type    Reason         Age                From                         Message
  ----    ------         ----               ----                         -------
  Normal  FailedBinding  12s (x10 over 2m)  persistentvolume-controller  no persistent volumes available for this claim and no storage class is set

$ kubectl describe pvc voting-prawn-prometheus-server
Name:          voting-prawn-prometheus-server
Namespace:     default
StorageClass:
Status:        Pending
Volume:
Labels:        app=prometheus
               chart=prometheus-4.6.9
               component=server
               heritage=Tiller
               release=voting-prawn
Annotations:   <none>
Capacity:
Access Modes:
Events:
  Type    Reason         Age                From                         Message
  ----    ------         ----               ----                         -------
  Normal  FailedBinding  12s (x14 over 3m)  persistentvolume-controller  no persistent volumes available for this claim and no storage class is set

person online    schedule 11.11.2017    source источник
comment
Что выводит kubectl get pvc,pv?   -  person nickgryg    schedule 11.11.2017
comment
@Nickolay Я добавил результаты вашей команды.   -  person online    schedule 11.11.2017
comment
И, пожалуйста, также добавьте вывод kubectl describe pvc <pvc_name>   -  person nickgryg    schedule 11.11.2017
comment
@Nickolay Добавлен. Edit 2   -  person online    schedule 13.11.2017
comment
@online: вы уже нашли решение? Столкнулся с той же проблемой :(   -  person genius_monkey    schedule 01.06.2018


Ответы (3)


У меня были такие же проблемы, как и у вас. Я нашел два способа решить эту проблему:

  • отредактируйте values.yaml под persistentVolumes.enabled=false, это позволит вам использовать emptyDir "это относится к Prometheus-Server и AlertManager"

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

person Abdel Hegazi    schedule 07.06.2018
comment
Это помогло мне даже на кластере с голым металлом без Rancher. - person vikas027; 25.08.2019

PV относятся к кластеру, а PVC - к пространству имен. Если ваше приложение работает в другом пространстве имен, а PVC - в другом пространстве имен, это может быть проблемой. Если да, используйте RBAC для предоставления надлежащих разрешений или поместите приложение и PVC в одно и то же пространство имен.

Можете ли вы убедиться, что PV, который создается из класса Storage, является SC по умолчанию для кластера?

person Star Lord    schedule 18.09.2018

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

kubectl apply -f storageclass.ymal 

storageclass.ymal:
    {
      "kind": "StorageClass",
      "apiVersion": "storage.k8s.io/v1",
      "metadata": {
        "name": "local-storage",
        "annotations": {
          "storageclass.kubernetes.io/is-default-class": "true"
        }
      },
      "provisioner": "kubernetes.io/no-provisioner",
      "reclaimPolicy": "Delete"

и использование класса хранилища при установке Prometheus с помощью helm

helm install stable/prometheus --set server.storageClass=local-storage

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

kubectl apply -f prometheusVolume.yaml

prometheusVolume.yaml:    
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: prometheus-volume
    spec:
      storageClassName: local-storage
      capacity:
        storage: 2Gi #Size of the volume
      accessModes:
        - ReadWriteOnce #type of access
      hostPath:
        path: "/mnt/data" #host location

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

person Karl Öhrn    schedule 05.09.2019