如文档所述:
对于StatefulSet中定义的每个VolumeClaimTemplate条目,每个Pod都将收到一个PersistentVolumeClaim。在上面的nginx示例中,每个Pod都将收到一个PersistentVolume,其StorageClass为my-storage-class,并具有1 Gib的已配置存储。如果未指定StorageClass,则将使用默认StorageClass。当Pod(重新)调度到节点上时,其volumeMounts将装载与其PersistentVolume声明关联的PersistentVolumes。请注意,当Pod、或StatefulSet。这必须手动完成。
我感兴趣的部分是:If no StorageClassis specified, then the default StorageClass will be used
我创建了一个StatefulSet,如下所示:
apiVersion: apps/v1
kind: StatefulSet
metadata:
namespace: ches
name: ches
spec:
serviceName: ches
replicas: 1
selector:
matchLabels:
app: ches
template:
metadata:
labels:
app: ches
spec:
serviceAccountName: ches-serviceaccount
nodeSelector:
ches-worker: "true"
volumes:
- name: data
hostPath:
path: /data/test
containers:
- name: ches
image: [here I have the repo]
imagePullPolicy: Always
securityContext:
privileged: true
args:
- server
- --console-address
- :9011
- /data
env:
- name: MINIO_ACCESS_KEY
valueFrom:
secretKeyRef:
name: ches-keys
key: access-key
- name: MINIO_SECRET_KEY
valueFrom:
secretKeyRef:
name: ches-keys
key: secret-key
ports:
- containerPort: 9000
hostPort: 9011
resources:
limits:
cpu: 100m
memory: 200Mi
volumeMounts:
- name: data
mountPath: /data
imagePullSecrets:
- name: edge-storage-token
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
当然,我已经创建了secrets,imagePullSecrets等,并将节点标记为ches-worker。
当我应用yaml文件时,pod处于Pending状态,kubectl describe pod ches-0 -n ches
出现以下错误:
警告调度失败6s默认调度程序0/1节点可用:1个单元具有未绑定即时PersistentVolumeClaims。抢占:0/1个节点可用:1抢占对调度没有帮助
我错过了什么吗?
1条答案
按热度按时间rwqw0loc1#
您需要创建PV以绑定PVC。如果您希望从PVC声明自动创建PV,则需要在群集中安装置备程序。
首先创建一个至少有PVC所需空间的PV。然后你可以应用包含PVC声明的部署yaml。