Anda sedang melihat dokumentasi Apigee dan Apigee Hybrid.
Tidak ada dokumentasi
Apigee Edge yang setara untuk topik ini.
Dokumen ini menjelaskan cara mereset komponen hybrid Apigee saat komponen tersebut mengalami masalah di status
creating atau releasing.
Jalankan perintah berikut untuk mencantumkan komponen utama penginstalan Apigee Hybrid:
kubectl get crd | grep apigee
apigeeorganization (apigeeorganizations.apigee.cloud.google.com) apigeeenvironment (apigeeenvironments.apigee.cloud.google.com) apigeedatastore (apigeedatastores.apigee.cloud.google.com) apigeetelemetries (apigeetelemetries.apigee.cloud.google.com) apigeeredis (apigeeredis.apigee.cloud.google.com)
Jalankan perintah berikut untuk menampilkan status saat ini:
kubectl get apigeedatastore -n NAMESPACE
Jika berfungsi penuh, setiap komponen ini akan berada dalam status running.
Contoh:
NAME STATE AGE default running 5d6h
Jika penginstalan tidak berhasil, komponen mungkin macet dalam status creating (atau
releasing). Contoh:
NAME STATE AGE default creating 5d6h
Mengidentifikasi masalah
Untuk mengidentifikasi penyebab masalah, mulailah dengan menjelaskan setiap komponen. Komponen disusun sebagai berikut:
Setiap resource kustom ApigeeOrganization diwakili oleh hierarki berikut:
ApigeeOrganization/HASHED_VALUE ├─ApigeeDeployment/apigee-connect-agent-HASHED_VALUE│ ├─HorizontalPodAutoscaler/apigee-connect-agent-HASHED_VALUE-VER-xxxx │ ├─PodDisruptionBudget/apigee-connect-agent-HASHED_VALUE│ ├─ReplicaSet/apigee-connect-agent-HASHED_VALUE-VER-xxxx │ │ └─Pod/apigee-connect-agent-HASHED_VALUE-VER-xxxx ├─ApigeeDeployment/apigee-mart-HASHED_VALUE│ ├─HorizontalPodAutoscaler/apigee-mart-HASHED_VALUE-VER-xxxx │ ├─PodDisruptionBudget/apigee-mart-HASHED_VALUE│ ├─ReplicaSet/apigee-mart-HASHED_VALUE-VER-xxxx │ │ └─Pod/apigee-mart-HASHED_VALUE-VER-xxxx ├─ApigeeDeployment/apigee-watcher-HASHED_VALUE│ ├─HorizontalPodAutoscaler/apigee-watcher-HASHED_VALUE-VER-xxxx │ ├─PodDisruptionBudget/apigee-watcher-HASHED_VALUE│ ├─ReplicaSet/apigee-watcher-HASHED_VALUE-VER-xxxx │ │ └─Pod/apigee-watcher-HASHED_VALUE-VER-xxxx
Setiap resource kustom ApigeeEnvironment diwakili oleh hierarki berikut:
ApigeeEnvironment/HASHED_VALUE ├─ApigeeDeployment/apigee-runtime-HASHED_VALUE│ ├─HorizontalPodAutoscaler/apigee-runtime-HASHED_VALUE-VER-xxxx │ ├─PodDisruptionBudget/apigee-runtime-HASHED_VALUE│ ├─ReplicaSet/apigee-runtime-HASHED_VALUE-VER-xxxx │ │ └─Pod/apigee-runtime-HASHED_VALUE-VER-xxxx ├─ApigeeDeployment/apigee-synchronizer-HASHED_VALUE│ ├─HorizontalPodAutoscaler/apigee-synchronizer-HASHED_VALUE-VER-xxxx │ ├─PodDisruptionBudget/apigee-synchronizer-HASHED_VALUE│ ├─ReplicaSet/apigee-synchronizer-HASHED_VALUE-VER-xxxx │ │ └─Pod/apigee-synchronizer-HASHED_VALUE-VER-xxxx ├─ApigeeDeployment/apigee-udca-HASHED_VALUE│ ├─HorizontalPodAutoscaler/apigee-udca-HASHED_VALUE-VER-xxxx │ ├─PodDisruptionBudget/apigee-udca-HASHED_VALUE│ ├─ReplicaSet/apigee-udca-HASHED_VALUE-VER-xxxx │ │ └─Pod/apigee-udca-HASHED_VALUE-VER-xxxx
Mulai identifikasi masalah dengan mendeskripsikan komponen root. Contoh:
kubectl describe apigeeorganization -n NAMESPACE COMPONENT_NAME
Periksa apakah State komponen adalah running:
Replicas:
Available: 1
Ready: 1
Total: 1
Updated: 1
State: running
State: running
Events: <none>
Jika tidak ada peristiwa yang dicatat di tingkat ini, ulangi proses dengan
apigeedeployments diikuti dengan ReplicaSet. Contoh:
kubectl get apigeedeployment -n NAMESPACE AD_NAME>
Jika apigeedeployments dan ReplicaSet tidak menampilkan error, fokuslah
pada pod yang belum siap:
kubectl get pods -n NAMESPACE
NAME READY STATUS apigee-cassandra-default-0 1/1 Running apigee-connect-agent-apigee-b56a362-150rc2-42gax-dbrrn 1/1 Running apigee-logger-apigee-telemetry-s48kb 1/1 Running apigee-mart-apigee-b56a362-150rc2-bcizm-7jv6w0/2 Running apigee-runtime-apigee-test-0d59273-150rc2-a5mov-dfb290/1 Running
Dalam contoh ini, mart dan runtime belum siap. Periksa log pod
untuk menentukan error:
kubectl logs -n NAMESPACE POD_NAME
Menghapus komponen
Jika Anda melakukan kesalahan pada salah satu komponen ini, hapus komponen dan buat ulang lingkungan menggunakan Helm:
kubectl delete -n apigee apigeeenv HASHED_ENV_NAME
Lanjutkan dengan membuat lingkungan (setelah melakukan koreksi yang diperlukan):
helm upgrade ENV_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ --atomic \ -f OVERRIDES_FILE \ --dry-run=server
Pastikan untuk menyertakan semua setelan yang ditampilkan, termasuk --atomic
agar tindakan di-roll back jika gagal.
Instal diagram:
helm upgrade ENV_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ --atomic \ -f OVERRIDES_FILE
Periksa pengontrol
Jika tidak ada pesan error yang jelas di pod, tetapi komponen belum bertransisi ke status
running, periksa apigee-controller untuk mengetahui pesan error.
kubectl logs -n NAMESPACE $(k get pods -n NAMESPACE | sed -n '2p' | awk '{print $1}') | grep -i error
Hal ini memungkinkan pengguna melihat alasan pengontrol tidak dapat memproses permintaan
(create/delete/update, dll.).
Datastore Apigee
Apache Cassandra diimplementasikan sebagai StatefulSet. Setiap instance Cassandra berisi:
ApigeeDatastore/default├─Certificate/apigee-cassandra-default │ └─CertificateRequest/apigee-cassandra-default-wnd7s ├─Secret/config-cassandra-default ├─Service/apigee-cassandra-default │ ├─EndpointSlice/apigee-cassandra-default-7m9kx │ └─EndpointSlice/apigee-cassandra-default-gzqpr└─StatefulSet/apigee-cassandra-default├─ControllerRevision/apigee-cassandra-default-6976b77bd ├─ControllerRevision/apigee-cassandra-default-7fc76588cb└─Pod/apigee-cassandra-default-0
Contoh ini menunjukkan satu pod; namun, penginstalan produksi biasanya berisi tiga pod atau lebih.
Jika status Cassandra adalah creating atau releasing, status tersebut HARUS
direset. Masalah tertentu (seperti perubahan sandi Cassandra) dan masalah yang tidak terkait dengan jaringan
mungkin mengharuskan Anda menghapus komponen. Dalam kasus seperti itu, Anda mungkin tidak dapat menghapus
instance (yaitu, kubectl delete apigeedatastore -n NAMESPACE default). Penggunaan
--force atau --grace-period=0 juga tidak membantu.
Tujuan reset adalah mengubah status komponen
(apigeedatastore) dari creating atau releasing kembali menjadi
running. Mengubah status dengan cara ini biasanya tidak akan menyelesaikan masalah yang mendasarinya. Pada umumnya, komponen harus dihapus setelah reset.
Mencoba menghapus (tindakan ini tidak akan berhasil):
kubectl delete -n NAMESPACE apigeedatastore default
Perintah ini biasanya tidak selesai. Gunakan Ctrl+C dan akhiri panggilan.
Reset status:
Di Jendela 1:
kubectl proxy
Di Window 2:
curl -X PATCH -H "Accept: application/json" -H "Content-Type: application/json-patch+json" --data '[{"op": "replace", "path": "/status/nestedState", "value": ""},{"op": "replace", "path": "/status/state", "value": "running"}]' 'http://127.0.0.1:8001/apis/apigee.cloud.google.com/v1alpha1/namespaces/apigee/apigeedatastores/default/status'Hapus finalizer (Window 2):
kubectl edit -n NAMESPACE apigeedatastore default
Cari dua baris berikut dan hapus:
finalizers: - apigeedatastore.apigee.cloud.google.com
Skenario error umum
Konfigurasi proxy tidak tersedia dengan runtime
Error ini dapat muncul dengan salah satu dari dua cara berikut:
runtimetidak dalam statusready.runtimebelum menerima versi terbaru API.
Mulai dengan pod
synchronizer.Periksa log untuk
synchronizer. Kesalahan umum adalah sebagai berikut:- Tidak ada konektivitas jaringan (ke
*.googleapi.com) - Akses IAM salah (akun layanan tidak tersedia atau tidak diberikan oleh izin Pengelola Sinkronisasi)
- API setSyncAuthorization tidak dipanggil
- Tidak ada konektivitas jaringan (ke
Periksa pod
runtime.Memeriksa log dari pod
runtimeakan menunjukkan alasanruntimetidak memuat konfigurasi. Bidang kontrol mencoba mencegah sebagian besar kesalahan konfigurasi agar tidak masuk ke bidang data. Jika validasi tidak mungkin dilakukan atau tidak diterapkan dengan benar,runtimeakan gagal memuatnya.
"Tidak ada pod runtime" di bidang kontrol
Mulai dengan pod
synchronizer.Periksa log untuk mengetahui
synchronizer. Kesalahan umum adalah sebagai berikut:- Tidak ada konektivitas jaringan (ke
*.googleapi.com) - Akses IAM salah (akun layanan tidak tersedia atau tidak diberikan oleh izin Pengelola Sinkronisasi)
- API setSyncAuthorization tidak dipanggil. Mungkin konfigurasi tidak pernah sampai ke bidang data.
- Tidak ada konektivitas jaringan (ke
Periksa pod
runtime.Memeriksa log dari pod
runtimeakan menunjukkan alasanruntimetidak memuat konfigurasi.Periksa pod
watcher.Komponen
watcheryang mengonfigurasi ingress (perutean) dan melaporkan status deployment proxy dan ingress ke bidang kontrol. Periksa log ini untuk mengetahui alasanwatchertidak melaporkan status. Alasan umumnya mencakup ketidakcocokan antara nama dalam fileoverrides.yamldan bidang kontrol untuk nama lingkungan dan/atau nama grup lingkungan.
Sesi debug tidak muncul di bidang kontrol
Mulai dengan pod
synchronizer.Periksa log untuk
synchronizer. Kesalahan umum adalah sebagai berikut:- Tidak ada konektivitas jaringan (ke
*.googleapi.com) - Akses IAM salah (akun layanan tidak tersedia atau tidak diberikan oleh izin Pengelola Sinkronisasi)
- API setSyncAuthorization tidak dipanggil.
- Tidak ada konektivitas jaringan (ke
- Periksa pod
runtime.
Memeriksa log dari podruntimeakan menunjukkan alasanruntimetidak mengirim log debug ke UDCA. - Periksa pod UDCA.
Memeriksa log dari UDCA akan menunjukkan alasan UDCA tidak mengirimkan informasi sesi debug ke bidang kontrol.
Cassandra menampilkan respons cache besar
Pesan peringatan berikut menunjukkan bahwa Cassandra menerima permintaan baca atau tulis dengan payload yang lebih besar dan dapat diabaikan dengan aman karena nilai ambang batas peringatan ini ditetapkan ke nilai yang lebih rendah untuk menunjukkan ukuran payload respons.
Batch for [cache_ahg_gap_prod_hybrid.cache_map_keys_descriptor, cache_ahg_gap_prod_hybrid.cache_map_entry] is of size 79.465KiB, exceeding specified threshold of 50.000KiB by 29.465KiB