Saya mencoba menerapkan docker
gambar kontainer untuk AWS
digunakan ECS
, tetapi contoh EC2 tidak sedang dibuat. Saya telah menjelajahi internet untuk mencari penjelasan mengapa saya menerima kesalahan berikut:
"Kesalahan klien (InvalidParameterException) terjadi saat memanggil operasi RunTask: Tidak ada Contoh Penampung yang ditemukan di kluster Anda."
Inilah langkah saya:
1. Mendorong image buruh pelabuhan DARI Ubuntu ke repo Amazon ECS saya.
2. Mendaftarkan Definisi Tugas ECS:
aws ecs register-task-definition --cli-input-json file://path/to/my-task.json
3. Jalankan tugas:
aws ecs run-task --task-definition my-task
Namun, gagal.
Inilah tugas saya:
{
"family": "my-task",
"containerDefinitions": [
{
"environment": [],
"name": "my-container",
"image": "my-namespace/my-image",
"cpu": 10,
"memory": 500,
"portMappings": [
{
"containerPort": 8080,
"hostPort": 80
}
],
"entryPoint": [
"java",
"-jar",
"my-jar.jar"
],
"essential": true
}
]
}
Saya juga mencoba menggunakan konsol manajemen untuk mengonfigurasi cluster dan layanan, namun saya mendapatkan kesalahan yang sama. Bagaimana cara mengonfigurasi cluster agar memiliki instance ec2, dan jenis instance container apa yang perlu saya gunakan? Saya pikir seluruh proses ini adalah untuk membuat instans EC2 !!
sumber
Jawaban:
Saya menemukan ini setelah beberapa jam menyelidiki. Amazon, jika Anda mendengarkan, Anda harus menyatakan ini di suatu tempat di konsol manajemen Anda saat membuat klaster atau menambahkan instans ke klaster:
Inilah rigmarole:
1. Buka Dasbor EC2 Anda , dan klik
Launch Instance
tombol.2. Di bawah
Community AMIs
, Cariecs-optimized
, dan pilih salah satu yang paling sesuai dengan kebutuhan proyek Anda. Apapun akan berhasil. Klik berikutnya.3. Saat Anda masuk ke Configure Instance Details, klik
create new IAM role link
dan buat peran baru bernamaecsInstanceRole
.4. Lampirkan
AmazonEC2ContainerServiceforEC2Role
kebijakan untuk peran itu.5. Kemudian, selesaikan konfigurasi Instans ECS Anda.
CATATAN: Jika Anda membuat server web, Anda akan ingin membuat securityGroup untuk mengizinkan akses ke port 80.
Setelah beberapa menit, ketika instans diinisialisasi dan berjalan, Anda dapat menyegarkan tab Instans ECS yang Anda coba tambahkan juga.
sumber
EC2
sebagai jenis peluncuran ketika Anda mendapatkan kesalahan ini ...#!/bin/bash echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
diAdvanced Details -> User data
jika Anda memiliki sendiri, non klaster default Anda. Jika tidak, instans EC2 yang baru dibuat akan membuat cluster Default.Saat ini, antarmuka web Amazon AWS dapat secara otomatis membuat instans dengan AMI yang benar dan nama yang benar sehingga akan terdaftar ke klaster yang benar.
Meskipun semua instans dibuat oleh Amazon dengan pengaturan yang benar, instans saya tidak akan terdaftar. Di forum Amazon AWS saya menemukan petunjuk. Ternyata cluster Anda memerlukan akses internet dan jika VPC pribadi Anda tidak memiliki gateway internet, cluster tidak akan dapat terhubung.
Cara mengatasinya
Di dasbor VPC, Anda harus membuat Gateway Internet baru dan menghubungkannya ke VPC yang digunakan oleh cluster. Setelah terpasang, Anda harus memperbarui (atau membuat) tabel rute untuk VPC dan menambahkan sebagai baris terakhir
Di mana igw-24b16740 adalah nama gateway internet yang baru Anda buat.
sumber
aws ec2 associate-route-table --subnet-id $SUBNET_ID --route-table-id $ROUTE_TABLE_ID
- dapatkah saya menyarankan menambahkan ini ke jawaban?Saya mengalami masalah ini saat menggunakan Fargate. Saya memperbaikinya ketika saya secara eksplisit menentukan
launchType="FARGATE"
saat meneleponrun_task
.sumber
--launch-type FARGATE
Pemeriksaan lain yang disarankan
Memilih AMI yang disarankan yang ditentukan untuk wilayah tertentu memecahkan masalah saya.
Untuk mengetahui AMI - periksa Meluncurkan Instans Kontainer Amazon ECS .
Secara default, semua instance ec2 ditambahkan ke cluster default. Jadi nama cluster juga penting.
Lihat poin 10 di Meluncurkan Instans Kontainer Amazon ECS .
Informasi lebih lanjut tersedia di utas ini .
sumber
Kalau-kalau ada orang lain yang diblokir dengan masalah ini seperti saya ... Saya sudah mencoba semuanya di sini dan tidak berhasil untuk saya.
Selain apa yang dikatakan di sini mengenai Peran Instans EC2, seperti yang dikomentari di sini , dalam kasus saya hanya berfungsi jika saya masih mengonfigurasi Instans EC2 dengan informasi sederhana. Menggunakan Data Pengguna skrip awal seperti ini:
Menginformasikan Nama Cluster ECS terkait yang dibuat di file konfigurasi ecs ini, menyelesaikan masalah saya. Tanpa konfigurasi ini, Log Agen ECS di Instans EC2 menunjukkan kesalahan yang tidak memungkinkan untuk terhubung ke ECS, melakukan ini, saya membuat Instans EC2 terlihat oleh Klaster ECS.
Setelah melakukan ini, saya bisa mendapatkan Instans EC2 yang tersedia untuk Klaster EC2 saya:
Dokumentasi AWS mengatakan bahwa bagian ini opsional, tetapi dalam kasus saya, bagian ini tidak berfungsi tanpa konfigurasi "opsional" ini.
sumber
Jika Anda menemukan masalah ini setelah membuat cluster
Buka instans ECS di daftar instans EC2 dan periksa peran IAM yang telah Anda tetapkan ke instans tersebut. Anda dapat mengidentifikasi instance dengan mudah dengan nama instance yang dimulai dengan
ECS Instance
Setelah itu klik pada peran IAM dan itu akan mengarahkan Anda ke konsol IAM. Pilih
AmazonEC2ContainerServiceforEC2Role
kebijakan dari daftar kebijakan izin dan simpan peran tersebut.Instance Anda akan tersedia di cluster segera setelah Anda menyimpannya.
sumber
Masalah sebenarnya adalah kurangnya izin. Selama Anda membuat dan menetapkan Peran IAM dengan izin AmazonEC2ContainerServiceforEC2Role, masalahnya akan hilang.
sumber
Kemungkinan penyebab lain yang saya hadapi adalah memperbarui AMI klaster ECS saya menjadi AMI "Amazon Linux 2" alih-alih "AMI Amazon Linux", yang menyebabkan skrip peluncuran data_ pengguna EC2 saya tidak berfungsi.
sumber
Jika ini terjadi, Anda perlu memperhatikan yang berikut:
AmazonEC2ContainerServiceforEC2Role
kebijakan terkelola yang melekat padanyaecs-optimized
(Anda dapat memeriksanya di dasbor EC2)Sering kali, masalah ini muncul karena VPC yang salah dikonfigurasi. Menurut Dokumentasi :
KUTIPAN: Jika Anda tidak memiliki titik akhir VPC antarmuka yang dikonfigurasi dan instance penampung Anda tidak memiliki alamat IP publik, mereka harus menggunakan terjemahan alamat jaringan (NAT) untuk memberikan akses ini.
Ini adalah alasan mengapa Anda tidak melihat instans EC2 terdaftar di dasbor ECS.
sumber