我通过调用创建了以下持久卷
kubectl create -f nameOfTheFileContainingTheFollowingContent.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-monitoring-static-content
spec:
capacity:
storage: 100Mi
accessModes:
- ReadWriteOnce
hostPath:
path: "/some/path"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pv-monitoring-static-content-claim
spec:
accessModes:
- ReadWriteOnce
storageClassName: ""
resources:
requests:
storage: 100Mi
Run Code Online (Sandbox Code Playgroud)
在此之后我试图删除pvc.但这个命令卡住了.在打电话时kubectl describe pvc pv-monitoring-static-content-claim我得到以下结果
Name: pv-monitoring-static-content-claim
Namespace: default
StorageClass:
Status: Terminating (lasts 5m)
Volume: pv-monitoring-static-content
Labels: <none>
Annotations: pv.kubernetes.io/bind-completed=yes
pv.kubernetes.io/bound-by-controller=yes
Finalizers: [foregroundDeletion]
Capacity: 100Mi
Access Modes: RWO
Events: <none>
Run Code Online (Sandbox Code Playgroud)
并为 kubectl describe pv pv-monitoring-static-content
Name: pv-monitoring-static-content
Labels: <none> …Run Code Online (Sandbox Code Playgroud) 我创建了一个源自Google Compute Engine永久磁盘的PersistentVolume,我已经格式化并提供了数据.Kubernetes说PersistentVolume可用.
kind: PersistentVolume
apiVersion: v1
metadata:
name: models-1-0-0
labels:
name: models-1-0-0
spec:
capacity:
storage: 200Gi
accessModes:
- ReadOnlyMany
gcePersistentDisk:
pdName: models-1-0-0
fsType: ext4
readOnly: true
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个PersistentVolumeClaim,以便我可以将此卷附加到多个节点上的多个pod.然而,kubernetes无限期地说它处于待决状态.
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: models-1-0-0-claim
spec:
accessModes:
- ReadOnlyMany
resources:
requests:
storage: 200Gi
selector:
matchLabels:
name: models-1-0-0
Run Code Online (Sandbox Code Playgroud)
任何见解?我觉得选择器可能有问题......
甚至可以预先配置一个包含数据的永久磁盘,并且多个节点上的pod都可以从中读取吗?
我正在尝试删除 Kubernetes 集群上的持久卷。我运行了以下命令:
kubectl delete pv pvc-08e65270-b7ce-11e9-ba0b-0a1e280502e2 pvc-08e87826-b7ce-11e9-ba0b-0a1e280502e2 pvc-08ea5f97-b7ce-11e9-ba0b-0a1e280502e2 pvc-08ec1cac-b7ce-11e9-ba0b-0a1e280502e2
Run Code Online (Sandbox Code Playgroud)
然而它显示:
persistentvolume "pvc-08e65270-b7ce-11e9-ba0b-0a1e280502e2" deleted
persistentvolume "pvc-08e87826-b7ce-11e9-ba0b-0a1e280502e2" deleted
persistentvolume "pvc-08ea5f97-b7ce-11e9-ba0b-0a1e280502e2" deleted
persistentvolume "pvc-08ec1cac-b7ce-11e9-ba0b-0a1e280502e2" deleted
Run Code Online (Sandbox Code Playgroud)
但是命令没有退出。所以我CONTROL+C强制退出命令。几分钟后,我跑了:
kubectl get pv
Run Code Online (Sandbox Code Playgroud)
状态为Terminating,但卷似乎没有删除。
如何删除这些持久卷?
根据这个官方文档,Kubernetes Persistent Volumes 支持三种类型的访问模式。
文档中对它们的给定定义是非常高级的。如果有人可以更详细地解释它们以及我们应该使用一个与另一个的不同用例的一些示例,那就太好了。
使用案例:
我有一个可用的NFS目录,我想用它来保存多个部署和pod的数据.
我创建了一个PersistentVolume:
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
nfs:
server: http://mynfs.com
path: /server/mount/point
Run Code Online (Sandbox Code Playgroud)
我希望多个部署能够使用它PersistentVolume,所以我对所需内容的理解是我需要创建多个PersistentVolumeClaims,这些都将指向此PersistentVolume.
kind: PersistentVolumeClaim
apiVersion: v1
metaData:
name: nfs-pvc-1
namespace: default
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 50Mi
Run Code Online (Sandbox Code Playgroud)
我相信这会创造一个50MB的索赔PersistentVolume.当我跑步时kubectl get pvc,我看到:
NAME STATUS VOLUME CAPACITY ACCESSMODES AGE
nfs-pvc-1 Bound nfs-pv 10Gi RWX 35s
Run Code Online (Sandbox Code Playgroud)
我不明白为什么我看到10Gi容量,而不是50Mi.
当我然后更改PersistentVolumeClaim部署yaml以创建名为的PVC时,nfs-pvc-2我得到:
NAME STATUS VOLUME CAPACITY ACCESSMODES AGE
nfs-pvc-1 …Run Code Online (Sandbox Code Playgroud) 从pod接收错误:
initdb:目录"/ var/lib/postgresql/data"存在但不是空它包含一个lost + found目录,可能是因为它是一个挂载点.建议不要直接使用挂载点作为数据目录.在挂载点下创建一个子目录.
为什么pod无法使用此路径?我在minikube上尝试过相同的测试.我没有遇到任何问题.
那么在Kubernete中使用Aws EBS正确安装postgresql卷的方法是什么,允许重新创建的pod可以重用存储在EBS中的初始数据库?
我尝试设置kubernetes集群.我有持久Volomue,持久卷声明和存储类所有设置和运行,但是当我想从部署创建pod时,pod已创建但挂起处于Pending状态.在描述之后,我只获得了这个warnig"1个节点有卷节点亲和性冲突".有人能告诉我我的音量配置中缺少什么吗?
apiVersion: v1
kind: PersistentVolume
metadata:
creationTimestamp: null
labels:
io.kompose.service: mariadb-pv0
name: mariadb-pv0
spec:
volumeMode: Filesystem
storageClassName: local-storage
local:
path: "/home/gtcontainer/applications/data/db/mariadb"
accessModes:
- ReadWriteOnce
capacity:
storage: 2Gi
claimRef:
namespace: default
name: mariadb-claim0
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/cvl-gtv-42.corp.globaltelemetrics.eu
operator: In
values:
- master
status: {}Run Code Online (Sandbox Code Playgroud)
我们配置了 EKS 设置,其中使用基于云原生 Buildpacks 的 Tekton Pipeline,但我们PipelineRuns在没有获取 Pod 资源的情况下永远陷入困境并处于等待状态。我们创建了一个 PersistentVolumeClaim,如下所示:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: buildpacks-source-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mi
Run Code Online (Sandbox Code Playgroud)
创建后查看此 PVC 的事件,发现以下事件表明我们的 EKS 设置出现问题:
该命令kubectl describe pvc buildpacks-source-pvc给出以下事件消息:
Name: buildpacks-source-pvc
Namespace: default
StorageClass: gp2
Status: Pending
Volume:
Labels: <none>
Annotations: volume.beta.kubernetes.io/storage-provisioner: ebs.csi.aws.com
volume.kubernetes.io/selected-node: ip-999-99-99-99.eu-central-1.compute.internal
volume.kubernetes.io/storage-provisioner: ebs.csi.aws.com
Finalizers: [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode: Filesystem
Used By: affinity-assistant-0b3d266b91-0
affinity-assistant-53a7c08baf-0
affinity-assistant-a375f28de3-0
affinity-assistant-e8cb1a6e15-0
buildpacks-test-pipeline-run-9rz4l-fetch-repository-pod
Events:
Type Reason Age From Message
---- ------ …Run Code Online (Sandbox Code Playgroud) amazon-ebs amazon-web-services kubernetes persistent-volumes amazon-eks
我想监控集群中持久卷的磁盘使用情况。我正在使用CoreOS Kube Prometheus。仪表板正在尝试使用名为kubelet_volume_stats_capacity_bytes的指标进行查询,该指标从 v1.12 开始的 Kubernetes 版本不再可用。
我正在使用 Kubernetes 版本 v1.13.4 和hostpath-provisioner根据持久卷声明来配置卷。我想访问每个持久卷的当前磁盘使用指标。
kube_persistentvolumeclaim_resource_requests_storage_bytes可用,但它仅以字节为单位显示持久声明请求
container_fs_usage_bytes没有完全涵盖我的问题。
metrics kubernetes prometheus persistent-volumes kubernetes-pvc
我最近开始在本地集群中使用 NFS 卷。这对我来说是最简单和最好的解决方案,但在实际的安装选项方面似乎相当有限。
是否可以在volume.yml 文件中的节点/集群上设置挂载选项?
我的应用程序需要特定版本以及这些性能安装选项。
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs
spec:
capacity:
storage: 1Mi
accessModes:
- ReadWriteMany
nfs:
# FIXME: use the right IP
server: 10.244.1.4
path: "/"
Run Code Online (Sandbox Code Playgroud)
无论如何要在这里添加安装标志吗?
kubernetes ×10
docker ×2
nfs ×2
amazon-ebs ×1
amazon-eks ×1
aws-ebs ×1
metrics ×1
performance ×1
postgresql ×1
prometheus ×1