Memecahkan Masalah Instans Terkelola 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 Instans Terkelola Amazon ECS

Gunakan prosedur berikut untuk memecahkan masalah Instans Terkelola Amazon ECS, termasuk masalah umum, teknik diagnostik, dan langkah penyelesaian.

Prasyarat

Sebelum memecahkan masalah Instans Terkelola Amazon ECS, pastikan Anda memiliki persyaratan berikut.

Skenario pemecahan masalah umum

Melihat log agen kontainer Instans Terkelola Amazon ECS

Anda dapat melihat file log Amazon ECS ini di Instans Terkelola Amazon ECS dengan menghubungkan ke wadah istimewa yang berjalan di instans.

Langkah-langkah diagnostik

Menerapkan wadah debug dengan hak istimewa dan kemampuan Linux sebagai tugas Amazon ECS:

Mengatur variabel lingkungan berikut.

Ganti user-input dengan nilai-nilai Anda.

export ECS_CLUSTER_NAME="your-cluster-name" export AWS_REGION="your-region" export ACCOUNT_ID="your-account-id"

Buat definisi tugas menggunakan file CLI JSON yang disebut. node-debugger.json

cat << EOF > node-debugger.json { "family": "node-debugger", "taskRoleArn": "arn:aws:iam::${ACCOUNT_ID}:role/ecsTaskExecutionRole", "executionRoleArn": "arn:aws:iam::${ACCOUNT_ID}:role/ecsTaskExecutionRole", "cpu": "256", "memory": "1024", "networkMode": "host", "pidMode": "host", "requiresCompatibilities": ["MANAGED_INSTANCES", "EC2"], "containerDefinitions": [ { "name": "node-debugger", "image": "public.ecr.aws/amazonlinux/amazonlinux:2023", "essential": true, "privileged": true, "command": ["sleep", "infinity"], "healthCheck": { "command": ["CMD-SHELL", "echo debugger || exit 1"], "interval": 30, "retries": 3, "timeout": 5 }, "linuxParameters": { "initProcessEnabled": true }, "mountPoints": [ { "sourceVolume": "host-root", "containerPath": "/host", "readOnly": false } ], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/aws/ecs/node-debugger", "awslogs-create-group": "true", "awslogs-region": "${AWS_REGION}", "awslogs-stream-prefix": "ecs" } } } ], "volumes": [ { "name": "host-root", "host": { "sourcePath": "/" } } ] } EOF

Daftar, lalu jalankan tugas. Jalankan perintah berikut.

aws ecs register-task-definition --cli-input-json file://node-debugger.json TASK_ARN=$(aws ecs run-task \ --cluster $ECS_CLUSTER_NAME \ --task-definition node-debugger \ --enable-execute-command \ --capacity-provider-strategy capacityProvider=managed-instances-default,weight=1 \ --query 'tasks[0].taskArn' --output text) # Wait for task to be running aws ecs wait tasks-running --cluster $ECS_CLUSTER_NAME --tasks $TASK_ARN

Connect ke wadah. Jalankan perintah berikut.

aws ecs execute-command \ --cluster $ECS_CLUSTER_NAME \ --task $TASK_ARN \ --container node-debugger \ --interactive \ --command "/bin/sh"

Periksa log agen Amazon ECS:

Dalam sesi interaktif wadah, jalankan perintah berikut:

# Install required tools yum install -y util-linux-core # View ECS agent logs nsenter -t 1 -m -p cat /var/log/ecs/ecs-agent.log | tail -50 # Check agent registration nsenter -t 1 -m -p grep "Registered container instance" /var/log/ecs/ecs-agent.log Example Output: {"level":"info","time":"2025-10-16T12:39:37.665","msg":"Registered container instance with cluster!"} # Verify capabilities nsenter -t 1 -m -p grep "Response contained expected value for attribute" /var/log/ecs/ecs-agent.log

Periksa metrik agen:

Jalankan perintah berikut untuk melihat log.

# View metrics logs nsenter -t 1 -m -p cat /var/log/ecs/metrics.log | tail -20

Masalah penempatan tugas

Berikut ini adalah gejala masalah penempatan tugas:

  • Tugas terjebak dalam status PENDING

  • Tugas gagal dimulai di Instans Terkelola Amazon ECS

  • Kesalahan sumber daya tidak mencukupi

Langkah-langkah diagnostik

Jalankan perintah berikut untuk mendiagnosis masalah penempatan tugas dan mengumpulkan informasi tentang kapasitas cluster, instance kontainer, dan layanan sistem:

# Check cluster capacity aws ecs describe-clusters --clusters cluster-name --include STATISTICS # Check cluster capacity providers aws ecs describe-clusters --clusters cluster-name --include STATISTICS --query 'clusters[].capacityProviders' # List container instances aws ecs list-container-instances --cluster cluster-name # Check container instance details aws ecs describe-container-instances --cluster cluster-name --container-instances container-instance-arn # Check container instance remaining resources CPU/Mem aws ecs describe-container-instances --cluster $ECS_CLUSTER_NAME --container-instances container-instance-arn --query 'containerInstances[].remainingResources' # Check container instance Security Group aws ecs describe-container-instances --cluster $ECS_CLUSTER_NAME --container-instances container-instance-arn --query 'containerInstances[].ec2InstanceId' --output text aws ec2 describe-instances --instance-ids instance-id --query 'Reservations[0].Instances[0].SecurityGroups' aws ec2 describe-security-groups --group-ids security-group-id

Pemantauan layanan sistem:

# Check Containerd status nsenter -t 1 -m -p systemctl status containerd.service # Check Amazon ECS container agent status nsenter -t 1 -m -p systemctl status ecs

Resolusi

Untuk mengatasi masalah penempatan tugas, ikuti langkah-langkah berikut untuk memastikan konfigurasi dan kapasitas yang tepat:

  • Verifikasi persyaratan sumber daya tugas vs kapasitas yang tersedia

  • Periksa kendala dan strategi penempatan

  • Pastikan penyedia kapasitas Instans Terkelola Amazon ECS dikonfigurasi

  • Pastikan grup keamanan instans tugas dan kontainer memiliki aturan keluar yang memungkinkan lalu lintas untuk titik akhir manajemen agen Amazon ECS

Masalah jaringan

Berikut ini adalah synptom masalah jaringan:

  • Tugas tidak dapat menjangkau layanan eksternal

  • Masalah resolusi DNS

Langkah-langkah diagnostik

Tes konektivitas jaringan:

Dari wadah debug, jalankan perintah berikut:

catatan

Konfirmasikan grup keamanan yang dilampirkan ke penyedia kapasitas Anda atau tugas Amazon ECS mengizinkan lalu lintas.

# Install DNS Utility yum install bind-utils -y # Test DNS resolution nslookup amazon.com # Test external connectivity curl -I https://amazon.com

Kendala sumber daya

Berikut ini adalah synptom masalah jaringan:

  • Tugas terbunuh karena batas memori

  • Pelambatan CPU

  • Masalah ruang disk

Langkah-langkah diagnostik

Jalankan perintah untuk memantau sumber daya dan batas kontainer.

Pemantauan sumber daya:

# Check memory usage nsenter -t 1 -m -p free -h # Check disk usage nsenter -t 1 -m -p lsblk # Check disk usage nsenter -t 1 -m -p df -h

Batas Kontainer:

# Check OOM kills nsenter -t 1 -m -p dmesg | grep -i "killed process"

Masalah pemutusan agen instans kontainer

Berikut ini adalah gejala masalah pemutusan agen instance container:

  • Instans kontainer ditampilkan sebagai terputus di konsol Amazon ECS

  • Tugas gagal ditempatkan pada instance tertentu

  • Kegagalan pendaftaran agen di log

Langkah-langkah diagnostik

Jika ada tugas hak istimewa yang berjalan di host yang dapat diakses ECS Exec, jalankan perintah berikut untuk mendiagnosis masalah konektivitas agen:

# check service status nsenter -t 1 -m -p systemctl restart ecs nsenter -t 1 -m -p systemctl restart containerd # restart stopped services nsenter -t 1 -m -p systemctl restart ecs nsenter -t 1 -m -p systemctl restart containerd

Jika tidak, paksa deregister Instans Terkelola Amazon ECS. Jalankan perintah berikut:

# list ECS Managed Instance container aws ecs list-container-instances --cluster managed-instances-cluster --query 'containerInstanceArns' --output text # deregister the specific container instance aws ecs deregister-container-instance \ --cluster $ECS_CLUSTER_NAME \ --container-instance container-instance-arn \ --force

Resolusi

Untuk mengatasi masalah pemutusan agen, ikuti langkah-langkah berikut:

  • Verifikasi izin peran IAM untuk instance kontainer

  • Periksa aturan grup keamanan mengizinkan lalu lintas HTTPS keluar ke titik akhir ECS

  • Pastikan konektivitas jaringan ke AWS layanan

  • Mulai ulang layanan agen ECS jika perlu: nsenter -t 1 -m -p systemctl restart ecs

  • Verifikasi konfigurasi ECS_CLUSTER di/etc/ecs/ecs.config cocok dengan nama cluster Anda

Analisis Log di Instans Terkelola Amazon ECS

Log sistem

Gunakan perintah berikut untuk memeriksa log sistem dan mengidentifikasi potensi masalah dengan instance terkelola:

# Check system messages nsenter -t 1 -m -p journalctl --no-pager -n 50 # Check kernel logs nsenter -t 1 -m -p dmesg | tail -20 # Check for disk space errors nsenter -t 1 -m -p journalctl --no-pager | grep -i "no space\|disk full\|enospc"

Gunakan EC2 AWS CLI untuk mendapatkan output konsol dari Instans Terkelola Amazon ECS

Gunakan ID EC2 instans Amazon untuk mengambil output konsol.

Ganti user-input dengan nilai-nilai Anda.

aws ec2 get-console-output --instance-id instance-id --latest --output text

Pembersihan

Jalankan yang berikut ini untuk menghentikan tugas deug dan membatalkan pendaftaran definisi tugas.

# Stop debug task aws ecs stop-task --cluster $ECS_CLUSTER_NAME --task $TASK_ARN # Deregister task definition (optional) aws ecs deregister-task-definition --task-definition node-debugger

Sumber daya tambahan

Untuk informasi selengkapnya tentang pemecahan masalah Instans Terkelola Amazon ECS, lihat sumber daya berikut: