web-dev-qa-db-ja.com

AWS EKS 0/1ノードがあります。ポッド1不足

ECRを使用してAmazon EKSにDOT Net Core APIサービスを展開しようとしています。展開は成功しましたが、ポッドは保留状態にあります。以下は私たちが続く詳細な手順です。

手順に従った。 1.ドッカー画像を作成しました.2。画像をECRに押しました。画像はAWSコンソールでも表示されるようになりました。 //画像はよく見えます、私は私のDockerをローカルで使って実行することができました。

  1. 以下のようにT2マイクロクラスタを作成しました.Create Cruction --name net-core-prod --version 1.14 - Region US-West-2 - Nodegroup-Name標準ワーク - ノードタイプT2.Micro - ノード1 - ondode-min 1 - nodes-max 1 -managed // clusterとNodeグループが正常に作成されました。// 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.png get all PODは常に保留状態のままです。

  5. PODの説明は以下の結果を与えました//describe_pod.png describe pod

  6. また、添付のECR権限を含めるためにクラスタIAMロールにポリシーを追加しました。 ///ecr_policy.json.

キーポイント:
1。 AWS Freeアカウントであるため、T2-Microインスタンスクラスタを使用しています。
2。 Linuxクラスタを作成し、DotNetコアアプリをプッシュしようとしました。 //これは私たちの地元の機械でうまくいった
3。クラスタには1ノード// - ノード1 - ノード - min 1 - nodes-max 1がありました

誰かがこれを正しく設定する方法について私たちを案内してください。

8
snehgin

更新:私はノード数を6に増やしてみましたが、今は機能しています。

4 kube-system podsはすでにスケジュールされていて、それを試してみてください。

私はKubesが得意ではありません。

誰かが経験した者がこれがどのように機能するかにいくつかの光を投げることができるならば、それは本当に役に立ちます。

0
snehgin

問題はあなたがt2.microを使用していることです。最小t2.smallが必要です。スケジューラは、t2.microインスタンスで十分な容量が入手できないため、ノード上のPODをスケジュールすることはできません。ほとんどの容量はすでにシステムリソースによって取られています。最小限にt2.smallを使用してください。

3
Rajesh Gupta

Amazon Elastic Kubernetesサービス(EKS)では、ノードごとのポッドの最大数はノードの種類によって異なり、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
 _

1つの数字しか得られない場合は、割り当て可能であるべきです。実行されているすべてのポッドをカウントするもう1つの方法は、次のコマンドを実行することです。

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

これはノードタイプごとの最大ポッドのリストです. https://github.com/awslabs/amazon-eks-ami/blob/master/files/eni-max-pods.txt

Google Kubernetes Engine(GKE)では、リミットはノードごとに110ポッドです。次のURLを確認してください。

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

Azure Kubernetes Service(AKS)では、デフォルトの制限はノードごとに30ポッドですが、最大250まで増やすことができます。ノードごとのポッドのデフォルトの最大ポッド数は、KubenetとAzure CNIネットワーキングの間で異なります。クラスタ展開詳細については、次のURLを確認してください。

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

0

ポッドがスケジュールされなかった。

問題はノード構成で行うことができます。

下のコマンドからの出力を共有して根本原因を識別します

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

ノードごとに実行できるポッドの数がいくつかあります(リソースに関係なく)、その制限が当たっています。 Kubectl Get Nodeの出力にその制限を見つけることができます-o yaml

ノード出力から、ノードごとにポッドの制限に達したことが明らかです。 PODの割り当てvs容量を確認してください。どちらもカウントを表示しています4。

解決策:追加の作業負荷を展開できるように、1つ以上のノードをクラスタに追加する必要があります。

0
P Ekambaram