apiVersion: v1
kind: PersistentVolumeClaim
metadata:
creationTimestamp: null
labels:
io.kompose.service: pv1
name: pv1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
status: {}
这个旋转是默认storageclass设置的存储,在我的例子中是digital Ocean的卷。所以它创建了一个1GI的卷。
2)创建了如下所示的PV资源和PVC资源-
apiVersion: v1
kind: PersistentVolume
metadata:
name: task-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
creationTimestamp: null
labels:
io.kompose.service: pv1
name: pv1
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
status: {}
我看到我的索赔是绑定的。
pavan@p1:~$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pv1 Bound task-pv-volume 10Gi RWO manual 2m5s
pavan@p1:~$ kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
task-pv-volume 10Gi RWO Retain Bound default/pv1 manual 118m
pavan@p1:~$ kubectl describe pvc
Name: pv1
Namespace: default
StorageClass: manual
Status: Bound
Volume: task-pv-volume
Labels: io.kompose.service=pv1
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{},"creationTimestamp":null,"labels":{"io.kompose.service":"mo...
pv.kubernetes.io/bind-completed: yes
pv.kubernetes.io/bound-by-controller: yes
Finalizers: [kubernetes.io/pvc-protection]
Capacity: 10Gi
Access Modes: RWO
VolumeMode: Filesystem
Mounted By: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning ProvisioningFailed 28s (x8 over 2m2s) persistentvolume-controller storageclass.storage.k8s.io "manual" not found
对于问题2)如果我必须为具有所需容量的不同PVC创建不同的PV,我是否也必须创建storageclass?或者相同的存储类并使用选择器来选择相应的PV?
我试图复制所有的行为来回答你所有的问题。但是,我没有访问DigitalOcean的权限,所以我在GKE上测试了它。
上面的警告,存储类找不到,我需要创建一个吗?
根据文档和最佳实践,强烈建议创建StorageClass
,然后在此基础上创建PV/PVC。然而,有一种东西叫做“手动供应”。你在这个案子里就是这么做的。
手动配置是指需要首先手动创建PV,然后手动创建具有匹配spec.storageClassName:
字段的PVC。例子:
默认StorageClass
、pv
和StorageClassName
参数(afaik kubeadm没有提供默认的StorageClass
)-PVC将在Pending
事件:没有可用于此声明的持久卷,也没有设置存储类。默认storageclass设置
但没有StorageClassName
参数的PVC,它将基于默认storageclass创建该PVC。StorageClassName
参数创建PVC(位于云中的某个地方,Minikube或kubeadm)-PVC也将Pending
,并发出警告:未找到StorageClass.storage.k8s.io“Manual”。但是,如果您使用相同的StorageClassName
参数创建PV,它将在一段时间内被绑定。示例:
$ kubectl get pv,pvc
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
persistentvolume/task-pv-volume 10Gi RWO Retain Available manual 4s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/pv1 Pending manual 4m12s
...
kubectl get pv,pvc
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
persistentvolume/task-pv-volume 10Gi RWO Retain Bound default/pv1 manual 9s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/pv1 Bound task-pv-volume 10Gi RWO manual 4m17s
手动配置
的缺点是必须为每个PVC创建PV。如果使用StorageClass
,则只需创建PVC
即可。
如果是,你能告诉我为什么和怎么做吗?或任何指针。
您可以使用文档示例或查看此处。当您使用默认的云StorageClass
时,可以通过以下方式将其导出到yaml:$kubectl get sc-oyaml>>StorageClass.yaml
。或者如果您有多个,您必须指定哪一个。StorageClass
的名称可以通过$kubectl get sc
获得。稍后,您可以参考K8s API来定制StorageClass
。
请注意PV的存储容量为10GI,PVC的请求容量为1GI,但PVC仍然被绑定为10GI容量?
我建议您看看这个stackoverflow案例,因为它很好地解释了AccessMode
的细节。
如果我必须用所需的容量为不同的PVC创建不同的PV,我是否也必须创建storageclass?还是相同的存储类,并使用选择器选择相应的PV?
正如我之前提到的,如果您手动创建一个特定大小的PV,并与它绑定一个PVC,这要求更少,额外的空间将被浪费。因此,必须使用相同的资源请求创建PV和PVC,或者让StorageClass
根据PVC请求调整存储。
问题内容: 我有多个具有相似构建步骤的项目,并且我正在研究在这些项目中重用Jenkinsfile管道。我很难找到有关如何实现这样的标准(我认为)设置的文档。 这是我的要求: 1)Jenkinsfile存储在回购中,在多个项目之间共享 2)每个项目都有其自己的参数:项目在仓库中的位置。 3)至少从用户角度来看,每个项目在Jenkins中都应独立,这意味着,例如,执行和日志可在Jenkins中的每个项
问题内容: 我正在尝试建立一个共享库。让我们说libabc.so。它使用另一个.so文件,例如lib123.so(/ usr / local / lib中的一个lib)。现在我在我的应用程序中使用共享的liblibabc.so。说我的应用程序。我想知道我应该如何链接这些二进制文件?我不想直接将我的应用程序与lib123.so链接。my- app应该仅与libabc.so链接。我怎样才能做到这一点?
本文向大家介绍system.reactive 共享一个订阅(发布),包括了system.reactive 共享一个订阅(发布)的使用技巧和注意事项,需要的朋友参考一下 示例 给定一个IObservable<Offer>的offers从商家购买或以固定价格出售某些类型的项目,我们可以按照如下匹配对买家和卖家的: 问题在于,每个订阅trades将订阅offers两次。我们可以sellers和buyer
我有一个运行在400个TaskManager上的flink应用程序。在1小时的窗口时间内,我会更频繁地获得相同的密钥,比如说,在1500个唯一密钥中,有50个密钥会更频繁地出现。这使得很少有任务管理者单独处理的数量比其他人多。如果390个TaskManager每分钟处理50MB,那么其他10个TaskManager每分钟处理10GB。这使得系统速度非常慢。如果负载很高,我们可以与多个TaskMan
我使用jsPlumb允许用户构建图形。我允许用户拖动这些元素,所以我为每个endpoint使用锚集合,让jsPlumb在建立连接时从该集合中为我选择“最佳”锚。我遇到的问题是,我可能有多达十几个连接来自任何给定的endpoint,所以当许多人最终选择相同的“最佳”锚点时,这些连接将在视觉上分散注意力——在图中造成拥塞的外观。为了解决这个问题,我想告诉jsPlumb限制任何两个连接在endpoint