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

时间:2019-11-22 05:05:33

标签: kubernetes kubernetes-pod amazon-eks ecr

我们正在尝试使用ECR将点网核心API服务部署到亚马逊EKS。部署成功,但Pod处于挂起状态。以下是我们遵循的详细步骤。

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

  1. 创建了一个t2-micro集群,如下所示 eksctl create cluster --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 –管理 //成功创建集群和节点组。 //也创建了IAM角色

  2. 使用随附的json / yaml // net-app.json部署复制控制器 enter image description here

  3. 使用随附的json / yaml //net-app-scv.json部署服务 enter image description here
  4. “ get all”命令返回了此结果。 //get_all.png get all POD始终保持挂起状态。

  5. Pod describe提供了以下结果//describe_pod.png describe pod

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

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

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

4 个答案:

答案 0 :(得分:13)

在Amazon Elastic Kubernetes服务(EKS)上,每个节点的pod的最大数量取决于节点类型,范围从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

如果仅获得一个号码,则该号码应该是可分配的。计算所有正在运行的Pod的另一种方法是运行以下命令:

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

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

在Google Kubernetes Engine(GKE)上,每个节点的限制为110个pod。检查以下网址:

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

在Azure Kubernetes服务(AKS)上,默认限制是每个节点30个容器,但可以增加到250个。每个节点的默认容器最大数量在kubenet和Azure CNI网络之间有所不同,集群部署方法。检查以下URL以获取更多信息:

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

未能成功安排广告连播。

问题可能与节点配置有关。

共享以下命令的输出以找出根本原因

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

对于每个节点可以运行的Pod有一个限制(不考虑资源),您正在达到该限制。您可以在kubectl get node -o yaml

的输出中找到该限制。

从节点输出中可以很明显地看出,您已经达到了每个节点的Pod限制。检查分配的容器与容器的容量。两者都显示计数为4。

解决方案:您需要在集群中再添加一个节点,才能部署更多的工作负载

答案 3 :(得分:0)

更新:我尝试将节点数增加到6,并且现在可以正常工作。

已经安排了4个kube系统吊舱,因此请尝试将其增加到6个。

我不擅长Kubes,这只是反复试验的结果。

如果有经验的人可以对它的工作原理有所了解,它将非常有用。