Görev çalıştırılırken AWS ECS Hatası: Kümenizde Kapsayıcı Eşgörünümü bulunamadı


116

Kullanmak için bir dockerkonteyner görüntüsü dağıtmaya çalışıyorum , ancak EC2 örneği oluşturulmuyor. Aşağıdaki hatayı neden aldığıma dair bir açıklama bulmak için interneti araştırdım:AWSECS

"RunTask işlemi çağrılırken bir istemci hatası (InvalidParameterException) oluştu: Kümenizde Kapsayıcı Örneği bulunamadı."

İşte adımlarım:

1. Ubuntu'dan Amazon ECS depoma bir docker görüntüsü aktardım.

2. ECS Görev Tanımı Tescil Edildi:

aws ecs register-task-definition --cli-input-json file://path/to/my-task.json 

3. Görevi çalıştırın:

aws ecs run-task --task-definition my-task

Yine de başarısız olur.

İşte benim görevim:

{
  "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
    }
  ]
}

Ayrıca bir küme ve hizmetleri yapılandırmak için yönetim konsolunu kullanmayı denedim, ancak yine de aynı hatayı alıyorum. Kümeyi ec2 örneklerine sahip olacak şekilde nasıl yapılandırabilirim ve ne tür kapsayıcı örnekleri kullanmam gerekir? Tüm bu sürecin, başlamak için EC2 bulut sunucularını yaratmak olduğunu düşündüm !!


Bunu, bir küme oluşturma ve bir görevi çalıştırma adımları arasında hızla gittiğimde görmüş gibi hissediyorum.
Ben Creasy

Yanıtlar:


159

Bunu birkaç saat daha araştırdıktan sonra anladım. Amazon, dinliyorsanız, bir küme oluştururken veya kümeye örnek eklerken bunu yönetim konsolunuzda bir yerde belirtmelisiniz:

"ECS örneklerini bir kümeye eklemeden önce, önce EC2 Yönetim Konsolu'na gitmeli ecs-optimizedve AmazonEC2ContainerServiceforEC2Rolepolitikanın ekli olduğu bir IAM rolüne sahip örnekler oluşturmalısınız "

İşte aradaki ayrıntı:

1. EC2 Kontrol Panelinize gidin ve Launch Instancedüğmesine tıklayın.

2. Altında Community AMIs, ara ecs-optimizedve proje ihtiyaçlarına uyan en iyi birisini seçmek. Herhangi bir işe yarayacak. Sonrakine tıkla.

3. Örnek Ayrıntılarını Yapılandır'a geldiğinizde, üzerine tıklayın create new IAM role linkve adlı yeni bir rol oluşturun ecsInstanceRole.

4. AmazonEC2ContainerServiceforEC2RolePolitikayı bu role ekleyin .

5. Ardından, ECS Kurulumunuzu yapılandırmayı bitirin.
NOT: Bir web sunucusu oluşturuyorsanız, bağlantı noktası 80'e erişime izin vermek için bir güvenlik Grubu oluşturmak isteyeceksiniz.

Birkaç dakika sonra, bulut sunucusu başlatıldığında ve çalışırken, bulut sunucuları eklemeye çalıştığınız ECS Bulut Sunucuları sekmesini de yenileyebilirsiniz.


10
Verilen bölge için belirtilen önerilen ami'yi seçmek sorunumu çözdü. Ami'yi
sanath_p

1
AmazonEC2ContainerServiceforEC2Role'u görmüyorsanız, son gönderinizden bu yana herhangi bir değişiklik var mı?
BlueDolphin

1
@BlueDolphin IAM'de yeni bir Rol oluşturduğumda bu politikayı bulabildim.
cyrf

6
Şu anda (Nisan 2018) şu anda Beta Fargate'i ( aws.amazon.com/fargate ) kullanıyorsanız, bu tür zorluklardan kaçınmak için , EC2bu hatayı aldığınızda sadece başlatma türü olarak seçmiş olmanızı isteyebilirsiniz. ...
Çekimi

10
EC2 oluştururken Ve eklemek unutmayın #!/bin/bash echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.configiçinde Advanced Details -> User datakendi olmayan Varsayılan küme varsa. Aksi takdirde, yeni oluşturulan EC2 bulut sunucusu Varsayılan küme oluşturacaktır.
Jakub Czaplicki

40

Şu anda Amazon AWS web arayüzü, doğru AMI ve doğru adla bulut sunucuları otomatik olarak oluşturabilir, böylece doğru kümeye kaydolabilir.

Tüm örnekler Amazon tarafından doğru ayarlarla oluşturulmuş olsa da örneklerim kaydolmuyordu. On Amazon AWS forumlarda bir ipucu buldum. Kümelerinizin internet erişimine ihtiyacı olduğu ve özel VPC'nizin internet ağ geçidi yoksa kümeler bağlanamayacağı ortaya çıktı.

Çözüm

VPC kontrol panelinde yeni bir İnternet Ağ Geçidi oluşturmalı ve bunu küme tarafından kullanılan VPC'ye bağlamalısınız. Eklendikten sonra VPC için yönlendirme tablosunu güncellemeli (veya oluşturmalı) ve son satır olarak eklemelisiniz

0.0.0.0/0 igw-24b16740  

İgw-24b16740, yeni oluşturduğunuz internet ağ geçidinizin adıdır.



