4

在 Vagrant 中安装了 Rancher 服务器和 2 个 Rancher 代理。然后从 Rancher 服务器切换到 K8S 环境。

在 Rancher 服务器主机上,安装kubectlhelm. 然后安装PrometheusHelm

helm install stable/prometheus

现在从 Kubernetes 仪表板检查状态,有 2 个 Pod 待处理: 在此处输入图像描述

它注意到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
4

3 回答 3

6

我和你有同样的问题。我找到了两种方法来解决这个问题:

  • values.yaml在此编辑persistentVolumes.enabled=false将允许您使用emptyDir“这适用于 Prometheus-Server 和 AlertManager”

  • 如果您无法更改values.yaml,则必须在部署图表之前创建 PV,以便 pod 可以绑定到卷,否则它将永远处于挂起状态

于 2018-06-07T00:44:11.520 回答
1

PV 是集群作用域,PVC 是命名空间作用域。如果您的应用程序在不同的命名空间中运行,而 PVC 在不同的命名空间中运行,则可能会出现问题。如果是,请使用 RBAC 授予适当的权限,或者将 app 和 PVC 放在同一个命名空间中。

你能确定从 Storage 类创建的 PV 是集群的默认 SC 吗?

于 2018-09-18T19:26:50.443 回答
0

我发现我缺少存储类和存储卷。通过首先创建一个存储类来修复我的集群上的类似问题。

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"

以及在使用 helm 安装 Prometheus 时使用存储类

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

我还被迫为 Prometheus 创建一个卷来绑定

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

您可以使用其他存储类,发现有很多选择,但可能需要其他步骤才能使其正常工作。

于 2019-09-05T07:46:49.527 回答