首页 > 编程知识 正文

Kubernetes defaultscheduler 02 nodes are available 2 nodes

时间:2023-05-06 17:26:05 阅读:266682 作者:694

K8S pod 调度失败 问题解决问题

问题

  这个问题其实很简单,因为deployment(或其他控制器)或Pod的yaml文件中使用了nodeSelector,例如:下面的这个yaml文件:

apiVersion: apps/v1kind: Deploymentmetadata: labels: app.kubernetes.io/name: kube-state-metrics app.kubernetes.io/version: v1.8.0 name: kube-state-metrics namespace: monitoringspec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: kube-state-metrics template: metadata: labels: app.kubernetes.io/name: kube-state-metrics app.kubernetes.io/version: v1.8.0 spec: containers: - image: quay.io/coreos/kube-state-metrics:v1.8.0 livenessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 5 timeoutSeconds: 5 name: kube-state-metrics ports: - containerPort: 8080 name: http-metrics - containerPort: 8081 name: telemetry readinessProbe: httpGet: path: / port: 8081 initialDelaySeconds: 5 timeoutSeconds: 5 nodeSelector: kubernetes.io/os: linux serviceAccountName: kube-state-metrics

倒数第三行指定了nodeSelector,如果当前集群中没有一个node的label符合这个nodeSelector,则在describepod资源时显示:

Warning FailedScheduling 18s (x2 over 18s) default-scheduler 0/2 nodes are available: 2 node(s) didn't match node selector 解决问题 给需要调度的node加上对应标签 # 相对上面这个Yaml文件的例子kubectl label nodes node_name kubernetes.io/os=linux 删除Yaml文件中的nodeSelector,如果对节点没有要求的话,直接删除节点选择器即可

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。