gpt4 book ai didi

kubernetes - pod 具有未绑定(bind)的 PersistentVolumeClaims

转载 作者:行者123 更新时间:2023-12-03 06:52:48 26 4
gpt4 key购买 nike

当我推送部署时,由于某种原因,我的 pod 上出现错误:

pod has unbound PersistentVolumeClaims

下面是我的 YAML:

这是在本地运行的,而不是在任何云解决方案上运行。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.16.0 ()
creationTimestamp: null
labels:
io.kompose.service: ckan
name: ckan
spec:
replicas: 1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
io.kompose.service: ckan
spec:
containers:
image: slckan/docker_ckan
name: ckan
ports:
- containerPort: 5000
resources: {}
volumeMounts:
- name: ckan-home
mountPath: /usr/lib/ckan/
subPath: ckan
volumes:
- name: ckan-home
persistentVolumeClaim:
claimName: ckan-pv-home-claim
restartPolicy: Always
status: {}
<小时/>
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: ckan-pv-home-claim
labels:
io.kompose.service: ckan
spec:
storageClassName: ckan-home-sc
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
volumeMode: Filesystem
---
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: ckan-home-sc
provisioner: kubernetes.io/no-provisioner
mountOptions:
- dir_mode=0755
- file_mode=0755
- uid=1000
- gid=1000

最佳答案

您必须定义一个PersistentVolume,提供供PersistentVolumeClaim 使用的磁盘空间。

使用storageClass时,Kubernetes 将启用“动态卷配置”,该功能不适用于本地文件系统。

<小时/>

解决您的问题:

  • 提供一个满足声明约束的持久卷(大小 >= 100Mi)
  • PersistentVolumeClaim 中删除 storageClass 或为其提供空值 ("")
  • 从集群中删除StorageClass
<小时/>

这些部分如何一起发挥作用?

在创建部署状态描述时,通常知道应用程序需要哪种存储(数量、速度……)。
为了使部署具有多功能性,您希望避免对存储的严格依赖。 Kubernetes 的卷抽象允许您以标准化方式提供和使用存储。

PersistentVolumeClaim 用于在部署应用程序的同时提供存储约束。

持久卷提供可供使用的集群范围卷实例(“绑定(bind)”)。一个 PersistentVolume 将与一个声明绑定(bind)。但由于该声明的多个实例可能在多个节点上运行,因此该卷可能是 accessed通过多个节点。

不带 StorageClass 的持久卷被视为静态

"Dynamic Volume Provisioning"一起,StorageClass允许集群按需配置PersistentVolume。为了实现这一点,给定的存储提供商必须支持 provisioning - 这允许集群在弹出不满意的 PersistentVolumeClaim 时请求配置"new"PersistentVolume

<小时/>

持久卷示例

为了了解如何指定内容,建议您查看 API for your Kubernetes version ,因此以下示例是从 API-Reference of K8S 1.17 构建的:

apiVersion: v1
kind: PersistentVolume
metadata:
name: ckan-pv-home
labels:
type: local
spec:
capacity:
storage: 100Mi
hostPath:
path: "/mnt/data/ckan"

PersistentVolumeSpec 允许我们定义多个属性。我选择了一个 hostPath 卷,它将本地目录映射为该卷的内容。该容量允许资源调度程序根据资源需求识别该卷是否适用。

<小时/>

其他资源:

关于kubernetes - pod 具有未绑定(bind)的 PersistentVolumeClaims,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52668938/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com