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:
-
Buka konsol Amazon EKS di https://console.aws.amazon.com/eks/rumah#/cluster
. -
Pilih nama cluster Anda.
-
Pilih tab Observability.
-
Pilih Monitor cluster.
-
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 describecustom-kindmy-instance# View instance events kubectl get events --field-selector involvedObject.name=my-instance# Check instance status conditions kubectl getcustom-kindmy-instance-o jsonpath='{.status.conditions}' # Check instance state kubectl getcustom-kindmy-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 menjadiTrueketika 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 resourcegraphdefinitionmy-rgd-o jsonpath='{.status.conditions[?(@.type=="ResourceGraphAccepted")]}' # View detailed validation errors kubectl describe resourcegraphdefinitionmy-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 resourcegraphdefinitionmy-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 getcustom-kindmy-instance-o jsonpath='{.status}' # Check specific resource status kubectl get deploymentmy-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 -nnamespace--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 describecustom-kindmy-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 resourcegraphdefinitionmy-rgd-o jsonpath='{.spec.schema}'
Pastikan instans Anda menyediakan semua bidang wajib dengan tipe yang benar.
Langkah selanjutnya
-
pertimbangan kro untuk EKS- pertimbangan kro dan praktik terbaik
-
Konfigurasikan izin kro- Konfigurasikan RBAC untuk tim platform dan aplikasi
-
konsep kro- Memahami konsep kro dan siklus hidup sumber daya
-
Memecahkan Masalah Kemampuan EKS- Panduan pemecahan masalah kemampuan umum