当我出于某种原因 push 部署时,我在Pod上收到错误消息:
以下是我的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将启用“Dynamic Volume Provisioning” ,它不适用于本地文件系统。
解决您的问题:
storageClass
-line这些乐段如何一起演奏?
在创建部署状态描述时,通常知道应用程序需要哪种存储(量,速度,...)。
为了使部署具有通用性,您希望避免对存储的严格依赖。 Kubernetes的卷抽象可让您以标准化方式提供和使用存储。
PersistentVolumeClaim 用于在应用程序部署的同时提供存储约束。
PersistentVolume 提供了准备使用的群集范围内的卷实例(“
bound
”)。一个PersistentVolume将绑定(bind)到一个声明。但是由于该声明的多个实例可以在多个节点上运行,因此该卷可能由多个节点accessed。不带StorageClass的 PersistentVolume的被认为是静态。
"Dynamic Volume Provisioning"与以及和 StorageClass一起允许集群按需配置PersistentVolume。
为了使该工作正常进行,给定的存储提供者必须支持provisioning-当出现不满意的 PersistentVolumeClaim 弹出窗口时,群集允许集群请求提供“新的” 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
卷,该卷将本地目录映射为该卷的内容。该容量使资源调度程序可以根据资源需求来识别此卷。其他资源: