[英]1 node(s) didn't find available persistent volumes to bind error on stateful set pod creation
[英]Kubernetes Mongo with persistent volume FailedScheduling 0/1 nodes are available: 1 node(s) didn't match node selector
我嘗試使用持久卷(完全相同)關注有關 Kubernetes MongoDB 的鏈接。
但是在我部署完所有內容並查看 pod 之后,我收到了以下錯誤:
Name: mongodb-standalone-0
Namespace: default
Priority: 0
Node: <none>
Labels: app=database
controller-revision-hash=mongodb-standalone-7688499856
selector=mongodb-standalone
statefulset.kubernetes.io/pod-name=mongodb-standalone-0
Annotations: <none>
Status: Pending
IP:
IPs: <none>
Controlled By: StatefulSet/mongodb-standalone
Containers:
mongodb-standalone:
Image: mongo:4.0.8
Port: <none>
Host Port: <none>
Environment:
MONGO_INITDB_ROOT_USERNAME_FILE: /etc/k8-training/admin/MONGO_ROOT_USERNAME
MONGO_INITDB_ROOT_PASSWORD_FILE: /etc/k8-training/admin/MONGO_ROOT_PASSWORD
Mounts:
/config from mongodb-conf (ro)
/data/db from mongodb-data (rw)
/docker-entrypoint-initdb.d from mongodb-scripts (ro)
/etc/k8-training from k8-training (ro)
/var/run/secrets/kubernetes.io/serviceaccount from default-token-xbl5z (ro)
Conditions:
Type Status
PodScheduled False
Volumes:
k8-training:
Type: Secret (a volume populated by a Secret)
SecretName: k8-training
Optional: false
mongodb-scripts:
Type: ConfigMap (a volume populated by a ConfigMap)
Name: mongodb-standalone
Optional: false
mongodb-conf:
Type: ConfigMap (a volume populated by a ConfigMap)
Name: mongodb-standalone
Optional: false
mongodb-data:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: mongodb-standalone
ReadOnly: false
default-token-xbl5z:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-xbl5z
Optional: false
QoS Class: BestEffort
Node-Selectors: kubernetes.io/hostname=mongodb-node
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling <unknown> default-scheduler 0/1 nodes are available: 1 node(s) didn't match node selector.
Warning FailedScheduling <unknown> default-scheduler 0/1 nodes are available: 1 node(s) didn't match node selector.
kubectl get nodes --show-labels
:
minikube Ready master 43h v1.17.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=minikube,kubernetes.io/os=linux,node-role.kubernetes.io/master=
我試圖找到一種方法來調試這個問題,但一無所獲..
我在 Kubernetes 中使用我的應用程序成功運行了我的 MongoDB,但問題是我想為我的數據提供持久卷,到目前為止我找不到正確的方法來使它工作。 我感謝任何幫助,謝謝。
我已經按照更改 nodeSelector,但仍然出現相同的錯誤:
Name: mongodb-standalone-0
Namespace: default
Priority: 0
Node: <none>
Labels: app=database
controller-revision-hash=mongodb-standalone-74895d955f
selector=mongodb-standalone
statefulset.kubernetes.io/pod-name=mongodb-standalone-0
Annotations: <none>
Status: Pending
IP:
IPs: <none>
Controlled By: StatefulSet/mongodb-standalone
Containers:
mongodb-standalone:
Image: mongo:4.0.8
Port: <none>
Host Port: <none>
Environment:
MONGO_INITDB_ROOT_USERNAME_FILE: /etc/k8-training/admin/MONGO_ROOT_USERNAME
MONGO_INITDB_ROOT_PASSWORD_FILE: /etc/k8-training/admin/MONGO_ROOT_PASSWORD
Mounts:
/config from mongodb-conf (ro)
/data/db from mongodb-data (rw)
/docker-entrypoint-initdb.d from mongodb-scripts (ro)
/etc/k8-training from k8-training (ro)
/var/run/secrets/kubernetes.io/serviceaccount from default-token-xbl5z (ro)
Conditions:
Type Status
PodScheduled False
Volumes:
k8-training:
Type: Secret (a volume populated by a Secret)
SecretName: k8-training
Optional: false
mongodb-scripts:
Type: ConfigMap (a volume populated by a ConfigMap)
Name: mongodb-standalone
Optional: false
mongodb-conf:
Type: ConfigMap (a volume populated by a ConfigMap)
Name: mongodb-standalone
Optional: false
mongodb-data:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: mongodb-standalone
ReadOnly: false
default-token-xbl5z:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-xbl5z
Optional: false
QoS Class: BestEffort
Node-Selectors: kubernetes.io/hostname=minikube
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling <unknown> default-scheduler 0/1 nodes are available: 1 node(s) didn't find available persistent volumes to bind.
Warning FailedScheduling <unknown> default-scheduler 0/1 nodes are available: 1 node(s) didn't find available persistent volumes to bind.
我猜你在你kubernetes.io/hostname: mongodb-node
上缺少標簽kubernetes.io/hostname: mongodb-node
node 。
nodeSelector:
kubernetes.io/hostname: mongodb-node
kubectl label node <your_node_name> kubernetes.io/hostname=mongodb-node --overwrite
標記您的節點,但我不推薦這種方法。nodeSelector
更改為合適的, kubernetes.io/hostname
使用kubectl get no --show-labels
檢查您的kubernetes.io/hostname
將部署中的kubernetes.io/hostname=minikube
更改為kubernetes.io/hostname=minikube
編輯:
在您的持久卷中,您有一個 nodeAffinity,您需要對其進行修改並為其提供正確的值
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- minikube
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.