Pemecahan masalah App Mesh Kubernetes - AWS App Mesh

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

Pemecahan masalah App Mesh Kubernetes

Topik ini merinci masalah umum yang mungkin Anda alami saat menggunakan App Mesh dengan Kubernetes.

Sumber daya App Mesh yang dibuat di Kubernetes tidak dapat ditemukan di App Mesh

Gejala

Anda telah membuat resource App Mesh menggunakan definisi sumber daya kustom Kubernetes (CRD), tetapi resource yang Anda buat tidak terlihat di App Mesh saat Anda menggunakan atau API. AWS Management Console

Resolusi

Kemungkinan penyebabnya adalah kesalahan pada pengontrol Kubernetes untuk App Mesh. Untuk informasi selengkapnya, lihat Pemecahan Masalah di. GitHub Periksa log pengontrol untuk setiap kesalahan atau peringatan yang menunjukkan bahwa pengontrol tidak dapat membuat sumber daya apa pun.

kubectl logs -n appmesh-system -f \ $(kubectl get pods -n appmesh-system -o name | grep controller)

Jika masalah Anda masih belum teratasi, pertimbangkan untuk membuka GitHub masalah atau hubungi AWS Support.

Pod gagal memeriksa kesiapan dan keaktifan setelah envoy sidecar disuntikkan

Gejala

Pod untuk aplikasi Anda sebelumnya berhasil berjalan, tetapi setelah sespan Envoy disuntikkan ke dalam pod, pemeriksaan kesiapan dan keaktifan mulai gagal.

Resolusi

Pastikan bahwa wadah Envoy yang disuntikkan ke dalam pod telah di-bootstrap dengan layanan manajemen Envoy App Mesh. Anda dapat memverifikasi kesalahan apa pun dengan mereferensikan kode kesalahan diUtusan terputus dari layanan manajemen App Mesh Envoy dengan teks kesalahan. Anda dapat menggunakan perintah berikut untuk memeriksa log Envoy untuk pod yang relevan.

kubectl logs -n appmesh-system -f \ $(kubectl get pods -n appmesh-system -o name | grep controller) \ | grep "gRPC config stream closed"

Jika masalah Anda masih belum teratasi, pertimbangkan untuk membuka GitHub masalah atau hubungi AWS Support.

Pod tidak mendaftar atau membatalkan pendaftaran sebagai instance AWS Cloud Map

Gejala

Pod Kubernetes Anda tidak terdaftar atau tidak terdaftar AWS Cloud Map sebagai bagian dari siklus hidupnya. Sebuah pod dapat memulai dengan sukses dan siap untuk melayani lalu lintas, tetapi tidak menerima apa pun. Ketika sebuah pod dihentikan, klien mungkin masih mempertahankan alamat IP-nya dan mencoba mengirim lalu lintas ke sana, gagal.

Resolusi

Ini adalah masalah yang diketahui. Untuk informasi selengkapnya, lihat Pod don't get auto registered/deregistered di Kubernetes dengan masalah. AWS Cloud Map GitHub Karena hubungan antara pod, node virtual App Mesh, dan AWS Cloud Map sumber daya, pengontrol App Mesh untuk Kubernetes dapat menjadi tidak sinkron dan kehilangan sumber daya. Misalnya, hal ini dapat terjadi jika sumber daya node virtual dihapus dari Kubernetes sebelum menghentikan pod yang terkait.

Untuk mengurangi masalah ini:

  • Pastikan Anda menjalankan versi terbaru dari pengontrol App Mesh untuk Kubernetes.

  • Pastikan bahwa AWS Cloud Map namespaceName dan serviceName benar dalam definisi node virtual Anda.

  • Pastikan Anda menghapus semua Pod terkait sebelum menghapus definisi node virtual Anda. Jika Anda memerlukan bantuan untuk mengidentifikasi pod mana yang terkait dengan node virtual, lihatTidak dapat menentukan lokasi pod untuk resource App Mesh berjalan.

  • Jika masalah Anda berlanjut, jalankan perintah berikut untuk memeriksa log pengontrol Anda untuk kesalahan yang dapat membantu mengungkapkan masalah mendasar.

    kubectl logs -n appmesh-system \ $(kubectl get pods -n appmesh-system -o name | grep appmesh-controller)
  • Pertimbangkan untuk menggunakan perintah berikut untuk me-restart pod pengontrol Anda. Ini dapat memperbaiki masalah sinkronisasi.

    kubectl delete -n appmesh-system \ $(kubectl get pods -n appmesh-system -o name | grep appmesh-controller)

