Amazon EKS ポッドが ContainerCreating 状態でスタックし、「ポッドサンドボックスの作成に失敗しました」というエラーが発生する理由を知りたいです。
Amazon Elastic Kubernetes Service (Amazon EKS) ポッドが「ポッドサンドボックスの作成に失敗しました」というエラーが表示され、コンテナ作成状態のままになります。
解決策
このエラーは、ネットワークに問題があるか、システムリソース制限の設定が正しくない場合に発生します。
このエラーが発生し、ポッドが ContainerCreating 状態になっている場合は、最初にポッドのステータスを調べます。その後、次のコマンドを実行して詳細を取得します。podname はポッド名に置き換えてください。
kubectl describe pod podname
出力に基づいて、トラブルシューティングの手順について次のセクションを参照してください。
「リソースは一時的に利用できません」というエラー応答
リソースに問題がある場合は、次のようなエラーメッセージが表示されます。
"kubelet, ip-##-##-##-##.##-#####-#.compute.internal Failed to create pod sandbox: rpc error: code = Unknown desc = failed to start sandbox container for pod "example_pod": Error response from daemon: failed to start shim: fork/exec /usr/bin/containerd-shim: resource temporarily unavailable: unknown"
このエラー応答は、定義されている最大 PID または最大ファイル数のカーネル設定が原因でオペレーティングシステムが制限される場合に発生します。
問題を一時的に解決するには、ノードを再起動します。
この問題をトラブルシューティングするには、次のタスクを実行します。
- ノードログを収集します。
- **「dockerd[4597]: runtime/cgo: pthread_create failed: Resource temporarily unavailable」**エラー応答に関する Docker ログを確認します。
- Kubelet ログで次のエラーレスポンスを確認します。
「kubelet[5267]: runtime: 新しい OS スレッドを作成できませんでした。(既存 2、errno=11)」
「kubelet[5267]: runtime: 最大ユーザープロセスを増やす必要があります (ulimit -u)」. - ps コマンドを実行してゾンビプロセスを特定します。出力に Z ステートと表示されているプロセスはすべてゾンビプロセスです。
"ネットワークプラグイン cni がポッドネットワークを設定できません" というエラー応答
ネットワークに問題がある場合は、次のようなエラーメッセージが表示されます。
"ネットワークプラグイン cni がポッドネットワークを設定できません。add cmd: IP アドレスをコンテナに割り当てられません"
このエラーレスポンスは、コンテナネットワークインターフェイス (CNI) が新しく作成されたポッドに IP アドレスを割り当てることができないことを意味します。
許可されている最大数のエラスティックネットワークインターフェイスと IP アドレスを使用したインスタンスが、このエラーレスポンスを引き起こす可能性があります。このエラーレスポンスは、Amazon Virtual Private Cloud (Amazon VPC) サブネットの IP アドレス数が 0 の場合にも受信する場合があります。
以下は、ネットワークインターフェイスの IP アドレスの最大数の例です。
Instance type Maximum network interfaces Private IPv4 addresses per interface IPv6 addresses per interfacet3.medium 3 6 6
前の例では、t3.medium インスタンスには最大 3 つのネットワークインターフェイスがあり、各ネットワークインターフェイスには最大 6 つの IP アドレスがあります。最初の IP アドレスはノードに使用され、割り当てることはできません。これで、このネットワークインターフェースには 17 個の IP アドレスが割り当てられます。
ネットワークインターフェイスの IP アドレスがなくなると、ローカルの IP アドレス管理デーモン (ipamD) ログに次のメッセージが表示されます。
「ipamd/ipamd.go:1285","msg」: 「見つかったインターフェースの総数: 3 」「AssignIPv4Address: IP アドレスプールの統計情報: 合計: 17、割り当て済み 17」「AssignPodIPv4Address: ENI eni-abc123 には、利用可能なアドレスがありません」
たとえば、次の出力を参照してください。
Warning FailedCreatePodSandBox 23m (x2203 over 113m) kubelet, ip-##-##-##-##.##-#####-#.compute.internal (combined from similar events): Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" network for pod "provisioning-XXXXXXXXXXXXXXX": networkPlugin cni failed to set up pod "provisioning-XXXXXXXXXXXXXXX" network: add cmd: failed to assign an IP address to container
サブネットを確認して、サブネットの空き IP アドレスが不足していないかどうかを確認します。Amazon VPC コンソールの [サブネット] セクションで、各サブネットで使用可能な IP アドレスを確認できます。
Subnet: ##########IPv4 CIDR Block 10.2.1.0/24 Number of allocated ips 254 ; Free address count 0
この問題を解決するには、次の解決策を実行します。
- 必ず利用可能な最新バージョンの VPC CNI を使用してください。
- ワークロードをスケールダウンして、使用中の IP アドレスを解放します。
- サブネットで利用可能な IP アドレスが増えたら、ノード数を増やします。
- ポッドにはカスタムネットワークを使用します。
- プレフィックス委任モードを有効にします。詳細については、GitHub のウェブサイトで、AWS アカウントのWindows 用プレフィックスモードを参照してください。
「ダイヤル中のエラー」というエラー応答
ダイヤルに問題があると、次のようなエラーが表示されます。
「dial tcp 127.0.0.1:50051 へのダイヤル中にエラー発生: connect: 接続が拒否されました」
このエラーは、aws-node ポッドがノードで実行できなかったため、aws-node ポッドが IPAM と通信できなかったことを示しています。
この問題をトラブルシューティングするには、クラスターバージョンに適したバージョンの VPC CNI プラグインを実行していることを確認してください。
Liveness および Readiness プローブエラーが原因で、ポッドが Pending 状態になっている可能性があります。最新の VPC CNI アドオンバージョンを使用していることを確認してください。
この問題は、Dockershim (EKS バージョン 1.23 まで) のマウントポイントがマウントできないために発生する場合もあります。次のメッセージ例は、ポッドが var/run/dockershim.sock をマウントしなかったことを示しています。
Getting running pod sandboxes from \"unix:///var/run/dockershim.sock\Not able to get local pod sandboxes yet (attempt 1/5): rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing dial unix /var/run/dockershim.sock: connect: no such file or director
この問題を解決するには、次のステップを実行してください。
- aws-node ポッドを再起動してマウントポイントを再マップします。
- ノードを閉鎖し、ノードグループ内のノードをスケーリングします。
- Amazon VPC ネットワークインターフェイスを、サポートされている最新のクラスターバージョンにアップグレードします。
CNI を AWS マネジメントコンソールでマネージドプラグインとして追加した場合、aws-node はプローブに失敗します。マネージドプラグインはサービスアカウントを上書きします。ただし、サービスアカウントには選択したロールが設定されません。この問題を解決するには、AWS マネジメントコンソールからプラグインを無効にしてから、マニフェストファイルを使用してサービスアカウントを作成します。または、現在の aws-node サービスアカウントを編集し、マネージドアドオンで使用するロールを追加します。
「ポッドにラベルがない」というエラー応答
ラベルに問題があると、次のようなエラーが表示されます。
「Kubernetes 引数の解析に失敗しました: ポッドには vpc.amazonaws.com/PrivateIPv4Address というラベルがありません」または「ポッドには vpc.amazonaws.com/PrivateIPv4Address というラベルがありません」
この問題は、ポッドの Windows ノードにスケジュールされた nodeSelector がない場合に発生します。
この問題を解決するには、nodeSelector の PodSpec に次のラベルを必ず含めてください。
- kubernetes.io/os: windows
- kubernetes.io/arch: amd64
セキュリティグループエラー
セキュリティグループに問題があると、次のようなエラーが表示されます。
"Plugin type="aws-cni" name="aws-cni" failed (add): add cmd: IP アドレスをコンテナに割り当てられません
VPC-Resource-Controller がブランチ ENI をポッドに割り当てることができませんでした。ネットワークインターフェイスを作成時に NoCredentialProviders 発生。チェーンに有効なプロバイダーがありません。Deprecated.」
このエラー応答は、health.kubernetes コントロールプレーンに問題があることを示している可能性があります。この問題を解決するには、AWS サポートにお問い合わせください。
関連するコンテンツ
- 質問済み 8ヶ月前lg...
- 質問済み 1年前lg...
- 質問済み 3ヶ月前lg...
- AWS公式更新しました 1年前
- AWS公式更新しました 1年前
- AWS公式更新しました 1年前