Memecahkan masalah dengan kemampuan kro - 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 kro

Topik ini memberikan panduan pemecahan masalah untuk Kemampuan EKS untuk kro, termasuk pemeriksaan kesehatan kemampuan, izin RBAC, kesalahan ekspresi CEL, dan masalah komposisi sumber daya.

catatan

Kemampuan EKS sepenuhnya dikelola dan dijalankan di luar cluster Anda. Anda tidak memiliki akses ke log pengontrol atau kro-system namespace. Pemecahan masalah berfokus pada kesehatan kemampuan, konfigurasi RBAC, dan status sumber daya.

Kemampuan aktif tetapi ResourceGraphDefinitions tidak bekerja

Jika kemampuan kro Anda menunjukkan ACTIVE status tetapi ResourceGraphDefinitions tidak membuat sumber daya yang mendasarinya, periksa kesehatan kemampuan, izin RBAC, dan status sumber daya.

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/rumah#/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-kro # Look for issues in the health section

Penyebab umum:

  • Izin RBAC hilang: kro tidak memiliki izin untuk membuat sumber daya Kubernetes yang mendasarinya

  • Ekspresi CEL tidak valid: Kesalahan sintaks di ResourceGraphDefinition

  • Ketergantungan sumber daya: Sumber daya dependen belum siap

  • Validasi skema: Instance tidak cocok dengan persyaratan skema RGD

Verifikasi izin RBAC:

# Check if capability has cluster admin policy kubectl get accessentry -A | grep kro

Jika kemampuan tidak memiliki izin yang diperlukan, kaitkan AmazonEKSClusterAdminPolicy dengan entri akses kemampuan kro, atau buat kebijakan RBAC yang lebih ketat untuk penggunaan produksi. Lihat Konfigurasikan izin kro untuk detail.

Periksa ResourceGraphDefinition status:

# List all RGDs kubectl get resourcegraphdefinition # Describe specific RGD kubectl describe resourcegraphdefinition my-rgd # Check for validation errors kubectl get resourcegraphdefinition my-rgd -o jsonpath='{.status.conditions}'

ResourceGraphDefinitions memiliki tiga kondisi status utama:

  • ResourceGraphAccepted- Apakah RGD lulus validasi (sintaks CEL, pemeriksaan tipe, keberadaan bidang)

  • KindReady- Apakah CRD untuk API kustom Anda dibuat dan terdaftar

  • ControllerReady- Apakah kro secara aktif menonton instance API kustom Anda

Jika ResourceGraphAccepted yaFalse, periksa pesan kondisi untuk kesalahan validasi seperti bidang yang tidak dikenal, ketidakcocokan tipe, atau dependensi melingkar.

Instans dibuat tetapi sumber daya yang mendasarinya tidak muncul

Jika instance sumber daya kustom ada tetapi sumber daya Kubernetes yang mendasarinya (Deployment, Services, ConfigMaps) tidak dibuat, verifikasi kro memiliki izin dan periksa kesalahan komposisi.

Periksa status instance:

# Describe the instance (replace with your custom resource kind and name) kubectl describe custom-kind my-instance # View instance events kubectl get events --field-selector involvedObject.name=my-instance # Check instance status conditions kubectl get custom-kind my-instance -o jsonpath='{.status.conditions}' # Check instance state kubectl get custom-kind my-instance -o jsonpath='{.status.state}'

Instance memiliki state bidang yang menunjukkan status tingkat tinggi:

  • ACTIVE- Instance berhasil berjalan

  • IN_PROGRESS- Instance sedang diproses atau direkonsiliasi

  • FAILED- Instance gagal untuk mendamaikan

  • DELETING- Instance sedang dihapus

  • ERROR- Terjadi kesalahan selama pemrosesan

Instans juga memiliki empat kondisi status:

  • InstanceManaged- Finalizer dan label diatur dengan benar

  • GraphResolved- Grafik runtime dibuat dan sumber daya diselesaikan

  • ResourcesReady- Semua sumber daya dibuat dan siap

  • Ready- Kesehatan contoh keseluruhan (hanya menjadi True ketika semua sub-kondisi) True

Fokus pada Ready kondisi untuk menentukan kesehatan contoh. Jika Ready yaFalse, periksa sub-kondisi untuk mengidentifikasi fase mana yang gagal.

Verifikasi izin RBAC:

Kemampuan kro membutuhkan izin untuk membuat sumber daya Kubernetes yang mendasari yang ditentukan dalam Anda. ResourceGraphDefinitions