2
İpucu için teşekkürler Örneklerime, yük dengeleyicime gelen trafik dışında tüm giden trafiği engelleyen bir güvenlik grubu atadım. Bunu tüm giden trafiğe izin vermek, ancak yalnızca yük dengeleyiciden gelen trafiği kısıtlamak için değiştirdim ve bulut sunucuları daha sonra EC2 kümemde göründü.
Mikepote

1
Keşke cevabınızı birden fazla oylayabilseydim. Bu, "Kümenizde Kapsayıcı Örneği bulunamadı" sorunumu tam olarak çözdü. ve oylanan orijinal yanıtın gerçek çözümünüzle hiçbir ilgisi yok. Tekrar teşekkürler.
alexkb

Ağ geçidini VPC'nizle ilişkilendirmenin yanı sıra, ECS örneklerinizi barındıran belirli alt ağ için internet trafiğini ağ geçidinden yönlendirmeniz gerekebilir. - örneğin aws ec2 associate-route-table --subnet-id $SUBNET_ID --route-table-id $ROUTE_TABLE_ID- yanıta bunu eklemeyi önerebilir miyim?
Greg

Bir IGW'ye işaret eden 0.0.0..0 / 0 için bir rota eklediğiniz anda alt ağın artık özel bir alt ağ olmadığını belirtmekte fayda var. Ağ güvenliği açısından, bir NAT-Ağ Geçidine işaret eden bir rota oluşturmak daha iyidir.
Henrik Pingel

18

Fargate'i kullanırken bu sorunla karşılaştım. Ararken açıkça tanımladığımda düzelttim .launchType="FARGATE"run_task


1
Eklediğim CLI ile--launch-type FARGATE
shlomiLan


3

Sadece bir başkasının bu problemle engellendiği durumda ... Burada her şeyi denedim ve benim için çalışmadım.

Burada adı geçen yorumladı olarak, EC2 Örnek Rol konusunda ne yanısıra burada hala basit bilgilerle EC2 Örneği yapılandırılmış eğer benim durumumda sadece çalıştı. Kullanıcı Verilerini kullanarak aşağıdaki gibi bir başlangıç ​​komut dosyası:

#!/bin/bash
cat <<'EOF' >> /etc/ecs/ecs.config
ECS_CLUSTER=quarkus-ec2
EOF

Bu ecs yapılandırma dosyasında oluşturulan ilgili ECS Küme Adının bilgilendirilmesi sorunumu çözdü. Bu yapılandırma olmadan, EC2 Bulut Sunucusundaki ECS Aracı Günlüğü, ECS'ye bağlanmanın mümkün olmadığı bir hata gösteriyordu, bunu yaparak ECS Kümesi tarafından görülebilen EC2 Bulut Sunucusuna sahibim.

Bunu yaptıktan sonra, EC2 Kümem için kullanılabilir olan EC2 Bulut Sunucusunu alabilirim: görüntü açıklamasını buraya girin

AWS belgeleri bu parçanın isteğe bağlı olduğunu söyledi, ancak benim durumumda bu "isteğe bağlı" yapılandırma olmadan çalışmadı.


2

Kümeyi oluşturduktan sonra bu sorunla karşılaştıysanız

EC2 bulut sunucuları listesinde ECS bulut sunucusuna gidin ve bulut sunucusuna atadığınız IAM rolünü kontrol edin. Örnek adı ile başlayarak örnekleri kolayca tanımlayabilirsiniz.ECS Instance

görüntü açıklamasını buraya girin

Bundan sonra IAM rolüne tıklayın ve sizi IAM konsoluna yönlendirecektir. Seç AmazonEC2ContainerServiceforEC2Roleizin politikası listeden politikayı ve rolü kaydedin.

Örnekleriniz, kaydettikten kısa süre sonra kümede kullanılabilir olacaktır.


1

Asıl mesele izin eksikliğidir. AmazonEC2ContainerServiceforEC2Role izni ile bir IAM Rolü oluşturup atadığınız sürece sorun ortadan kalkar.


0

Karşılaştığım bir başka olası neden de ECS kümemin AMI'sini "Amazon Linux AMI" yerine "Amazon Linux 2" AMI'ye güncellemekti, bu da EC2 user_data başlatma komut dosyamın çalışmamasına neden oldu.


0

Bu olduğunda, aşağıdakilere bakmanız gerekir:

  1. EC2 bulut sunucularınız AmazonEC2ContainerServiceforEC2Role, kendisine eklenen yönetilen politikaya sahip bir role sahip olmalıdır
  2. EC2 Bulut Sunucularınız AMI görüntüsünü çalıştırıyor olmalıdır ecs-optimized(bunu EC2 kontrol panelinde kontrol edebilirsiniz)
  3. VPC'nizin özel alt ağlarına atanmış genel IP'ler yok VEYA yapılandırılmış bir arayüz VPC uç noktanız yok VEYA NAT ağ geçidi ayarlamadınız

Çoğu zaman bu sorun, yanlış yapılandırılmış VPC nedeniyle ortaya çıkar. Belgelere göre :

QUOTE: Yapılandırılmış bir arayüz VPC uç noktanız yoksa ve kapsayıcı örneklerinizin genel IP adresleri yoksa, bu erişimi sağlamak için ağ adresi çevirisini (NAT) kullanmaları gerekir.

  • Bir VPC uç noktası oluşturmak için: Buradaki belgeleri izleyin
  • Bir NAT ağ geçidi oluşturmak için: Buradaki belgelere bakın

ECS kontrol panelinde listelenen EC2 bulut sunucularını görmemenizin nedenleri bunlardır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.