我有StorageClass和provisioner: kubernetes.io/aws-ebs
我有一个部署,我需要安装一些卷。所以,我需要使用这个StorageClass
这是我的sc.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
annotations:
name: gp2
parameters:
fsType: ext4
type: gp2
provisioner: kubernetes.io/aws-ebs
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer这是我的deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: postgres
namespace: var.namespace
spec:
replicas: 1
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:10.4
imagePullPolicy: "IfNotPresent"
ports:
- containerPort: 5432
envFrom:
- configMapRef:
name: postgres-config
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgredb
# how can I specify my storage class here?
volumes:
- name: postgredb
persistentVolumeClaim:
claimName: postgres-pv-claim我需要在部署中指定存储类。有人能帮我吗?
发布于 2022-05-16 13:55:19
我需要在部署中指定存储类。有人能帮我吗?
在我们回答之前,让我们先解释一下StroageClass,PersistentVolume,Persistent Volume Claim。
术语
StroageClass
StorageClass视为驱动程序(软件)。StorageClass由存储提供程序(硬件或虚拟)提供。PersistentVolume
PersistentVolume (PV)是集群中的一个存储,它已经由管理员提供或使用Storage Classes动态提供。PersistentVolumeClaim
PersistentVolumeClaim (PVC)是用户(通常为Pod)存储的请求。通用图(描述K8存储对象)

TL;DR;解释
StorageClass对象。顺便说一句,您不需要在大多数情况下定义/声明它,K8S将为您提供默认存储(emptyDir)。PersistentVolume (PV),它将根据所需的类型(StorageClass)“创建”存储。PersistentVolumeClaim (PVC)。PVC是从您在前一步中定义的(PV)中安装的“物理”存储的分配。Pod、Deployment、StatefulSet等)分配卷,这是使用volumes完成的。**说明
StorageClass或PV/PVC。只需在所需的参考资料中使用一个卷,K8S将为您处理这个问题。StaefulSet)。如果未指定StorageClass,则将使用默认StorageClass。现在让我们回答你的问题
StorageClassapiVersion: storage.k8s.io/v1
kind: StorageClass
...
provisioner: kubernetes.io/aws-ebsvolumes (如apiVersion: extensions/v1beta1
kind: Deployment
...
# --> Here you define the actual mount path you need for your pods
# The name (PVC) is corresponding to the one you
# defined below under volumes
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgredb
# ->>>> how can I specify my storage class here?
# You don't need to specify storage class, you need to define PVC,
# This is the missing piece in your code.
volumes:
- name: postgredb
persistentVolumeClaim:
claimName: postgres-pv-claim丢失的那块..。
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: postgres-pv-claim ### <<< The name as mentioned above in your Deploymnet
labels:
app: postgres
spec:
# The name of the storage class u defined earlier
storageClassName: gp2
# The access modes are:
# ReadWriteOnce - The volume can be mounted as read-write by a single node
# ReadWriteMany - The volume can be mounted as read-write by a many nodes
# ReadOnlyMany - The volume can be mounted as read-only by many nodes
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi希望它能帮到你。
https://stackoverflow.com/questions/72257944
复制相似问题