#編集者の Strawberry がコンテナ化されたアプリケーションのデプロイメントの問題を解決していたとき、ECR (Amazon Elastic Container Registry) から EKS (Amazon Elastic Kubernetes Service) へのイメージが機能していないことに気づきました。きちんと。具体的には、生成された Pod は常に 0/2 であり、コンテナーが正常に起動または実行できないことを意味します。この問題には、イメージ自体の問題、コンテナ構成のエラー、ネットワーク環境の制限など、多くの側面が関係している可能性があります。開発者がこの問題を迅速に解決できるように、いくつかの一般的な解決策を以下で詳しく紹介します。
物事を正しい方向に進めるためにほぼすべてのことを試しましたが、ポッドを使用可能な状態にすることができません。
ということで、基本的なアプリケーションを go で作成しました。
docker build --tag docker-gs-ping .
を使用してプログラムのイメージを作成しました
次に、コンテナ内で同じコマンドを実行してみました docker run --publish 8080:8080 docker-gs-ping
次に、イメージを amazon ecr に保存したいと思います。このために、ecr にリポジトリを作成しました。
リポジトリを作成した後、ローカルに存在するイメージにタグを付けました。
リーリーf49366b7f534
はローカル イメージ タグです。 docker-gs-ping
は、ecr のリポジトリ名です。
次に、コマンドを使用してタグ付き画像を ecr にアップロードしました。
リーリーECR にプッシュする特定のイメージを指定する方法がないため、上記のコマンドがタグ付けされたイメージをプッシュするのか、それともローカルからの最近のイメージをプッシュするのかわかりません。
現在の結果は次のとおりです
上記の手順を完了した後、次のファイルとコマンドを使用して vps を作成しました:
eks スタック:
リーリーコマンド: aws cloudformation create-stack --region us-east-1 --stack-name my-eks-cluster --capabilitycapability_named_iam --template-body file://eks-stack.yaml
eks vpc yaml
リーリーコマンド: aws cloudformation create-stack --region us-east-1 --stack-name my-eks-vpc --template-body file://eks-vpc-stack.yaml
コマンド後の結果:
ここで、deployment.yaml ファイルと service.yaml ファイルをデプロイしてみます
deployment.yaml
リーリーコマンドと結果:
Nowservice.yaml
リーリーコマンドと結果:
これをすべて完了した後、kubectl getdeploy を実行すると、次の結果が得られます。
デバッグのために、kubectl description pod helloworld を試したところ、次の結果が得られました
リーリーstackoverflow で提案されているように多くの解決策を試しましたが、何もうまくいかないようです。うまく機能させる方法はありますか?事前にどうもありがとうございました。
いくつかのことがあります。まず、latest タグの使用は避けるべきです。これはアンチパターンです。イメージを ECR にプッシュするときは、イメージ ラベルとしてビルド ラベルまたはバージョン番号を使用します。次に、ワーカーノードに ECR、具体的には AmazonEC2ContainerRegistryReadOnly ポリシーからイメージをプルする権限があることを確認する必要があります。そうしないと、kubelet は ECR からイメージをプルできなくなります。レジストリがクラスターとは異なるアカウントにある場合は、リポジトリ [リソース] ポリシーを作成する必要があります。 https://docs.aws.amazon.com/AmazonECR /latest/userguide/repository-policies.html を参照してください。
以上が結果のポッドが常に 0/2 になるため、ECR から EKS へのイメージが機能しないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。