# Check if the capability has the AmazonEKSClusterAdminPolicy kubectl get accessentry -A | grep kro

Jika izin tidak ada, kaitkan AmazonEKSClusterAdminPolicy dengan entri akses kemampuan kro, atau buat kebijakan RBAC yang lebih ketat untuk penggunaan produksi. Lihat Konfigurasikan izin kro untuk detail.

Kesalahan ekspresi CEL

Kesalahan ekspresi CEL ditangkap pada waktu ResourceGraphDefinition pembuatan, bukan saat instance dibuat. kro memvalidasi semua sintaks CEL, mengecek tipe ekspresi terhadap skema Kubernetes, dan memverifikasi keberadaan bidang saat Anda membuat RGD.

Kesalahan validasi CEL umum:

  • Referensi bidang yang tidak ditentukan: Mereferensikan bidang yang tidak ada dalam skema atau sumber daya

  • Ketidakcocokan tipe: Ekspresi mengembalikan tipe yang salah (misalnya, string di mana bilangan bulat diharapkan)

  • Sintaks tidak valid: Tanda kurung, tanda kutip, atau operator tidak ada dalam ekspresi CEL

  • Jenis sumber daya tidak dikenal: Merujuk CRD yang tidak ada di cluster

Periksa status validasi RGD:

# Check if RGD was accepted kubectl get resourcegraphdefinition my-rgd -o jsonpath='{.status.conditions[?(@.type=="ResourceGraphAccepted")]}' # View detailed validation errors kubectl describe resourcegraphdefinition my-rgd

Jika ResourceGraphAccepted yaFalse, pesan kondisi berisi kesalahan validasi.

Contoh ekspresi CEL yang valid:

# Reference schema field ${schema.spec.appName} # Conditional expression ${schema.spec.replicas > 1} # String template (expressions must return strings) name: "${schema.spec.appName}-service" # Standalone expression (can be any type) replicas: ${schema.spec.replicaCount} # Resource reference ${deployment.status.availableReplicas} # Optional field access (returns null if field doesn't exist) ${configmap.data.?DATABASE_URL}

Dependensi sumber daya tidak terselesaikan

kro secara otomatis menyimpulkan dependensi dari ekspresi CEL dan membuat sumber daya dalam urutan yang benar. Jika sumber daya tidak dibuat seperti yang diharapkan, periksa urutan ketergantungan dan kesiapan sumber daya.

Lihat urutan pembuatan yang dihitung:

# See the order kro will create resources kubectl get resourcegraphdefinition my-rgd -o jsonpath='{.status.topologicalOrder}'

Ini menunjukkan urutan yang dihitung berdasarkan referensi ekspresi CEL antar sumber daya.

Periksa kesiapan sumber daya:

# View instance status to see which resources are ready kubectl get custom-kind my-instance -o jsonpath='{.status}' # Check specific resource status kubectl get deployment my-deployment -o jsonpath='{.status.conditions}'

Verifikasi kondisi ReadyWhen (jika digunakan):

readyWhenBidang ini opsional. Jika tidak ditentukan, sumber daya dianggap siap segera setelah pembuatan. Jika Anda telah menentukan readyWhen kondisi, verifikasi bahwa kondisi tersebut memeriksa kesiapan sumber daya dengan benar:

resources: - id: deployment readyWhen: - ${deployment.status.availableReplicas == deployment.spec.replicas}

Periksa acara sumber daya:

# View events for the underlying resources kubectl get events -n namespace --sort-by='.lastTimestamp'

Kegagalan validasi skema

Jika instance gagal dibuat karena kesalahan validasi skema, verifikasi instance cocok dengan persyaratan skema RGD.

Periksa kesalahan validasi:

# Attempt to create instance and view error kubectl apply -f instance.yaml # View existing instance validation status kubectl describe custom-kind my-instance | grep -A 5 "Validation"

Masalah validasi umum:

  • Bidang wajib hilang: Instance tidak menyediakan semua bidang skema yang diperlukan

  • Ketidakcocokan tipe: Menyediakan string di mana bilangan bulat diharapkan

  • Nilai enum tidak valid: Menggunakan nilai yang tidak ada dalam daftar yang diizinkan

  • Ketidakcocokan pola: String tidak cocok dengan pola regex

Tinjau skema RGD:

# View the schema definition kubectl get resourcegraphdefinition my-rgd -o jsonpath='{.spec.schema}'

Pastikan instans Anda menyediakan semua bidang wajib dengan tipe yang benar.

Langkah selanjutnya