Memecahkan masalah pembaruan strategi penerapan Amazon ECS - Amazon Elastic Container Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memecahkan masalah pembaruan strategi penerapan Amazon ECS

Bagian ini memberikan solusi untuk masalah umum yang mungkin Anda temui saat memigrasikan strategi penerapan.

Beberapa revisi layanan atau set tugas

Masalah berikut terkait dengan memiliki beberapa revisi layanan untuk penerapan.

Beberapa set tugas saat memperbarui pengontrol penyebaran ECS

Pesan kesalahan: Updating the deployment controller is not supported when there are multiple tasksets in the service. Please ensure your service has only one taskset and try again.

Solusi: Kesalahan ini terjadi ketika mencoba mengubah jenis pengontrol penerapan layanan dengan beberapa set tugas aktif. Untuk mengatasi masalah ini untuk pengontrol CODE_DEPLOY atau EXTERNAL penerapan:

  1. Periksa set tugas saat ini:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].taskSets"
  2. Tunggu hingga penerapan yang sedang berlangsung selesai.

  3. Memaksa penerapan baru untuk membersihkan set tugas:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --force-new-deployment
  4. Jika perlu, hapus set tugas tambahan secara manual:

    aws ecs delete-task-set --cluster your-cluster-name --service your-service-name --task-set task-set-id
  5. Setelah hanya satu set tugas yang tersisa, coba lagi perbarui pengontrol penerapan.

Untuk informasi selengkapnya, lihat Pengontrol dan strategi penyebaran layanan Amazon ECS.

Set tugas utama tidak ada saat memperbarui ECS pengontrol penerapan

Pesan kesalahan: Updating the deployment controller requires a primary taskset in the service. Please ensure your service has a primary taskset and try again.

Solusi: Kesalahan ini terjadi ketika mencoba mengubah jenis pengontrol penerapan layanan yang tidak memiliki set tugas utama. Untuk menyelesaikan masalah ini:

  1. Verifikasi status layanan dan set tugas. ). Jika set tugas ada dalam layanan, itu harus ditandai sebagaiACTIVE.

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].taskSets[*].[status,id]

    Jika tidak ada set tugas di ACTIVE negara bagian, migrasi penerapan. Untuk informasi selengkapnya, lihat Pendekatan migrasi.

  2. Jika layanan tidak memiliki tugas yang berjalan, gunakan setidaknya satu tugas dengan memperbarui layanan:

    aws ecs update-service-primary-task-set --cluster your-cluster-name --service your-service-name --primary-task-set your-taskset-id

    Ini akan menandai tugas (sebelumnyaACTIVE) yang ditetapkan dalam layanan sebagai PRIMARY status.

  3. Tunggu tugas mencapai status berjalan stabil. Anda dapat memeriksa statusnya dengan:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].deployments"
  4. Setelah layanan memiliki tugas utama yang ditetapkan dengan tugas yang sedang berjalan, coba lagi memperbarui pengontrol penerapan.

Untuk informasi selengkapnya, lihat Pengontrol dan strategi penyebaran layanan Amazon ECS.

Ketidakcocokan antara jenis deteksi kegagalan penerapan dan pengontrol penerapan

Masalah berikut terkait dengan ketidakcocokan antara jenis deteksi kegagalan penerapan dan pengontrol penerapan.

Pemutus sirkuit penyebaran dengan pengontrol non-ECS

Pesan kesalahan: Deployment circuit breaker feature is only supported with ECS deployment controller. Update to ECS deployment controller and try again.

Solusi: Kesalahan ini terjadi ketika mencoba mengaktifkan fitur pemutus sirkuit penyebaran pada layanan yang tidak menggunakan pengontrol penyebaran. ECS Pemutus sirkuit penyebaran hanya kompatibel dengan pengontrol ECS penyebaran.

  1. Periksa pengontrol penerapan layanan Anda saat ini:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].deploymentController"
  2. Perbarui layanan Anda untuk menggunakan pengontrol ECS penerapan:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS
  3. Setelah layanan menggunakan pengontrol ECS penyebaran, aktifkan pemutus sirkuit penyebaran:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=true}"

Untuk informasi selengkapnya, lihat Bagaimana pemutus sirkuit penyebaran Amazon ECS mendeteksi kegagalan.

Rollback berbasis alarm dengan pengontrol non-ECS

Pesan kesalahan: Alarm based rollback feature is only supported with ECS deployment controller. Update to ECS deployment controller and try again.

Solusi: Kesalahan ini terjadi ketika mencoba mengkonfigurasi rollback berbasis alarm pada layanan yang tidak menggunakan pengontrol penerapan. ECS Fitur rollback berbasis alarm hanya kompatibel dengan pengontrol penerapan. ECS

  1. Periksa pengontrol penerapan layanan Anda saat ini:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].deploymentController"
  2. Perbarui layanan Anda untuk menggunakan pengontrol ECS penerapan:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS
  3. Setelah layanan menggunakan pengontrol ECS penyebaran, konfigurasikan rollback berbasis alarm:

    aws ecs update-service --cluster your-cluster-name --services your-service-name --deployment-configuration "alarms={alarmNames=[your-alarm-name],enable=true,rollback=true}"

Untuk informasi selengkapnya, lihat Bagaimana CloudWatch alarm mendeteksi kegagalan penerapan Amazon ECS.

Ketidakcocokan antara Service Connect dan pengontrol penerapan

Masalah berikut terkait dengan ketidakcocokan antara Service Connect dan pengontrol penerapan.

EXTERNALpengontrol dengan Service Connect

Pesan kesalahan: The EXTERNAL deployment controller type is not supported for services using Service Connect.

