簡體   English   中英

具有持久卷 FailedScheduling 0/1 節點的 Kubernetes Mongo 可用:1 個節點與節點選擇器不匹配

[英]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 。

  • 您可以從 yaml 中刪除 nodeSelector:
      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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM