View a markdown version of this page

Memecahkan masalah dengan kemampuan ACK - Amazon EKS

Bantu tingkatkan 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 Edit halaman ini pada GitHub tautan 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 dengan kemampuan ACK

catatan

Kemampuan EKS sepenuhnya dikelola dan dijalankan di luar cluster Anda. Anda tidak memiliki akses ke log pengontrol atau ruang nama pengontrol. Pemecahan masalah berfokus pada kesehatan kemampuan, status sumber daya, dan konfigurasi IAM.

Kemampuan aktif tetapi sumber daya tidak sedang dibuat

Jika kemampuan ACK Anda menunjukkan ACTIVE status tetapi sumber daya tidak dibuat AWS, periksa kesehatan kemampuan, status sumber daya, dan izin IAM.

Periksa kesehatan kemampuan:

Anda dapat melihat masalah kesehatan dan status kemampuan di konsol EKS atau menggunakan AWS CLI.

Konsol:

  1. Buka konsol Amazon EKS di https://console.aws.amazon.com/eks/home #/cluster.

  2. Pilih nama cluster Anda.

  3. Pilih tab Observability.

  4. Pilih Monitor cluster.

  5. Pilih tab Kemampuan untuk melihat kesehatan dan status untuk semua kemampuan.

AWS CLI:

# View capability status and health aws eks describe-capability \ --region region-code \ --cluster-name my-cluster \ --capability-name my-ack # Look for issues in the health section

Penyebab umum:

  • Izin IAM hilang: Peran Kemampuan tidak memiliki izin untuk layanan AWS

  • Namespace yang salah: Sumber daya dibuat di namespace tanpa hak IAMRoleSelector

  • Spesifikasi sumber daya tidak valid: Periksa kondisi status sumber daya untuk kesalahan validasi

  • Pelambatan API: Batas laju AWS API tercapai

  • Webhooks penerimaan: Webhook masuk memblokir pengontrol dari menambal status sumber daya

Periksa status sumber daya:

# Describe the resource to see conditions and events kubectl describe bucket my-bucket -n default # Look for status conditions kubectl get bucket my-bucket -n default -o jsonpath='{.status.conditions}' # View resource events kubectl get events --field-selector involvedObject.name=my-bucket -n default

Verifikasi izin IAM:

# View the Capability Role's policies aws iam list-attached-role-policies --role-name my-ack-capability-role aws iam list-role-policies --role-name my-ack-capability-role # Get specific policy details aws iam get-role-policy --role-name my-ack-capability-role --policy-name policy-name

Sumber daya dibuat AWS tetapi tidak ditampilkan di Kubernetes

ACK hanya melacak sumber daya yang dibuatnya melalui manifes Kubernetes. Untuk mengelola AWS sumber daya yang ada dengan ACK, gunakan fitur adopsi.

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: existing-bucket annotations: services.k8s.aws/adoption-policy: "adopt-or-create" spec: name: my-existing-bucket-name

Untuk informasi lebih lanjut tentang adopsi sumber daya, lihatKonsep ACK.

Cross-account sumber daya yang tidak diciptakan

Jika sumber daya tidak dibuat di AWS akun target saat menggunakan Penyeleksi Peran IAM, verifikasi hubungan kepercayaan dan IAMRoleSelector konfigurasi.

Verifikasi hubungan kepercayaan:

# Check the trust policy in the target account role aws iam get-role --role-name cross-account-ack-role --query 'Role.AssumeRolePolicyDocument'

Kebijakan kepercayaan harus memungkinkan Peran Kemampuan akun sumber untuk mengasumsikannya.

Konfirmasikan IAMRoleSelector konfigurasi:

# List IAMRoleSelectors (cluster-scoped) kubectl get iamroleselector # Describe specific selector kubectl describe iamroleselector my-selector

Verifikasi penyelarasan namespace:

IAMRoleSelectors adalah sumber daya cakupan cluster tetapi menargetkan ruang nama tertentu. Pastikan sumber daya ACK Anda berada di namespace yang cocok dengan pemilih IAMRoleSelector namespace:

# Check resource namespace kubectl get bucket my-cross-account-bucket -n production # List all IAMRoleSelectors (cluster-scoped) kubectl get iamroleselector # Check which namespace the selector targets kubectl get iamroleselector my-selector -o jsonpath='{.spec.namespaceSelector}'

Periksa IAMRoleSelected kondisi:

Verifikasi bahwa IAMRoleSelector telah berhasil dicocokkan dengan sumber daya Anda dengan memeriksa ACK.IAMRoleSelected kondisi:

# Check if IAMRoleSelector was matched kubectl get bucket my-cross-account-bucket -n production -o jsonpath='{.status.conditions[?(@.type=="ACK.IAMRoleSelected")]}'

Jika kondisinya False atau hilang, pemilih namespace tidak cocok dengan namespace sumber daya. IAMRoleSelector Verifikasi bahwa pemilih namespaceSelector cocok dengan label namespace sumber daya Anda.

Periksa izin Peran Kemampuan:

Kebutuhan sts:AssumeRole dan sts:TagSession izin Peran Kemampuan untuk peran akun target:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["sts:AssumeRole", "sts:TagSession"], "Resource": [.replaceable]`"arn:aws:iam::444455556666:role/cross-account-ack-role"` } ] }

Untuk konfigurasi lintas-akun yang mendetail, lihatKonfigurasikan izin ACK.

Langkah selanjutnya