Memecahkan masalah di Amazon EKS Connector - Amazon EKS

Bantu tingkatkan halaman ini

Ingin berkontribusi pada panduan pengguna ini? Gulir ke bagian bawah halaman ini dan pilih Edit halaman ini GitHub. Kontribusi Anda akan membantu membuat panduan pengguna kami lebih baik untuk semua orang.

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

Memecahkan masalah di Amazon EKS Connector

Topik ini mencakup beberapa kesalahan umum yang mungkin Anda temui saat menggunakan Konektor Amazon EKS, termasuk petunjuk tentang cara mengatasinya dan solusinya.

Pemecahan masalah dasar

Bagian ini menjelaskan langkah-langkah untuk mendiagnosis masalah jika tidak jelas.

Periksa status Konektor Amazon EKS

Periksa status Konektor Amazon EKS.

kubectl get pods -n eks-connector

Periksa log Konektor Amazon EKS

Konektor Amazon EKS Pod terdiri dari tiga kontainer. Untuk mengambil log lengkap untuk semua kontainer ini sehingga Anda dapat memeriksanya, jalankan perintah berikut:

  • connector-init

    kubectl logs eks-connector-0 --container connector-init -n eks-connector kubectl logs eks-connector-1 --container connector-init -n eks-connector
  • connector-proxy

    kubectl logs eks-connector-0 --container connector-proxy -n eks-connector kubectl logs eks-connector-1 --container connector-proxy -n eks-connector
  • connector-agent

    kubectl exec eks-connector-0 --container connector-agent -n eks-connector -- cat /var/log/amazon/ssm/amazon-ssm-agent.log kubectl exec eks-connector-1 --container connector-agent -n eks-connector -- cat /var/log/amazon/ssm/amazon-ssm-agent.log

Dapatkan nama cluster yang efektif

Cluster Amazon EKS diidentifikasi secara unik oleh clusterName dalam satu AWS akun dan. Wilayah AWS Jika Anda memiliki beberapa cluster yang terhubung di Amazon EKS, Anda dapat mengonfirmasi klaster Amazon EKS mana yang terdaftar untuk Kubernetes cluster saat ini. Untuk melakukan ini, masukkan yang berikut ini untuk mengetahui cluster saat ini. clusterName

kubectl exec eks-connector-0 --container connector-agent -n eks-connector \ -- cat /var/log/amazon/ssm/amazon-ssm-agent.log | grep -m1 -oE "eks_c:[a-zA-Z0-9_-]+" | sed -E "s/^.*eks_c:([a-zA-Z0-9_-]+)_[a-zA-Z0-9]+.*$/\1/" kubectl exec eks-connector-1 --container connector-agent -n eks-connector \ -- cat /var/log/amazon/ssm/amazon-ssm-agent.log | grep -m1 -oE "eks_c:[a-zA-Z0-9_-]+" | sed -E "s/^.*eks_c:([a-zA-Z0-9_-]+)_[a-zA-Z0-9]+.*$/\1/"

Perintah lain-lain

Perintah berikut berguna untuk mengambil informasi yang Anda butuhkan untuk memecahkan masalah.

  • Gunakan perintah berikut untuk mengumpulkan gambar yang digunakan oleh Pods di Amazon EKS Connector.

    kubectl get pods -n eks-connector -o jsonpath="{.items[*].spec.containers[*].image}" | tr -s '[[:space:]]' '\n'
  • Gunakan perintah berikut untuk menentukan nama node tempat Amazon EKS Connector berjalan.

    kubectl get pods -n eks-connector -o jsonpath="{.items[*].spec.nodeName}" | tr -s '[[:space:]]' '\n'
  • Jalankan perintah berikut untuk mendapatkan versi Kubernetes klien dan server Anda.

    kubectl version
  • Jalankan perintah berikut untuk mendapatkan informasi tentang node Anda.

    kubectl get nodes -o wide --show-labels

Masalah helm: 403 Terlarang

Jika Anda menerima kesalahan berikut saat menjalankan perintah helm install:

Error: INSTALLATION FAILED: unexpected status from HEAD request to https://public.ecr.aws/v2/eks-connector/eks-connector-chart/manifests/0.0.6: 403 Forbidden

Anda dapat menjalankan baris berikut untuk memperbaikinya:

docker logout public.ecr.aws

Kesalahan konsol: cluster macet dalam status Tertunda