Jika masalah Anda masih belum teratasi, pertimbangkan untuk membuka GitHub masalah atau hubungi AWS Support.

Tidak dapat menentukan lokasi pod untuk resource App Mesh berjalan

Gejala

Ketika Anda menjalankan App Mesh di klaster Kubernetes, operator tidak dapat menentukan di mana beban kerja, atau pod, berjalan untuk resource App Mesh tertentu.

Resolusi

Sumber daya pod Kubernetes dianotasi dengan mesh dan node virtual yang terkait dengannya. Anda dapat menanyakan pod mana yang sedang berjalan untuk nama node virtual tertentu dengan perintah berikut.

kubectl get pods --all-namespaces -o json | \ jq '.items[] | { metadata } | select(.metadata.annotations."appmesh.k8s.aws/virtualNode" == "virtual-node-name")'

Jika masalah Anda masih belum teratasi, pertimbangkan untuk membuka GitHub masalah atau hubungi AWS Support.

Tidak dapat menentukan sumber daya App Mesh apa yang dijalankan pod

Gejala

Saat menjalankan App Mesh di klaster Kubernetes, operator tidak dapat menentukan resource App Mesh apa yang dijalankan pod tertentu.

Resolusi

Sumber daya pod Kubernetes dianotasi dengan mesh dan node virtual yang terkait dengannya. Anda dapat menampilkan nama mesh dan node virtual dengan menanyakan pod secara langsung menggunakan perintah berikut.

kubectl get pod pod-name -n namespace -o json | \ jq '{ "mesh": .metadata.annotations."appmesh.k8s.aws/mesh", "virtualNode": .metadata.annotations."appmesh.k8s.aws/virtualNode" }'

Jika masalah Anda masih belum teratasi, pertimbangkan untuk membuka GitHub masalah atau hubungi AWS Support.

Utusan Klien tidak dapat berkomunikasi dengan Layanan Manajemen Utusan App Mesh dengan IMDSv1 dinonaktifkan

Gejala

Saat IMDSv1 dinonaktifkan, Utusan klien tidak dapat berkomunikasi dengan bidang kontrol App Mesh (Layanan Manajemen Utusan). IMDSv2dukungan tidak tersedia pada versi App Mesh Envoy sebelumnya. v1.24.0.0-prod

Resolusi

Untuk mengatasi masalah ini, Anda dapat melakukan salah satu dari tiga hal ini.

  • Tingkatkan ke versi App Mesh Envoy v1.24.0.0-prod atau yang lebih baru, yang memiliki IMDSv2 dukungan.

  • Aktifkan kembali IMDSv1 pada Instance tempat Utusan berjalan. Untuk petunjuk tentang memulihkanIMDSv1, lihat Mengkonfigurasi opsi metadata instance.

  • Jika layanan Anda berjalan di Amazon EKS, disarankan untuk menggunakan peran IAM untuk akun layanan (IRSA) untuk mengambil kredensyal. Untuk petunjuk mengaktifkan IRSA, lihat peran IAM untuk akun layanan.

Jika masalah Anda masih belum teratasi, pertimbangkan untuk membuka GitHub masalah atau hubungi AWS Support.

IRSA tidak berfungsi pada wadah aplikasi saat App Mesh diaktifkan dan Utusan disuntikkan

Gejala

Saat App Mesh diaktifkan pada kluster Amazon EKS dengan bantuan pengontrol App Mesh untuk Amazon EKS, Utusan dan proxyinit kontainer akan disuntikkan ke dalam pod aplikasi. Aplikasi tidak dapat mengasumsikan IRSA dan sebagai gantinya mengasumsikan. node role Ketika kita menjelaskan rincian pod, kita kemudian melihat bahwa variabel AWS_WEB_IDENTITY_TOKEN_FILE atau AWS_ROLE_ARN lingkungan tidak termasuk dalam wadah aplikasi.

Resolusi

Jika salah satu AWS_WEB_IDENTITY_TOKEN_FILE atau variabel AWS_ROLE_ARN lingkungan didefinisikan, maka webhook akan melewati pod. Jangan berikan salah satu dari variabel-variabel ini dan webhook akan menyuntikkannya untuk Anda.

reservedKeys := map[string]string{ "AWS_ROLE_ARN": "", "AWS_WEB_IDENTITY_TOKEN_FILE": "", } ... for _, env := range container.Env { if _, ok := reservedKeys[env.Name]; ok { reservedKeysDefined = true }

Jika masalah Anda masih belum teratasi, pertimbangkan untuk membuka GitHub masalah atau hubungi AWS Support.