Solusi: Kesalahan ini terjadi saat mencoba menggunakan pengontrol EXTERNAL penerapan dengan layanan yang mengaktifkan Service Connect. EXTERNALKontroler tidak kompatibel dengan Service Connect.

  1. Periksa apakah layanan Anda mengaktifkan Service Connect:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].serviceConnectConfiguration"
  2. Jika Anda perlu menggunakan pengontrol EXTERNAL penyebaran, nonaktifkan Service Connect dengan memperbarui layanan Anda:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --service-connect-configuration "{}"
  3. Atau, jika Anda harus menggunakan Service Connect, gunakan pengontrol ECS penerapan sebagai gantinya:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS

Untuk informasi selengkapnya, lihat Pengontrol dan strategi penyebaran layanan Amazon ECS.

Service Connect dengan pengontrol non-ECS

Pesan kesalahan: Service Connect feature is only supported with ECS (rolling update) deployment controller. Update to ECS deployment controller and try again.

Solusi: Kesalahan ini terjadi ketika mencoba mengaktifkan Service Connect pada yang tidak menggunakan pengontrol ECS penerapan. Fitur Service Connect hanya kompatibel dengan pengontrol ECS penerapan.

  1. Periksa pengontrol penerapan layanan Anda saat ini:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].deploymentController"
  2. Perbarui layanan Anda untuk menggunakan pengontrol penyebaran ECS:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS
  3. Setelah layanan menggunakan pengontrol penyebaran ECS, aktifkan Service Connect:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --service-connect-configuration "enabled=true,namespace=your-namespace"

Untuk informasi selengkapnya, lihat Pengontrol dan strategi penyebaran layanan Amazon ECS.

Ketidakcocokan antara jenis pengontrol dan strategi penjadwalan

Masalah berikut terkait dengan ketidakcocokan antara jenis pengontrol dan strategi penjadwalan.

CODE_DEPLOYcontroller dengan strategi DAEMON penjadwalan

Pesan kesalahan: The CODE_DEPLOY deployment controller type is not supported for services using the DAEMON scheduling strategy.

Solusi: Kesalahan ini terjadi ketika mencoba menggunakan pengontrol penyebaran CODE_DEPLOY dengan layanan yang menggunakan strategi penjadwalan. DAEMON CODE_DEPLOYPengontrol hanya kompatibel dengan strategi REPLICA penjadwalan.

  1. Periksa strategi penjadwalan layanan Anda saat ini:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].schedulingStrategy"
  2. Jika Anda memerlukan blue/green penerapan, ubah layanan Anda untuk menggunakan strategi REPLICA penjadwalan:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --scheduling-strategy REPLICA
  3. Atau, jika Anda harus menggunakan strategi DAEMON penjadwalan, gunakan pengontrol ECS penerapan sebagai gantinya:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS

Untuk informasi selengkapnya, lihat Pengontrol dan strategi penyebaran layanan Amazon ECS.

Pengontrol EKSTERNAL dengan strategi penjadwalan DAEMON

Pesan kesalahan: The EXTERNAL deployment controller type is not supported for services using the DAEMON scheduling strategy.

Solusi: Kesalahan ini terjadi ketika mencoba menggunakan pengontrol penyebaran EKSTERNAL dengan layanan ECS yang menggunakan strategi penjadwalan DAEMON. Pengontrol EKSTERNAL hanya kompatibel dengan strategi penjadwalan REPLICA.

  1. Periksa strategi penjadwalan layanan Anda saat ini:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].schedulingStrategy"
  2. Jika Anda perlu menggunakan pengontrol EXTERNAL penerapan, ubah layanan Anda untuk menggunakan strategi REPLICA penjadwalan:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --scheduling-strategy REPLICA
  3. Atau, jika Anda harus menggunakan strategi DAEMON penjadwalan, gunakan pengontrol ECS penerapan sebagai gantinya:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS

Untuk informasi selengkapnya, lihat Pengontrol dan strategi penyebaran layanan Amazon ECS.

Registri layanan dengan tipe peluncuran eksternal

Pesan kesalahan: Service registries are not supported for external launch type.

Solusi: Kesalahan ini terjadi ketika mencoba mengonfigurasi penemuan layanan (pendaftar layanan) untuk layanan yang menggunakan jenis peluncuran. EXTERNAL Penemuan layanan tidak kompatibel dengan jenis EXTERNAL peluncuran.

  1. Periksa jenis peluncuran layanan Anda saat ini:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].launchType"
  2. Jika Anda memerlukan penemuan layanan, ubah layanan Anda untuk menggunakan jenis EC2 atau FARGATE peluncuran:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --launch-type FARGATE
  3. Atau, jika Anda harus menggunakan jenis EXTERNAL peluncuran, hapus konfigurasi registri layanan:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --service-registries "[]"

Untuk informasi selengkapnya, lihat Pengontrol dan strategi penyebaran layanan Amazon ECS.

Kembalikan pembaruan pengontrol penerapan

Jika Anda memutuskan ingin kembali ke pengontrol penerapan sebelumnya, Anda dapat melakukan salah satu hal berikut:

  • Jika Anda menggunakan AWS CloudFormation, Anda dapat menggunakan template sebelumnya untuk membuat tumpukan baru. Untuk informasi selengkapnya, lihat Membuat tumpukan dari Panduan AWS CloudFormation Pengguna.

  • Jika Anda menggunakan konsol Amazon ECS, atau AWS CLI, Anda dapat memperbarui layanan. Untuk informasi selengkapnya, lihat Memperbarui layanan Amazon ECS.

    Jika Anda menggunakan perintah update-service, gunakan --deployment-controller opsi dan atur ke controller deployment sebelumnya.