Dokumen ini menyajikan teknik pemecahan masalah untuk deployment Endpoint di Google Kubernetes Engine (GKE) dan Kubernetes.
Gagal di kubectl create -f gke.yaml
Jika Anda melihat pesan error Failed in kubectl create -f gke.yaml
, lakukan langkah-langkah berikut:
Izinkan
gcloud
:gcloud auth login gcloud auth application-default login
Membuat cluster. Anda dapat menggunakan perintah
gcloud
berikut, atau membuat cluster menggunakan Konsol Google Cloud.gcloud container clusters create CLUSTER_NAME
Ganti
CLUSTER_NAME
dengan nama cluster Anda.Dapatkan kredensial untuk cluster Anda dan sediakan untuk
kubectl
:gcloud container clusters get-credentials CLUSTER_NAME
Metrik dan log endpoint tidak ditampilkan
Jika Anda berhasil mengirim permintaan ke API, tetapi tidak melihat metrik atau log di halaman Endpoint > Layanan di Konsol Google Cloud, lakukan langkah-langkah berikut:
- Pastikan semua layanan yang diperlukan sudah diaktifkan.
- Periksa apakah semua izin yang diperlukan diberikan.
Mengakses log dari Extensible Service Proxy
Jika Anda perlu mengakses log Extensible Service Proxy (ESP) untuk mendiagnosis
masalah, gunakan kubectl
seperti berikut:
Mendapatkan nama pod:
kubectl get pod NAME READY STATUS RESTARTS AGE esp-echo-174578890-x09gl 2/2 Running 2 21s
Nama pod adalah
esp-echo-174578890-x09gl
dan memiliki dua penampung:esp
danecho
.Untuk melihat log dalam pod, gunakan
kubectl logs
:kubectl logs POD_NAME -c CONTAINER_NAME
Dengan
POD_NAME
danCONTAINER_NAME
ditampilkan dari perintahkubectl get pod
, di langkah sebelumnya. Contoh:kubectl logs esp-echo-174578890-x09gl -c esp
Memverifikasi nama layanan
Jika Anda melihat pesan errorFetching service config failed
, pastikan nama layanan yang Anda tentukan dalam kolom --service
dalam file manifes Deployment (disebut file deployment.yaml
) cocok dengan nama di kolom host
dalam dokumen OpenAPI Anda (disebut file openapi.yaml
).
Jika nama yang salah dalam file deployment.yaml
:
Buka file
deployment.yaml
dan buka bagian yang dikonfigurasi untuk penampung ESP. Contoh:containers: - name: esp image: gcr.io/endpoints-release/endpoints-runtime:1 args: [ "--http_port=8081", "--backend=127.0.0.1:8080", "--service=SERVICE_NAME", "--rollout_strategy=managed" ]
Ubah
SERVICE_NAME
agar cocok dengan nama di kolomhost
dalamopenapi.yaml
, lalu simpan filedeployment.yaml
.Mulai layanan Kubernetes:
kubectl create -f deployment.yaml
Jika nama yang salah dalam file openapi.yaml
:
Dapatkan nama layanan yang dikonfigurasi untuk digunakan oleh Endpoint.
Hapus layanan:
gcloud endpoints services delete SERVICE_NAME
Ganti
SERVICE_NAME
dengan nama dari langkah sebelumnya. Perlu waktu 30 hari hingga layanan dihapus dari Google Cloud. Anda tidak dapat menggunakan kembali nama layanan selama periode ini.Buka file
openapi.yaml
dan perbaiki nama di kolomhost
, lalu simpan file tersebut.Deploy konfigurasi layanan yang telah diupdate:
gcloud endpoints services deploy openapi.yaml
Tunggu hingga konfigurasi layanan berhasil di-deploy.
Mulai layanan Kubernetes:
kubectl create -f deployment.yaml
Memeriksa file konfigurasi
Gunakan
ssh
untuk terhubung ke pod menggunakankubectl
:kubectl exec -ti -c CONTAINER_NAME POD_NAME bash
Ganti
CONTAINER_NAME
dengan nama container danPOD_NAME dengan nama pod Anda. Dalam direktori
etc/nginx/endpoints/
, periksa file konfigurasi berikut untuk menemukan error:nginx.conf
- File konfigurasinginx
dengan perintah ESPservice.jso
- File konfigurasi layanan
Mengakses halaman status Endpoint
Jika Anda menetapkan rollout_strategy
ke managed
saat memulai ESP,
dan Anda perlu mencari tahu ID konfigurasi yang digunakan instance
ESP, halaman status Endpoint akan memiliki informasi tersebut.
Untuk mengakses halaman status Endpoint:
Gunakan
ssh
untuk terhubung ke pod menggunakankubectl
:kubectl exec -ti -c CONTAINER_NAME POD_NAME bash
Ganti
CONTAINER_NAME
dengan nama penampung Anda danPOD_NAME
dengan nama pod Anda.Instal
curl
.Masukkan:
curl http://localhost:8090/endpoints_status
Kode ini akan menampilkan sesuatu yang mirip seperti berikut:
"serviceConfigRollouts": { "rolloutId": "2017-08-09r27", "percentages": { "2017-08-09r26": "100" } }
Nilai dalam rolloutId
adalah ID konfigurasi layanan yang
digunakan ESP. Untuk memastikan bahwa ESP menggunakan
konfigurasi yang sama seperti Endpoint,
lihat
Mendapatkan nama layanan dan ID konfigurasi.