kubernetes - 失败调度 : 0/3 nodes are available: 3 Insufficient pods

标签 kubernetes kubectl amazon-eks

我正在尝试将我的 NodeJS 应用程序部署到 EKS 并使用完全相同的容器运行 3 个 pod。

这是错误信息:

$ kubectl get pods
NAME                                 READY   STATUS             RESTARTS   AGE
cm-deployment-7c86bb474c-5txqq       0/1     Pending            0          18s
cm-deployment-7c86bb474c-cd7qs       0/1     ImagePullBackOff   0          18s
cm-deployment-7c86bb474c-qxglx       0/1     ImagePullBackOff   0          18s
public-api-server-79b7f46bf9-wgpk6   0/1     ImagePullBackOff   0          2m30s

$ kubectl describe pod cm-deployment-7c86bb474c-5txqq
Events:
  Type     Reason            Age                  From               Message
  ----     ------            ----                 ----               -------
  Warning  FailedScheduling  23s (x4 over 2m55s)  default-scheduler  0/3 nodes are available: 3 Insufficient pods.

所以它说 0/3 个节点可用 但是,如果我运行 kubectl get nodes --watch

$ kubectl get nodes --watch
NAME                                                 STATUS   ROLES    AGE    VERSION
ip-192-168-163-73.ap-northeast-2.compute.internal    Ready    <none>   6d7h   v1.14.6-eks-5047ed
ip-192-168-172-235.ap-northeast-2.compute.internal   Ready    <none>   6d7h   v1.14.6-eks-5047ed
ip-192-168-184-236.ap-northeast-2.compute.internal   Ready    <none>   6d7h   v1.14.6-eks-5047ed

3 个 pod 正在运行。

这是我的配置:

aws-auth-cm.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system
data:
  mapRoles: |
    - rolearn: [MY custom role ARN]
      username: system:node:{{EC2PrivateDNSName}}
      groups:
        - system:bootstrappers
        - system:nodes


deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: cm-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: cm-literal
  template:
    metadata:
      name: cm-literal-pod
      labels:
        app: cm-literal
    spec:
      containers:
        - name: cm
          image: docker.io/cjsjyh/public_test:1
          imagePullPolicy: Always
          ports:
            - containerPort: 80
          #imagePullSecrets:
          #  - name: regcred
          env:
            [my environment variables]

我应用了两个 .yaml 文件

我该如何解决这个问题? 谢谢

最佳答案

我的猜测是,如果不运行 list ,您得到的是图像上的图像标签 1 不存在,因此您得到的是 ImagePullBackOff,这通常意味着容器运行时找不到要拉取的镜像。

查看 Docker Hub page那里没有 1 标签,只有 latest

因此,删除标签或将 1 替换为 latest 可能会解决您的问题。

关于kubernetes - 失败调度 : 0/3 nodes are available: 3 Insufficient pods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58257796/

相关文章:

docker - ASP.NET Core 2.0 在 Kubernetes 中启动 Kestrel 时出错

nginx - 如何使用 kubectl 删除网络策略?

kubernetes - 使用 SIZE 列出 Kubernetes 集群中的容器镜像(如 docker image ls)

kubernetes - Istio Envoy 504 网关在出站连接 15 秒后超时

kubernetes - kubectl 能否以 AWS 的假定角色工作

amazon-web-services - 我们可以在 Nginx-Ingress-Contoller 使用多个 AWS ACM 证书或在 Ingress 对象级别使用多个 ACM 证书吗?

ubuntu - 添加网络之前 Kubernetes 集群的 "stability"问题

kubernetes - 如何调试 "ImagePullBackOff"?

kubernetes - 带有证书管理器的 Knative (GKE) 上的示例应用程序 "helloworld-go"提供状态 IngressNotConfigured

kubernetes - prometheus-adapter 未正常运行