Dokumen ini menyajikan teknik pemecahan masalah untuk deployment Endpoints 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:
Memberikan otorisasi pada
gcloud:gcloud auth login gcloud auth application-default loginMembuat cluster. Anda dapat menggunakan perintah
gcloudberikut, atau membuat cluster menggunakan konsolGoogle Cloud .gcloud container clusters create CLUSTER_NAME
Ganti
CLUSTER_NAMEdengan 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 Endpoints > Services di Google Cloud console, lakukan langkah-langkah berikut:
- Periksa apakah semua layanan yang diperlukan telah diaktifkan.
- Periksa apakah semua izin yang diperlukan telah diberikan.
Mengakses log dari Extensible Service Proxy
Jika Anda perlu mengakses log Extensible Service Proxy (ESP) untuk mendiagnosis
masalah, gunakan kubectl sebagai berikut:
Dapatkan nama pod:
kubectl get pod NAME READY STATUS RESTARTS AGE esp-echo-174578890-x09gl 2/2 Running 2 21sNama pod adalah
esp-echo-174578890-x09gldan memiliki dua container:espdanecho.Untuk melihat log di pod, gunakan
kubectl logs:kubectl logs POD_NAME -c CONTAINER_NAME
Dengan
POD_NAMEdanCONTAINER_NAMEditampilkan dari perintahkubectl get podpada 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 di kolom --service dalam file manifes Deployment (disebut sebagai file deployment.yaml) cocok dengan nama di kolom host dalam dokumen OpenAPI (disebut sebagai file openapi.yaml).
Jika nama yang salah ada di file deployment.yaml:
Buka file
deployment.yamldan 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_NAMEagar cocok dengan nama di kolomhostpadaopenapi.yaml, lalu simpan filedeployment.yaml.Mulai layanan Kubernetes:
kubectl create -f deployment.yaml
Jika nama yang salah ada di file openapi.yaml:
Dapatkan nama layanan yang dikonfigurasi untuk digunakan oleh Endpoints.
Hapus layanan:
gcloud endpoints services delete SERVICE_NAME
Ganti
SERVICE_NAMEdengan nama dari langkah sebelumnya. Perlu waktu 30 hari agar layanan dihapus dari Google Cloud. Anda tidak dapat menggunakan kembali nama layanan selama waktu ini.Buka file
openapi.yaml, perbaiki nama di kolomhost, lalu simpan file.Deploy konfigurasi layanan yang diperbarui:
gcloud endpoints services deploy openapi.yamlTunggu hingga konfigurasi layanan berhasil di-deploy.
Mulai layanan Kubernetes:
kubectl create -f deployment.yaml
Memeriksa file konfigurasi
Gunakan
sshuntuk terhubung ke pod menggunakankubectl:kubectl exec -ti -c CONTAINER_NAME POD_NAME bash
Ganti
CONTAINER_NAMEdengan nama container Anda danPOD_NAME dengan nama pod Anda. Di direktori
etc/nginx/endpoints/, periksa apakah ada error dalam file konfigurasi berikut:nginx.conf- File konfigurasinginxdengan direktif ESPservice.jso- File konfigurasi layanan
Mengakses halaman status Endpoint
Jika Anda menyetel rollout_strategy ke managed saat memulai ESP,
dan Anda perlu mengetahui ID konfigurasi yang digunakan oleh instance
ESP, halaman status Endpoints memiliki informasi tersebut.
Untuk mengakses halaman status Endpoint:
Gunakan
sshuntuk terhubung ke pod menggunakankubectl:kubectl exec -ti -c CONTAINER_NAME POD_NAME bash
Ganti
CONTAINER_NAMEdengan nama container Anda danPOD_NAMEdengan nama pod Anda.Instal
curl.Masukkan:
curl http://localhost:8090/endpoints_statusTab tersebut menampilkan sesuatu yang mirip dengan berikut ini:
"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 dengan Endpoints,
lihat
Mendapatkan nama layanan dan ID konfigurasi.