在使用链接influxdb2 installation on k8s中的k8s清单安装influxdb2时,我收到以下“pod has unbound immediate PersistentVolumeClaims
“错误。
说明是为minikube给出的,但我正在将其安装为普通的k8s集群。关于这个问题和如何修复有什么想法吗?。
/home/ravi#kubectl describe pod influxdb-0 -n influxdb
Name: influxdb-0
Namespace: influxdb
Priority: 0
Node: <none>
Labels: app=influxdb
controller-revision-hash=influxdb-78bc684b99
statefulset.kubernetes.io/pod-name=influxdb-0
Annotations: <none>
Status: Pending
IP:
IPs: <none>
Controlled By: StatefulSet/influxdb
Containers:
influxdb:
Image: influxdb:2.0.6
Port: 8086/TCP
Host Port: 0/TCP
Environment: <none>
Mounts:
/var/lib/influxdb2 from data (rw)
/var/run/secrets/kubernetes.io/serviceaccount from default-token-k9d8t (ro)
Conditions:
Type Status
PodScheduled False
Volumes:
data:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: data-influxdb-0
ReadOnly: false
default-token-k9d8t:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-k9d8t
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling <unknown> default-scheduler pod has unbound immediate PersistentVolumeClaims
Warning FailedScheduling <unknown> default-scheduler pod has unbound immediate PersistentVolumeClaims
/home/ravi#
流入db2 yaml文件
---
apiVersion: v1
kind: Namespace
metadata:
name: influxdb
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app: influxdb
name: influxdb
namespace: influxdb
spec:
replicas: 1
selector:
matchLabels:
app: influxdb
serviceName: influxdb
template:
metadata:
labels:
app: influxdb
spec:
containers:
- image: influxdb:2.0.6
name: influxdb
ports:
- containerPort: 8086
name: influxdb
volumeMounts:
- mountPath: /var/lib/influxdb2
name: data
volumeClaimTemplates:
- metadata:
name: data
namespace: influxdb
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10G
---
apiVersion: v1
kind: Service
metadata:
name: influxdb
namespace: influxdb
spec:
ports:
- name: influxdb
port: 8086
targetPort: 8086
selector:
app: influxdb
type: ClusterIP
k8s版本
/home/ravi#kubectl version
Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.0", GitCommit:"2bd9643cee5b3b3a5ecbd3af49d09018f0773c77", GitTreeState:"clean", BuildDate:"2019-09-18T14:36:53Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.0", GitCommit:"2bd9643cee5b3b3a5ecbd3af49d09018f0773c77", GitTreeState:"clean", BuildDate:"2019-09-18T14:27:17Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
/home/ravi>sudo kubectl get pvc -A
NAMESPACE NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
influxdb data-influxdb-0 Pending 4h41m
ricplt pvc-ricplt-alarmmanager Bound pv-ricplt-alarmmanager 100Mi RWO local-storage 5h17m
ricplt pvc-ricplt-e2term-alpha Bound pv-ricplt-e2term-alpha 100Mi RWO local-storage 5h18m
ricplt r4-influxdb-influxdb2 Pending 32m
/home/ravi>
/home/ravi>
/home/ravi>
/home/ravi>sudo kubectl describe pvc data-influxdb-0 -n influxdb
Name: data-influxdb-0
Namespace: influxdb
StorageClass:
Status: Pending
Volume:
Labels: app=influxdb
Annotations: <none>
Finalizers: [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode: Filesystem
Mounted By: influxdb-0
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal FailedBinding 2m12s (x1021 over 4h17m) persistentvolume-controller no persistent volumes available for this claim and no storage class is set
/home/ravi>
2条答案
按热度按时间mqkwyuun1#
正如@Akathimi评论的那样,这是因为配置程序不会创建任何PD,因为CSI驱动程序被禁用。
6ovsh4lw2#
您正在运行的k8s群集似乎没有自动资源调配。您需要由群集管理员在本地群集上手动创建永久卷和存储类。
创建一个预配程序,并将其传递给您的存储类,然后将该存储类提供给持久性卷模板以创建自动PVC和PV。
请参阅Configure a Pod to Use a PersistentVolume for Storage上的官方kubernetes文档,它可能有助于解决您的问题。
配置Pod以使用PersistentVolumeClaim进行存储。以下是该过程的摘要:
1.作为群集管理员,您需要创建一个由物理存储支持的PersistentVolume。您不需要将该卷与任何Pod关联。
1.您现在扮演开发人员/集群用户的角色,创建自动绑定到合适的PersistentVolume的PersistentVolumeClaim。
1.您创建一个Pod,该Pod使用上述PersistentVolumeClaim进行存储。
也可以尝试将
accessModes: ReadWriteMany
更改为所有pod都可以访问的卷。如果每个pod都希望拥有自己的目录,则需要使用subPath
。请参阅Kubernetes官方文档中的使用子路径,如下所示: