使用 Helm 安装 Prometheus 时持久卷错误
Persistent volume error when installing Prometheus using Helm
我正在尝试使用位于 https://github.com/kubernetes/charts/tree/master/stable/prometheus 的默认 prometheus helm chart 将 Prometheus 安装到我的 EKS 集群。它部署成功,但在 Kubernetes 仪表板中,AlertManager 和服务器部署显示:
pod has unbound PersistentVolumeClaims (repeated 3 times)
我尝试修改 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/
事实证明,EKS 集群不是在启用任何持久存储的情况下创建的:
Amazon EKS clusters are not created with any storage classes. You must
define storage classes for your cluster to use and you should define a
default storage class for your persistent volume claims.
This guide 解释如何为 EKS 添加 kubernetes StorageClass
按照说明添加 StorageClass、使用 helm delete prometheus --purge
删除我的 prometheus 部署并重新创建部署后,我的所有 pods 现在都可以正常运行了。
我正在尝试使用位于 https://github.com/kubernetes/charts/tree/master/stable/prometheus 的默认 prometheus helm chart 将 Prometheus 安装到我的 EKS 集群。它部署成功,但在 Kubernetes 仪表板中,AlertManager 和服务器部署显示:
pod has unbound PersistentVolumeClaims (repeated 3 times)
我尝试修改 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/
事实证明,EKS 集群不是在启用任何持久存储的情况下创建的:
Amazon EKS clusters are not created with any storage classes. You must define storage classes for your cluster to use and you should define a default storage class for your persistent volume claims.
This guide 解释如何为 EKS 添加 kubernetes StorageClass
按照说明添加 StorageClass、使用 helm delete prometheus --purge
删除我的 prometheus 部署并重新创建部署后,我的所有 pods 现在都可以正常运行了。