Memecahkan masalah Amazon EKS Connector - Amazon EKS

View a markdown version of this page

Memecahkan masalah Amazon EKS Connector - Amazon EKS

Bantu meningkatkan halaman ini

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

Untuk berkontribusi pada panduan pengguna ini, pilih GitHub tautan Edit halaman ini di yang terletak di panel kanan setiap halaman.

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

Memecahkan masalah 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 Konektor Amazon EKS.

Periksa status Konektor Amazon EKS

Untuk memeriksa status Konektor Amazon EKS, ketik:

kubectl get pods -n eks-connector

Periksa log Konektor Amazon EKS

Amazon EKS Connector Pod terdiri dari tiga wadah. Untuk mengambil log lengkap untuk semua wadah 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 clusterName dalam satu AWS akun dan Wil AWS ayah. Jika Anda memiliki beberapa cluster yang terhubung di Amazon EKS, Anda dapat mengonfirmasi cluster Amazon EKS mana tempat cluster Kubernetes saat ini terdaftar. Untuk melakukan ini, masukkan yang berikut ini untuk mengetahui clusterName cluster saat ini.

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 Pod 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 yang dijalankan Amazon EKS Connector.

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

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 cluster terjebak dalam Pending status di konsol Amazon EKS setelah Anda mendaftarkannya, itu mungkin karena Konektor Amazon EKS AWS belum berhasil menghubungkan cluster. Untuk cluster terdaftar, Pending status berarti koneksi tidak berhasil dibuat. Untuk mengatasi masalah ini, pastikan Anda telah menerapkan manifes ke cluster Kubernetes target. Jika Anda menerapkannya ke cluster, tetapi cluster masih dalam status, maka eks-connector statefulset mungkin tidak sehat. Pending Untuk memecahkan masalah ini, lihat Pod Konektor Amazon EKS mengalami crash loop di topik ini.

Kesalahan konsol: Sistem pengguna:serviceaccount:eks-connector:eks-connector tidak dapat menyamar sebagai pengguna sumber daya dalam grup API di lingkup cluster

Konektor Amazon EKS menggunakan peniruan pengguna Kubernetes untuk bertindak atas nama prinsipal IAM dari. Konsol Manajemen AWS Setiap prinsipal yang mengakses API Kubernetes dari akun AWS eks-connector layanan harus diberikan izin untuk menyamar sebagai pengguna Kubernetes yang sesuai dengan ARN IAM sebagai nama pengguna Kubernetes-nya. 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 ke peran alih-alih 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 ARN sesi AWS STS.

Untuk petunjuk tentang cara mengonfigurasi ClusterRole dan memberikan ClusterRoleBinding hak istimewa akun eks-connector layanan untuk menyamar sebagai pengguna yang dipetakan, lihat. Berikan akses untuk melihat resource klaster Kubernetes di konsol Amazon EKS Pastikan bahwa dalam template, %IAM_ARN% diganti dengan IAM ARN dari prinsipal Konsol Manajemen AWS IAM.

Kesalahan konsol: [...] dilarang: Pengguna [...] tidak dapat mencantumkan sumber daya [...] di grup API di cakupan cluster

Pertimbangkan masalah berikut. Konektor Amazon EKS telah berhasil menyamar sebagai prinsipal Konsol Manajemen AWS IAM yang meminta di cluster Kubernetes target. Namun, prinsipal 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-connector melalui diagram helm, Anda dapat dengan mudah memberikan akses kepada pengguna dengan menjalankan perintah berikut. Ganti userARN1 dan userARN2 dengan daftar ARN 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 Kubernetes individual. Untuk informasi selengkapnya dan contoh tambahan, lihat Berikan akses untuk melihat resource klaster Kubernetes di konsol Amazon EKS.

Kesalahan konsol: Amazon EKS tidak dapat berkomunikasi dengan server API cluster Kubernetes 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 terputus antara cluster target dan Wil AWS ayah.

Untuk mengatasi masalah ini, periksa log Konektor Amazon EKS. 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 cluster target, pertimbangkan untuk mendaftarkan ulang cluster ke AWS Wilayah yang terletak lebih dekat dengan Anda.

Pod Konektor Amazon EKS mengalami crash loop

Ada banyak alasan yang dapat menyebabkan Pod Konektor Amazon EKS masuk ke CrashLoopBackOff status. Masalah ini kemungkinan melibatkan connector-init wadah. Periksa status Amazon EKS Connector Pod.

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.

Gagal memulai eks-connector: InvalidActivation

Saat Anda memulai Amazon EKS Connector untuk pertama kalinya, ia mendaftarkan activationId dan activationCode dengan Amazon Web Services. Pendaftaran mungkin gagal, yang dapat menyebabkan connector-init wadah 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 bahwa itu activationCode ada dalam file manifes. Itu activationCode ditambahkan ke rahasia Kubernetes, jadi itu harus dikodekan. base64 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 cluster Kubernetes target sebelum tanggal dan waktu kedaluwarsa. Untuk mengonfirmasi tanggal kedaluwarsa aktivasi Anda, panggil operasi DescribeCluster API.

    aws eks describe-cluster --name my-cluster

    Dalam contoh respons berikut, tanggal dan waktu kedaluwarsa 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, deregistrasikan cluster dan daftarkan lagi. Melakukan hal ini menghasilkan aktivasi baru.

Node cluster tidak memiliki konektivitas keluar

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

Pod Konektor Amazon EKS ada di ImagePullBackOff negara bagian

Jika Anda menjalankan get pods perintah dan Pod berada dalam ImagePullBackOff status, mereka tidak dapat berfungsi dengan baik. Jika Pod Konektor Amazon EKS berada di ImagePullBackOff negara bagian, mereka tidak dapat berfungsi dengan baik. Periksa status Pod Konektor Amazon EKS Anda.

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 Amazon EKS Connector default mereferensikan gambar dari Galeri Publik Amazon ECR. Ada kemungkinan bahwa cluster Kubernetes target tidak dapat menarik gambar dari Galeri Publik Amazon ECR. Selesaikan masalah penarikan gambar Galeri Publik Amazon ECR, atau pertimbangkan untuk mencerminkan gambar di registri wadah pribadi pilihan Anda.