问题描述
我正在尝试将PersistentVolumeClaims
设置为我的广告连播。现在的问题是,deployment
成功时,吊舱处于pending
状态。当我尝试描述豆荚时,我得到一个错误,为什么它们不能像下面这样旋转:
警告失败计划20秒(x3超过22秒)的默认调度程序0/3个节点可用:1个节点有污点{node-role.kubernetes.io/master:},容器无法容忍,2个pod具有未绑定的立即PersistentVolumeClaims。
这是用于创建持久卷并在部署中引用它的yaml
kind: PersistentVolumeClaim
apiVersion: v1
Metadata:
name: my-pvc
namespace: mongo
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
---
apiVersion: apps/v1
kind: Deployment
Metadata:
name: mongodb-deployment
namespace: mongo
labels:
name: mongodb
spec:
replicas: 1
selector:
matchLabels:
app: mongodb
template:
Metadata:
labels:
app: mongodb
spec:
containers:
- name: mongodb
image: mongo
ports:
- containerPort: 27017
env:
- name: MONGO_INITDB_ROOT_USERNAME
valueFrom:
secretKeyRef:
name: mongodb-secret
key: mongo-username
- name: MONGO_INITDB_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mongodb-secret
key: mongo-password
volumeMounts:
- name: data
mountPath: /data/db
volumes:
- name: data
persistentVolumeClaim:
claimName: my-pvc
---
apiVersion: apps/v1
kind: Deployment
Metadata:
name: mongo-express
namespace: mongo
labels:
app: mongo-express
spec:
replicas: 1
selector:
matchLabels:
app: mongo-express
template:
Metadata:
labels:
app: mongo-express
spec:
containers:
- name: mongo-express
image: mongo-express
ports:
- containerPort: 8081
env:
- name: ME_CONfig_MONGODB_SERVER
valueFrom:
configMapKeyRef:
name: mongodb-url
key: database_url
- name: ME_CONfig_MONGODB_ADMINUSERNAME
valueFrom:
secretKeyRef:
name: mongodb-secret
key: mongo-username
- name: ME_CONfig_MONGODB_ADMINPASSWORD
valueFrom:
secretKeyRef:
name: mongodb-secret
key: mongo-password
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
persistentVolumeClaim:
claimName: my-pvc
---
.
.
.
我从上面删除了其他yaml配置,并保留了必要的配置以便于阅读。
当我尝试使用kubectl get pvc -n mongo
查看pvc的状态时,我得到以下pending
的状态
my-pvc待处理9分54秒
有人可以告诉我我做错了什么吗?
解决方法
如answer to pod has unbound PersistentVolumeClaims中所述,如果您使用PersistentVolumeClaim
,则通常需要卷供应商来进行动态卷供应。较大的云提供商通常具有此功能,Minikube也具有可以启用的功能。
除非集群中有卷配置程序,否则您需要创建PersistentVolume资源,还可能需要创建StorageClass并声明如何使用存储系统。
Configure a Pod to Use a PersistentVolume for Storage介绍了如何使用PersistentVolume
创建hostPath
的{{1}},这可能对学习或开发很有用,但通常不被应用程序用于生产。