对于在StatefulSet中定义的每个VolumeClaimTemplate条目,每个Pod都会收到一个PersistentVolumeClaim。在上面的nginx示例中,每个Pod都会收到一个具有存储类my-storage-class和1 Gib预配存储容量的单个PersistentVolume。如果未指定StorageClass,则将使用默认的StorageClass。当Pod被(重新)调度到节点上时,其volumeMounts会挂载与其PersistentVolume Claims关联的PersistentVolumes。请注意,当Pod或StatefulSet被删除时,与Pod的PersistentVolume Claims关联的PersistentVolumes不会被删除。必须手动删除它们。
我感兴趣的部分是这个:
If no StorageClass is 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处于挂起状态,kubectl describe pod ches-0 -n ches给出以下错误:
警告 FailedScheduling 6秒 default-scheduler 0/1个节点可用:1个pod有未绑定的立即PersistentVolumeClaims。抢占:0/1个节点可用:1个抢占对调度没有帮助。
我这里漏掉了什么吗?