Jika klaster macet dalam Pending status di konsol Amazon EKS setelah Anda mendaftarkannya, itu mungkin karena Konektor Amazon EKS AWS belum berhasil menghubungkan cluster. Untuk klaster terdaftar, Pending status berarti bahwa koneksi tidak berhasil dibuat. Untuk mengatasi masalah ini, pastikan Anda telah menerapkan manifes ke Kubernetes kluster target. Jika Anda menerapkannya ke cluster, tetapi cluster masih dalam Pending status, maka eks-connector statefulset mungkin tidak sehat. Untuk memecahkan masalah ini, lihat Konektor Amazon EKS Pods sedang crash looping di topik ini.

Kesalahan konsol: User “system:serviceaccount:eks-connector:eks-connector” can't impersonate resource “users” in API group “” di ruang lingkup cluster

Konektor Amazon EKS menggunakan peniruan identitas Kubernetes pengguna untuk bertindak atas nama kepala sekolah IAM dari. AWS Management Console Setiap prinsipal yang mengakses Kubernetes API dari akun AWS eks-connector layanan harus diberikan izin untuk menyamar sebagai Kubernetes pengguna yang sesuai dengan IAM ARN sebagai nama penggunanya. Kubernetes Dalam contoh berikut, IAM ARN dipetakan ke pengguna. Kubernetes

  • Pengguna IAM john dari AWS akun 111122223333 dipetakan ke pengguna. Kubernetes Praktik terbaik IAM menyarankan agar Anda memberikan izin untuk peran, bukan pengguna.

    arn:aws:iam::111122223333:user/john
  • Peran IAM admin dari AWS akun 111122223333 dipetakan ke pengguna: Kubernetes

    arn:aws:iam::111122223333:role/admin

    Hasilnya adalah peran IAM ARN, bukan AWS STS sesi ARN.

Untuk petunjuk tentang cara mengonfigurasi ClusterRole dan ClusterRoleBinding memberikan hak istimewa akun eks-connector layanan untuk meniru pengguna yang dipetakan, lihat. Memberikan akses ke prinsipal IAM untuk melihat Kubernetes sumber daya di cluster Pastikan bahwa dalam template, %IAM_ARN% diganti dengan IAM ARN dari kepala IAM AWS Management Console .

Kesalahan konsol: [...] is forbidden: User [...] cannot list resource “[...] in API group” pada lingkup cluster

Pertimbangkan masalah berikut. Konektor Amazon EKS telah berhasil menyamar sebagai prinsipal AWS Management Console IAM yang meminta di cluster target. Kubernetes Namun, kepala sekolah yang ditiru tidak memiliki izin RBAC untuk operasi API. Kubernetes

Untuk mengatasi masalah ini, ada dua metode untuk memberikan izin kepada pengguna tambahan. Jika sebelumnya Anda menginstal eks-konektor melalui bagan helm, Anda dapat dengan mudah memberikan akses kepada pengguna dengan menjalankan perintah berikut. Ganti userARN1 dan userARN2 dengan daftar ARN dari peran IAM untuk memberikan akses untuk melihat sumber daya: Kubernetes

helm upgrade eks-connector oci://public.ecr.aws/eks-connector/eks-connector-chart \ --reuse-values \ --set 'authentication.allowedUserARNs={userARN1,userARN2}'

Atau, sebagai administrator cluster, berikan tingkat hak istimewa RBAC yang sesuai kepada pengguna individu. Kubernetes Untuk informasi selengkapnya dan contoh tambahan, lihat Memberikan akses ke prinsipal IAM untuk melihat Kubernetes sumber daya di cluster.

Kesalahan konsol: Amazon EKS tidak dapat berkomunikasi dengan server API Kubernetes cluster Anda. Cluster harus dalam keadaan AKTIF agar koneksi berhasil. Coba lagi dalam beberapa menit.

Jika layanan Amazon EKS tidak dapat berkomunikasi dengan konektor Amazon EKS di cluster target, itu mungkin karena salah satu alasan berikut:

  • Konektor Amazon EKS di cluster target tidak sehat.

  • Konektivitas yang buruk atau koneksi yang terputus antara cluster target dan. Wilayah AWS

Untuk mengatasi masalah ini, periksa log Amazon EKS Connector. Jika Anda tidak melihat kesalahan untuk Konektor Amazon EKS, coba lagi koneksi setelah beberapa menit. Jika Anda secara teratur mengalami latensi tinggi atau konektivitas intermiten untuk kluster target, pertimbangkan untuk mendaftarkan ulang cluster ke cluster Wilayah AWS yang terletak lebih dekat dengan Anda.

Konektor Amazon EKS Pods sedang crash looping

