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 terjebak dalam status creating
atau releasing
.
Jalankan perintah berikut untuk menampilkan komponen utama penginstalan hybrid Apigee:
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 sepenuhnya, masing-masing komponen ini akan berada dalam status running
.
Contoh:
NAME STATE AGE default running 5d6h
Jika penginstalan tidak berhasil, komponen mungkin terhenti dalam status creating
(atau
releasing
). Contoh:
NAME STATE AGE default creating 5d6h
Mengidentifikasi masalah
Untuk mengidentifikasi penyebab masalah, mulailah dengan menjelaskan setiap komponen. Komponen ini disusun sebagai berikut:
Setiap resource kustom ApigeeOrganization
direpresentasikan 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
direpresentasikan 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
Mulailah identifikasi masalah dengan menjelaskan komponen {i>root<i}. 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 ke dalam log pada tingkat ini, ulangi proses ini dengan apigeedeployments
yang diikuti dengan ReplicaSet
. Contoh:
kubectl get apigeedeployment -n NAMESPACE AD_NAME>
Jika apigeedeployments
dan ReplicaSet
tidak menampilkan error apa pun, 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 mengetahui error:
kubectl logs -n NAMESPACE POD_NAME
Menghapus komponen
Jika Anda melakukan kesalahan dengan salah satu komponen ini, cukup hapus komponen dan terapkan
apigeectl
untuk komponen tersebut. Misalnya, untuk menghapus lingkungan:
kubectl delete -n apigee apigeeenv HASHED_ENV_NAME
Tindak lanjuti dengan membuat lingkungan (setelah melakukan koreksi yang diperlukan):
apigeectl apply -f overrides.yaml –env=$ENV
Memeriksa pengontrol
Jika tidak ada pesan error yang jelas di pod, tetapi komponen belum ditransisikan ke
status running
, periksa apigee-controller
untuk melihat pesan error. apigee-controller
berjalan di namespace apigee-system
.
kubectl logs -n apigee-system $(k get pods -n apigee-system | sed -n '2p' | awk '{print $1}') | grep -i error
Hal ini memungkinkan pengguna mengetahui 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 standar berisi tiga pod atau lebih.
Jika status untuk Cassandra adalah creating
atau releasing
, status HARUS
direset. Masalah tertentu (seperti perubahan sandi Cassandra) dan masalah yang tidak terkait dengan jaringan
mungkin mengharuskan Anda menghapus komponen. Dalam kasus semacam ini, sangat mungkin Anda tidak dapat menghapus instance (misalnya kubectl delete apigeedatastore -n NAMESPACE default
). Menggunakan --force
atau --grace-period=0
juga tidak membantu.
Tujuan reset
adalah mengubah status komponen
(apigeedatastore
) dari creating
atau releasing
kembali ke
running
. Mengubah status dengan cara ini biasanya tidak akan menyelesaikan masalah pokok. Pada umumnya, komponen harus dihapus setelah reset.
Mencoba menghapus (tindakan ini tidak akan berhasil):
kubectl delete -n NAMESPACE apigeedatastore default
Biasanya perintah ini tidak diselesaikan. Gunakan Ctrl+C dan hentikan panggilan.
Reset status:
Di Jendela 1:
kubectl proxy
Di Jendela 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 finalr (Window 2):
kubectl edit -n NAMESPACE apigeedatastore default
Cari dua baris berikut dan hapus keduanya:
finalizers: - apigeedatastore.apigee.cloud.google.com
Skenario error umum
Konfigurasi proxy tidak tersedia dengan runtime
Error ini dapat terjadi melalui salah satu dari dua cara berikut:
runtime
tidak dalam statusready
.runtime
belum menerima versi terbaru API.
Mulai dengan pod
synchronizer
.Periksa log untuk
synchronizer
. Error umum adalah sebagai berikut:- Kurangnya konektivitas jaringan (ke
*.googleapi.com
) - Akses IAM salah (akun layanan tidak tersedia atau tidak disediakan oleh izin Pengelola Sinkronisasi)
- API setSyncAuthorization tidak dipanggil
- Kurangnya konektivitas jaringan (ke
Periksa pod
runtime
.Pemeriksaan log dari pod
runtime
akan menunjukkan alasanruntime
tidak memuat konfigurasi. Bidang kontrol mencoba mencegah sebagian besar kesalahan konfigurasi bahkan masuk ke bidang data. Jika validasi tidak memungkinkan atau tidak diterapkan dengan benar,runtime
akan gagal memuatnya.
"Tidak ada pod runtime" di bidang kontrol
Mulai dengan pod
synchronizer
.Periksa log untuk
synchronizer
. Error umum adalah sebagai berikut:- Kurangnya konektivitas jaringan (ke
*.googleapi.com
) - Akses IAM salah (akun layanan tidak tersedia atau tidak disediakan oleh izin Pengelola Sinkronisasi)
- API setSyncAuthorization tidak dipanggil. Mungkin konfigurasinya tidak pernah sampai ke bidang data.
- Kurangnya konektivitas jaringan (ke
Periksa pod
runtime
.Pemeriksaan log dari pod
runtime
akan menunjukkan alasanruntime
tidak memuat konfigurasi.Periksa pod
watcher
.Komponen ini adalah komponen
watcher
yang mengonfigurasi masuknya (routing) dan melaporkan status deployment masuk dan proxy ke bidang kontrol. Periksa log ini untuk mengetahui alasanwatcher
tidak melaporkan status. Alasan umumnya meliputi ketidakcocokan antara nama-nama dalam fileoverrides.yaml
dan 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
. Error umum adalah sebagai berikut:- Kurangnya konektivitas jaringan (ke
*.googleapi.com
) - Akses IAM salah (akun layanan tidak tersedia atau tidak disediakan oleh izin Pengelola Sinkronisasi)
- API setSyncAuthorization tidak dipanggil.
- Kurangnya konektivitas jaringan (ke
- Periksa pod
runtime
.
Pemeriksaan log dari podruntime
akan menunjukkan alasanruntime
tidak mengirim log debug ke UDCA. - Periksa pod UDCA.
Dengan memeriksa log dari UDCA, Anda akan mengetahui 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 minimum 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