【问题标题】:Persistent volume error when installing Prometheus using Helm使用 Helm 安装 Prometheus 时出现持续卷错误
【发布时间】:2018-11-29 18:45:34
【问题描述】:

我正在尝试使用位于 https://github.com/kubernetes/charts/tree/master/stable/prometheus 的默认 prometheus helm 图表将 Prometheus 安装到我的 EKS 集群。它部署成功,但在 Kubernetes 仪表板中,AlertManager 和服务器部署显示:

pod 有未绑定的 PersistentVolumeClaims(重复 3 次)

我尝试修改 values.yaml 文件无济于事。

我知道这没什么好做的,但我不确定在日志记录方面我还能查到什么。

这是运行helm install stable/prometheus --name prometheus --namespace prometheus的输出

root@fd9c3cc3f356:~/charts# helm install stable/prometheus --name prometheus --namespace prometheus
NAME:   prometheus
LAST DEPLOYED: Wed Jun 20 14:55:41 2018
NAMESPACE: prometheus
STATUS: DEPLOYED

RESOURCES:
==> v1beta1/ClusterRole
NAME                           AGE
prometheus-kube-state-metrics  1s
prometheus-server              1s

==> v1/ServiceAccount
NAME                           SECRETS  AGE
prometheus-alertmanager        1        1s
prometheus-kube-state-metrics  1        1s
prometheus-node-exporter       1        1s
prometheus-pushgateway         1        1s
prometheus-server              1        1s

==> v1/PersistentVolumeClaim
NAME                     STATUS   VOLUME  CAPACITY  ACCESS MODES  STORAGECLASS  AGE
prometheus-alertmanager  Pending  1s
prometheus-server        Pending  1s

==> v1beta1/ClusterRoleBinding
NAME                           AGE
prometheus-kube-state-metrics  1s
prometheus-server              1s

==> v1/Service
NAME                           TYPE       CLUSTER-IP      EXTERNAL-IP  PORT(S)   AGE
prometheus-alertmanager        ClusterIP  10.100.3.32     <none>       80/TCP    1s
prometheus-kube-state-metrics  ClusterIP  None            <none>       80/TCP    1s
prometheus-node-exporter       ClusterIP  None            <none>       9100/TCP  1s
prometheus-pushgateway         ClusterIP  10.100.243.103  <none>       9091/TCP  1s
prometheus-server              ClusterIP  10.100.144.15   <none>       80/TCP    1s

==> v1beta1/DaemonSet
NAME                      DESIRED  CURRENT  READY  UP-TO-DATE  AVAILABLE  NODE SELECTOR  AGE
prometheus-node-exporter  3        3        2      3           2          <none>         1s

==> v1beta1/Deployment
NAME                           DESIRED  CURRENT  UP-TO-DATE  AVAILABLE  AGE
prometheus-alertmanager        1        1        1           0          1s
prometheus-kube-state-metrics  1        1        1           0          1s
prometheus-pushgateway         1        1        1           0          1s
prometheus-server              1        1        1           0          1s

==> v1/Pod(related)
NAME                                            READY  STATUS             RESTARTS  AGE
prometheus-node-exporter-dklx8                  0/1    ContainerCreating  0         1s
prometheus-node-exporter-hphmn                  1/1    Running            0         1s
prometheus-node-exporter-zxcnn                  1/1    Running            0         1s
prometheus-alertmanager-6df98765f4-l9vq2        0/2    Pending            0         1s
prometheus-kube-state-metrics-6584885ccf-8md7c  0/1    ContainerCreating  0         1s
prometheus-pushgateway-5495f55cdf-brxvr         0/1    ContainerCreating  0         1s
prometheus-server-5959898967-fdztb              0/2    Pending            0         1s

==> v1/ConfigMap
NAME                     DATA  AGE
prometheus-alertmanager  1     1s
prometheus-server        3     1s


NOTES:
The Prometheus server can be accessed via port 80 on the following DNS name from within your cluster:
prometheus-server.prometheus.svc.cluster.local


Get the Prometheus server URL by running these commands in the same shell:
  export POD_NAME=$(kubectl get pods --namespace prometheus -l "app=prometheus,component=server" -o jsonpath="{.items[0].metadata.name}")
  kubectl --namespace prometheus port-forward $POD_NAME 9090


The Prometheus alertmanager can be accessed via port 80 on the following DNS name from within your cluster:
prometheus-alertmanager.prometheus.svc.cluster.local


Get the Alertmanager URL by running these commands in the same shell:
  export POD_NAME=$(kubectl get pods --namespace prometheus -l "app=prometheus,component=alertmanager" -o jsonpath="{.items[0].metadata.name}")
  kubectl --namespace prometheus port-forward $POD_NAME 9093


The Prometheus PushGateway can be accessed via port 9091 on the following DNS name from within your cluster:
prometheus-pushgateway.prometheus.svc.cluster.local


Get the PushGateway URL by running these commands in the same shell:
  export POD_NAME=$(kubectl get pods --namespace prometheus -l "app=prometheus,component=pushgateway" -o jsonpath="{.items[0].metadata.name}")
  kubectl --namespace prometheus port-forward $POD_NAME 9091

For more information on running Prometheus, visit:
https://prometheus.io/

【问题讨论】:

  • 例如kubectl describe pvc prometheus-alertmanager 的输出是什么?

标签: kubernetes prometheus kubernetes-helm amazon-eks


【解决方案1】:

事实证明,EKS 集群不是在启用任何持久存储的情况下创建的:

Amazon EKS 集群不是使用任何存储类创建的。你必须 定义集群使用的存储类,你应该定义一个 持久卷声明的默认存储类。

This guide 解释如何为 EKS 添加 kubernetes StorageClass

按照说明添加 StorageClass,使用 helm delete prometheus --purge 删除我的 prometheus 部署并重新创建部署后,我的所有 pod 现在都可以正常工作了。

【讨论】:

    猜你喜欢
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 2020-02-19
    • 1970-01-01
    相关资源
    最近更新 更多