在Vagrant中安装了Rancher服务器和2个Rancher代理。然后从Rancher服务器切换到K8S环境。
在Rancher服务器主机上,已安装kubectl
和helm
。然后按Prometheus
安装了Helm
:
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.
$ 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
答案 0 :(得分:0)
我有两个方法可以解决这个问题:
在persistentVolumes.enabled = false下编辑values.yaml这将允许您使用emptyDir“这适用于Prometheus-Server和AlertManager”
如果您无法更改values.yaml,则必须在部署图表之前创建PV,以便pod可以绑定到卷,否则它将永远保持挂起状态
希望这会有所帮助
答案 1 :(得分:0)
PV是群集作用域,PVC是命名空间作用域。 如果您的应用程序在其他名称空间中运行,而PVC在其他名称空间中运行,则可能会出现问题。 如果是,请使用RBAC授予适当的权限,或将应用程序和PVC放在相同的名称空间中。
您可以确保从Storage类创建的PV是群集的默认SC吗?
答案 2 :(得分: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"
以及在安装带有头盔的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
您可以使用其他存储类,发现在它们之间有很多选择,但是可能还需要其他步骤才能使其工作。