AWS EKS 0/1 节点可用。 1 个不足 pods

AWS EKS 0/1 nodes are available. 1 insufficient pods

我们正在尝试使用 ECR 将 dot net core API 服务部署到 amazon EKS。部署成功,但 pods 处于挂起状态。以下是我们遵循的详细步骤。

接下来的步骤。 1.创建了一个docker图像 2. 将镜像推送到ECR。该图像现在也可以在 aws 控制台中看到。 // 图片看起来不错,我可以在本地使用我的 docker 运行 它。

  1. 如下所示创建了一个 t2-micro 集群 eksctl 创建集群 --name net-core-prod --version 1.14 --region us-west-2 --nodegroup-name standard-workers --node-type t2.micro --nodes 1 --nodes-min 1 --nodes-max 1 –managed // 集群和节点组创建成功。 // IAM 角色也已创建

  2. 使用附加的 json/yaml//net-app.json 部署了一个复制控制器

  3. 使用附加的 json/yaml //net-app-scv.json 部署了服务
  4. get all 命令返回了这个。 //get_all.png POD 始终处于 PENDING 状态。

  5. Pod describe 给出了以下结果 //describe_pod.png

  6. 我们还尝试向集群 IAM 角色添加策略以包含附加的 ECR 权限。 //ECR_policy.json

要点:
1. 我们使用的是 t2-micro 实例集群,因为它是 AWS 免费账户。
2. 我们创建了一个 linux 集群并尝试推送 dotnet 核心应用程序。 //这在我们的本地机器上运行良好
3.集群只有1个节点 //-nodes 1 --nodes-min 1 --nodes-max 1

有人可以指导我们如何正确设置它吗?

pod 调度失败

问题可能出在节点配置上。

分享以下命令的输出以确定根本原因

1.  kubectl describe node <node-name>
2.  kubectl describe pod <pod-name>
3.  kubectl get ev

每个节点可以 运行 数量 pods 存在限制(无论资源如何),您正在达到该限制。您可以在 kubectl get node -o yaml

的输出中找到该限制

从节点输出可以清楚地看出,您已达到每个节点 pods 的限制。检查 pods 的分配容量与容量。两者都显示计数有 4。

解决方案:您需要向集群添加一个节点才能部署额外的工作负载

问题是您正在使用 t2.micro。至少需要 t2.small。调度程序无法在节点上调度 pod,因为 t2.micro 实例上没有足够的可用容量。大部分容量已被系统资源占用。至少使用 t2.small

更新:我尝试将节点数增加到 6,现在可以使用了。

4 个 kube-system pods 已经安排好了,所以试试把它增加到 6 个。

我不擅长Kubes,只是试错的结果

这将非常有用,如果有经验的人可以阐明它是如何工作的。

在 Amazon Elastic Kubernetes Service (EKS) 上,每个节点的最大数量 pods 取决于节点类型,范围从 4 到 737。

如果达到最大限制,您将看到如下内容:

❯ kubectl get node -o yaml | grep pods
      pods: "17" => this is allocatable pods that can be allocated in node
      pods: "17" => this is how many running pods you have created

如果你只有一个号码,它应该是可以分配的。另一种计算所有 运行ning pods 的方法是 运行 以下命令:

kubectl get pods --all-namespaces | grep Running | wc -l

这是每个节点类型的最大 pods 列表: https://github.com/awslabs/amazon-eks-ami/blob/master/files/eni-max-pods.txt

在 Google Kubernetes Engine (GKE) 上,限制为每个节点 110 pods。检查以下 URL:

https://github.com/kubernetes/community/blob/master/sig-scalability/configs-and-limits/thresholds.md

在 Azure Kubernetes 服务 (AKS) 上,默认限制为每个节点 30 pods,但最多可以增加到 250。每个节点的默认最大数量 pods kubenet 和 Azure CNI 网络以及集群部署方法各不相同。查看以下 URL 了解更多信息:

https://docs.microsoft.com/en-us/azure/aks/configure-azure-cni#maximum-pods-per-node