k8s:0/1 nodes are available: pod has unbound immediate PersistentVolumeClaims.
一、环境
CPU:Hygon C86 7285 32-core Processor
操作系统:麒麟操作系统
containerd:1.7.27
Kubernetes:1.26.12
KubeSphere:4.1.2
kubekey:3.1.10
Zookeeper:3.9.3
二、现象
执行:
kubectl apply -f zookeeper-deployment.yaml -n cz-zhjg
报错内容:
0/1 nodes are available: pod has unbound immediate PersistentVolumeClaims. preemption: 0/1 nodes are available: 1 Preemption is not helpful for scheduling..
ZooKeeper Pod (zookeeper-0) 处于 Pending 状态,表明Pod 无法启动是因为它依赖的 PersistentVolumeClaim (PVC) 没有绑定到任何 PersistentVolume (PV)。
三、解决方案
3.1检查现有的 PVC
kubectl get pvc -n cz-zhjg
PVC 已经创建但尚未绑定到任何 PV
3.2手动创建 PV
创建如下 PV 定义文件(pv-definition.yaml
)
apiVersion: v1
kind: PersistentVolume
metadata:
name: zookeeper-data-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: default
hostPath:
path: "/mnt/data" # 根据实际情况更改路径
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: zookeeper-datalog-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: default
hostPath:
path: "/mnt/datalog" # 根据实际情况更改路径
应用这些定义:
kubectl apply -f pv-definition.yaml -n cz-zhjg
3.3. 确认 PVC 绑定
kubectl get pvc -n cz-zhjg
四、 zookeeper-deployment.yaml
apiVersion: v1
kind: Service
metadata:
name: zookeeper
labels:
app: zookeeper
spec:
ports:
- name: client
port: 2181
targetPort: 2181
- name: follower
port: 2888
targetPort: 2888
- name: leader
port: 3888
targetPort: 3888
selector:
app: zookeeper
type: ClusterIP
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: zookeeper
spec:
serviceName: zookeeper
replicas: 1
selector:
matchLabels:
app: zookeeper
template:
metadata:
labels:
app: zookeeper
spec:
containers:
- name: zookeeper
image: 172.23.123.117:8443/library/zookeeper:3.9.3
imagePullPolicy: IfNotPresent
ports:
- containerPort: 2181
name: client
- containerPort: 2888
name: follower
- containerPort: 3888
name: leader
env:
- name: ZOO_MY_ID
value: "1"
- name: ZOO_SERVERS
value: "server.1=0.0.0.0:2888:3888"
volumeMounts:
- name: zookeeper-data
mountPath: /data
- name: zookeeper-datalog
mountPath: /datalog
- name: dshm
mountPath: /dev/shm
resources:
requests:
memory: "512Mi"
cpu: "250m"
limits:
memory: "1Gi"
cpu: "500m"
securityContext:
privileged: true
capabilities:
add:
- IPC_LOCK
- SYS_RESOURCE
seccompProfile:
type: Unconfined
securityContext:
fsGroup: 1001
volumes:
- name: dshm
emptyDir:
medium: Memory
sizeLimit: 1Gi
volumeClaimTemplates:
- metadata:
name: zookeeper-data
spec:
accessModes: ["ReadWriteOnce"]
storageClassName: "default"
resources:
requests:
storage: 10Gi
- metadata:
name: zookeeper-datalog
spec:
accessModes: ["ReadWriteOnce"]
storageClassName: "default"
resources:
requests:
storage: 10Gi