Ada banyak alasan yang dapat menyebabkan konektor Pod Amazon EKS memasuki CrashLoopBackOff status. Masalah ini kemungkinan melibatkan connector-init wadah. Periksa status konektor Amazon EKSPod.

kubectl get pods -n eks-connector

Contoh output adalah sebagai berikut.

NAME READY STATUS RESTARTS AGE eks-connector-0 0/2 Init:CrashLoopBackOff 1 7s

Jika output Anda mirip dengan output sebelumnya, lihat Periksa log Konektor Amazon EKS untuk memecahkan masalah.

Failed to initiate eks-connector: InvalidActivation

Saat Anda memulai Konektor Amazon EKS untuk pertama kalinya, ia mendaftarkan activationId dan activationCode dengan Amazon Web Services. Pendaftaran mungkin gagal, yang dapat menyebabkan connector-init penampung mogok dengan kesalahan yang mirip dengan kesalahan berikut.

F1116 20:30:47.261469       1 init.go:43] failed to initiate eks-connector: InvalidActivation:

Untuk memecahkan masalah ini, pertimbangkan penyebab berikut dan perbaikan yang disarankan:

  • Pendaftaran mungkin gagal karena activationId dan activationCode tidak ada dalam file manifes Anda. Jika ini masalahnya, pastikan bahwa itu adalah nilai yang benar yang dikembalikan dari operasi RegisterCluster API, dan itu activationCode ada di file manifes. activationCodeItu ditambahkan ke Kubernetes rahasia, jadi harus base64 dikodekan. Untuk informasi selengkapnya, lihat Langkah 1: Mendaftarkan cluster.

  • Pendaftaran mungkin gagal karena aktivasi Anda kedaluwarsa. Ini karena, untuk alasan keamanan, Anda harus mengaktifkan Konektor Amazon EKS dalam waktu tiga hari setelah mendaftarkan cluster. Untuk mengatasi masalah ini, pastikan manifes Amazon EKS Connector diterapkan ke Kubernetes cluster target sebelum tanggal dan waktu kedaluwarsa. Untuk mengonfirmasi tanggal kedaluwarsa aktivasi Anda, hubungi operasi DescribeCluster API.

    aws eks describe-cluster --name my-cluster

    Dalam contoh respons berikut, tanggal kedaluwarsa dan waktu dicatat sebagai2021-11-12T22:28:51.101000-08:00.

    { "cluster": { "name": "my-cluster", "arn": "arn:aws:eks:region:111122223333:cluster/my-cluster", "createdAt": "2021-11-09T22:28:51.449000-08:00", "status": "FAILED", "tags": { }, "connectorConfig": { "activationId": "00000000-0000-0000-0000-000000000000", "activationExpiry": "2021-11-12T22:28:51.101000-08:00", "provider": "OTHER", "roleArn": "arn:aws:iam::111122223333:role/my-connector-role" } } }

    Jika activationExpiry lulus, deregister cluster dan daftarkan lagi. Lakukan ini menghasilkan aktivasi baru.

Node cluster tidak memiliki konektivitas keluar

Agar berfungsi dengan baik, Konektor Amazon EKS memerlukan konektivitas keluar ke beberapa titik AWS akhir. Anda tidak dapat menghubungkan cluster pribadi tanpa konektivitas keluar ke target Wilayah AWS. Untuk mengatasi masalah ini, Anda harus menambahkan konektivitas keluar yang diperlukan. Untuk informasi tentang persyaratan konektor, lihat Pertimbangan Konektor Amazon EKS.

Konektor Amazon EKS Pods sedang dalam ImagePullBackOff keadaan

Jika Anda menjalankan get pods perintah dan Pods berada dalam ImagePullBackOff status, mereka tidak dapat berfungsi dengan baik. Jika Konektor Pods Amazon EKS dalam ImagePullBackOff keadaan, mereka tidak dapat berfungsi dengan baik. Periksa status Konektor Amazon EKS AndaPods.

kubectl get pods -n eks-connector

Contoh output adalah sebagai berikut.

NAME READY STATUS RESTARTS AGE eks-connector-0 0/2 Init:ImagePullBackOff 0 4s

File manifes Konektor Amazon EKS default mereferensikan gambar dari Galeri Publik Amazon ECR. Ada kemungkinan bahwa Kubernetes kluster target tidak dapat menarik gambar dari Galeri Publik Amazon ECR. Atasi masalah tarik gambar Galeri Publik Amazon ECR, atau pertimbangkan untuk mencerminkan gambar di registri penampung pribadi pilihan Anda.